arbeit
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

NodeWidget Class Reference

#include <NodeWidget.h>

Inheritance diagram for NodeWidget:

WidgetItem Renderable gutz::Counted GLUNodeWidget List of all members.

Detailed Description

a Node (point) also can keep track of edges it is connected to

Definition at line 33 of file NodeWidget.h.

Event & constraint mapper.

All widgets have the default event of: gutz::GUTZ_LEFT_MOUSE -> MOVE you may want to nuke this event if it isn't applicable: delEvent(gutz::GUTZ_LEFT_MOUSE); event keys are defined in: gutzKeyMouse.h

enum  WIGET_BEHAVIORS { NO_EVENT = 0, MOVE, ROTATE, WB_LAST }
void addEvent (const unsigned int key, const unsigned int event, const ConstraintSP cnst=new Constraint())
 addEvent. constraint defaults to "Free Move" constraint

unsigned int getEvent (const gutz::MouseEvent &me) const
 getEvent, returns the event if one is defined, returns NO_EVENT if the mouse is up works for both: gutz::MouseEvent and gutz::MouseMoveEvent This function is usefull in implementation, externally use getEvent(unsigned int).

unsigned int getEvent (unsigned int key) const
 what is the event assigned to a key

void delEvent (const unsigned int key)
 delete an event from the event map

void nukeEvents ()
 delete all events from the event map

gutz::EventKeyMap getEvents () const
void setEvents (const gutz::EventKeyMap &eventMap)
ConstraintMap getConstraints () const
void setConstraints (const ConstraintMap &cnstMap)

Clones

WidgetItemclone () const
 WidgetItem::clone definition.

virtual NodeWidgetcloneNode () const=0
 Pure virtual cloneNode(), must be defined in (all) concrete NodeWidget classes.


set/get the position of this object.

also updates calls pointChanged

virtual void setPoint (const gutz::vec3f &wpos)
 set point, WORLD space

gutz::vec3f getPoint () const
 get point, WORLD space

virtual void setPointLocal (const gutz::vec3f &lpos)
 set point, LOCAL space

gutz::vec3f getPointLocal () const
 get point, LOCAL space


set/get the diameter of the node

virtual void setRad (float r)
float getRad () const

Events duplicated from <Renderable>.

These are duplicated to insure/ease framework issues, notice that mouse and move handle the "check with parent" and mouseDef(), moveDef() are what actually implement the behavior.

void draw (const gutz::RenderEvent &r)
 main draw event...

virtual void drawDef (const gutz::RenderEvent &r)=0
 PURE VIRTUAL draw defintion, must be implemented by concrete base class, be sure to apply the matrix associated with this widget (_mat).

bool mouse (const gutz::MouseEvent &me)
 a mouse event...

virtual bool mouseDef (const gutz::MouseEvent &me)
 override this one to implement mouse behavior

virtual bool mouseChild (WidgetItem *child, const gutz::MouseEvent &me)
 a child was moused, called before their mouseDef.

bool move (const gutz::MouseMoveEvent &mme)
 a move event, checks with parent, then calls moveDef().

virtual bool moveDef (const gutz::MouseMoveEvent &mme)
 override this one to implement move behavior

virtual bool moveChild (WidgetItem *child, const gutz::MouseMoveEvent &mme)
 a child wants to be moved.


Parent/Child management

virtual void addChild (WidgetItem *child)
 a child was added

virtual void delChild (WidgetItem *child)
 a child was deleted/ changed parent

virtual void setParent (WidgetItem *parent)
 a (new?) parent now owns you :)


Some appearance management

ColorWStateSP getColor () const
void setColor (ColorWState *const color)

Draw on/off.

bool isOn () const
void setOn (bool yes)

Delete.

Does this object need to be removed from a render list? This means that the object is finished and anyone with a smart pointer to it needs to delete the smart pointer and stop using the renderable.

bool needsDelete () const
void setDelete (bool yes)

Interaction Functions

Return true if the event was for you.

By default interaction is forwarded to your protected manipulator (_manip). To use it just apply it in your draw function. However, if you don't add any events or call setManipEventsDefault(), you won't have any interaction. Override these functions in your base class to implement custom behaviors.

virtual bool key (unsigned char k, int x, int y)

Selected

Is this object currently selected?

virtual void setSelected (bool yes)
bool isSelected () const

Manipulator Interface

gutz::ManipgetManip () const
void setManip (gutz::Manip *const m)
void setManipEventsDefault ()
 you have to call this to enable default interaction, OR customize the manipulators events yourself.


Signals

gutz::Signal< const gutz::vec3f & > pointChanged
 signal: pointChanged(const vec3f &pt), sends WORLD space position

gutz::Signal< float > radChanged
 signal: radChanged(float r)


Public Types

typedef gutz::SmartPtr< WidgetItemWidgetItemSP
typedef gutz::vec2f Point2
 2D point

typedef gutz::arrayOwn1< Point2Point2Array
 2D point array

typedef gutz::vec3f Point3
 3D point

typedef gutz::arrayOwn1< Point3Point3Array
 3D point array


Public Member Functions

virtual ~NodeWidget ()
NodeWidgetoperator= (const NodeWidget &nw)
 assingment operator, just copies position

virtual void setChanged ()
 object changed

virtual Point2Array getValidArea () const
 polygonalItem interface stuff

virtual void applyXform (gutz::mat4f xf)
 transform the widget


Public Attributes

 HAS_SLOTS

Protected Member Functions

 NodeWidget (gutz::vec3f pos, float rad, WidgetItem *parent=0)
 Construct.

 NodeWidget (const NodeWidget &nw)
virtual void _invalidate ()
 called before widget changes, see also _update() some window systems need these calls before and after something changes, respectively, you'll have to specify them in your concrete class, if you need them.

virtual void _update ()
 called after widget is changed

virtual void appearanceChanged ()
 called if something about how it looks changes, does not include changes to the transform, just things like radius and color.

virtual void _incCount ()
 gutz::Counted interface, increment reference count by one.

virtual void _decCount ()
 gutz::Counted interface, decrement reference count by one.

virtual int _getCount () const
 gutz::Counted interface, get the current reference count.


Protected Attributes

float _rad
bool _on
 is this renderable currently "render-able"?

bool _selected
 is this renderable selected?

bool _deleteMe
 does this object need to be deleted?

gutz::ManipSP _manip
 You get a manipulator free, no charge.


Friends

class SmartPtr
class SmartPtrRef


Member Typedef Documentation

typedef gutz::vec2f WidgetItem::Point2 [inherited]
 

2D point

Definition at line 124 of file WidgetBase.h.

Referenced by WidgetItem::getValidArea(), getValidArea(), and EdgeWidget::getValidArea().

typedef gutz::arrayOwn1<Point2> WidgetItem::Point2Array [inherited]
 

2D point array

Definition at line 125 of file WidgetBase.h.

Referenced by WidgetItem::getValidArea(), getValidArea(), and EdgeWidget::getValidArea().

typedef gutz::vec3f WidgetItem::Point3 [inherited]
 

3D point

Definition at line 127 of file WidgetBase.h.

Referenced by FrameWidget::setDims(), FrameWidget::setHeight(), and FrameWidget::setWidth().

typedef gutz::arrayOwn1<Point3> WidgetItem::Point3Array [inherited]
 

3D point array

Definition at line 128 of file WidgetBase.h.

typedef gutz::SmartPtr<WidgetItem> WidgetItem::WidgetItemSP [inherited]
 

Definition at line 122 of file WidgetBase.h.


Member Enumeration Documentation

enum WidgetItem::WIGET_BEHAVIORS [inherited]
 

Enumeration values:
NO_EVENT  widget does nothing (by itself, but maybe parent does)
MOVE  move according to world space deltas (default left mouse)
ROTATE  rotate around center of widget
WB_LAST  sub classes add events starting here (not an event)

Definition at line 313 of file WidgetBase.h.


Constructor & Destructor Documentation

virtual NodeWidget::~NodeWidget  )  [inline, virtual]
 

Definition at line 36 of file NodeWidget.h.

NodeWidget::NodeWidget gutz::vec3f  pos,
float  rad,
WidgetItem parent = 0
[protected]
 

Construct.

Definition at line 34 of file NodeWidget.cpp.

References Renderable::_manip.

NodeWidget::NodeWidget const NodeWidget nw  )  [inline, protected]
 

Definition at line 127 of file NodeWidget.h.

References _rad.


Member Function Documentation

virtual void gutz::Counted::_decCount  )  [inline, protected, virtual, inherited]
 

gutz::Counted interface, decrement reference count by one.

Not generaly used by subclasses, mostly for collaboration with gutz::SmartPtr. Sometimes you need to call this though, see the documentation for gutz::SmartPtr

Definition at line 54 of file smartptr.h.

Referenced by TFImage::clear(), NrroImage::fBlendOverRGBA(), and Nrro::updateMinMax().

virtual int gutz::Counted::_getCount  )  const [inline, protected, virtual, inherited]
 

gutz::Counted interface, get the current reference count.

Not generaly used by subclasses, mostly for collaboration with gutz::SmartPtr.

Definition at line 58 of file smartptr.h.

virtual void gutz::Counted::_incCount  )  [inline, protected, virtual, inherited]
 

gutz::Counted interface, increment reference count by one.

Not generaly used by subclasses, mostly for collaboration with gutz::SmartPtr. Sometimes you need to call this though, see the documentation for gutz::SmartPtr

Definition at line 48 of file smartptr.h.

Referenced by TFImage::clear(), NrroImage::fBlendOverRGBA(), and Nrro::updateMinMax().

virtual void WidgetItem::_invalidate  )  [inline, protected, virtual, inherited]
 

called before widget changes, see also _update() some window systems need these calls before and after something changes, respectively, you'll have to specify them in your concrete class, if you need them.

They are quite usefull, if you need to update when a widget changes, but you don't (nescessarily) care what changed

Definition at line 380 of file WidgetBase.h.

Referenced by FrameWidget::setCenter(), FrameWidget::setDims(), EdgeWidget::setEndPoint(), FrameWidget::setHeight(), SurfaceWidget::setPoint(), setPointLocal(), EdgeWidget::setStartPoint(), and FrameWidget::setWidth().

virtual void WidgetItem::_update  )  [inline, protected, virtual, inherited]
 

called after widget is changed

Definition at line 383 of file WidgetBase.h.

Referenced by FrameWidget::setCenter(), FrameWidget::setDims(), EdgeWidget::setEndPoint(), FrameWidget::setHeight(), SurfaceWidget::setPoint(), setPointLocal(), EdgeWidget::setStartPoint(), and FrameWidget::setWidth().

virtual void WidgetItem::addChild WidgetItem child  )  [inline, virtual, inherited]
 

a child was added

Definition at line 278 of file WidgetBase.h.

void WidgetItem::addEvent const unsigned int  key,
const unsigned int  event,
const ConstraintSP  cnst = new Constraint()
[inline, inherited]
 

addEvent. constraint defaults to "Free Move" constraint

Definition at line 321 of file WidgetBase.h.

References _constraintMap, and _eventMap.

Referenced by SurfaceWidget::SurfaceWidget(), and WidgetItem::WidgetItem().

virtual void WidgetItem::appearanceChanged  )  [inline, protected, virtual, inherited]
 

called if something about how it looks changes, does not include changes to the transform, just things like radius and color.

Reimplemented in GLUNodeWidget, and GLUEdgeWidget.

Definition at line 387 of file WidgetBase.h.

Referenced by EdgeWidget::setEndPoint(), setRad(), EdgeWidget::setRad(), and EdgeWidget::setStartPoint().

virtual void NodeWidget::applyXform gutz::mat4f  xf  )  [inline, virtual]
 

transform the widget

Implements WidgetItem.

Definition at line 120 of file NodeWidget.h.

References setPoint().

WidgetItem* NodeWidget::clone void   )  const [inline, virtual]
 

WidgetItem::clone definition.

Implements WidgetItem.

Definition at line 54 of file NodeWidget.h.

References cloneNode().

virtual NodeWidget* NodeWidget::cloneNode  )  const [pure virtual]
 

Pure virtual cloneNode(), must be defined in (all) concrete NodeWidget classes.

Implemented in GLUNodeWidget.

Referenced by clone(), FrameWidget::configureFrame(), and PolygonWidget::setPoints().

virtual void WidgetItem::delChild WidgetItem child  )  [inline, virtual, inherited]
 

a child was deleted/ changed parent

Reimplemented in FrameWidget.

Definition at line 280 of file WidgetBase.h.

void WidgetItem::delEvent const unsigned int  key  )  [inline, inherited]
 

delete an event from the event map

Definition at line 344 of file WidgetBase.h.

References _constraintMap, and _eventMap.

void WidgetItem::draw const gutz::RenderEvent r  )  [inline, virtual, inherited]
 

main draw event...

Framework only, do not override, Might need to add functionality here later.

Implements Renderable.

Definition at line 209 of file WidgetBase.h.

References WidgetItem::drawDef(), and r.

virtual void WidgetItem::drawDef const gutz::RenderEvent r  )  [pure virtual, inherited]
 

PURE VIRTUAL draw defintion, must be implemented by concrete base class, be sure to apply the matrix associated with this widget (_mat).

Implemented in GLTFSurfaceWidget, TFViewWidget, GLSurfaceWidget, GLUNodeWidget, GLUEdgeWidget, FrameWidget, PolygonWidget, and SurfaceContentWidget.

Referenced by WidgetItem::draw().

ColorWStateSP WidgetItem::getColor  )  const [inline, inherited]
 

Definition at line 366 of file WidgetBase.h.

References _color.

ConstraintMap WidgetItem::getConstraints  )  const [inline, inherited]
 

Definition at line 357 of file WidgetBase.h.

References _constraintMap, and ConstraintMap.

unsigned int WidgetItem::getEvent unsigned int  key  )  const [inline, inherited]
 

what is the event assigned to a key

Definition at line 338 of file WidgetBase.h.

References _eventMap.

unsigned int WidgetItem::getEvent const gutz::MouseEvent me  )  const [inline, inherited]
 

getEvent, returns the event if one is defined, returns NO_EVENT if the mouse is up works for both: gutz::MouseEvent and gutz::MouseMoveEvent This function is usefull in implementation, externally use getEvent(unsigned int).

Definition at line 331 of file WidgetBase.h.

References _eventMap, gutz::MouseEvent::getButton(), gutz::MouseEvent::isButtonDown(), and WidgetItem::NO_EVENT.

Referenced by WidgetItem::mouseDef(), SurfaceWidget::mouseDef(), and SurfaceWidget::moveDef().

gutz::EventKeyMap WidgetItem::getEvents  )  const [inline, inherited]
 

Definition at line 353 of file WidgetBase.h.

References _eventMap.

gutz::Manip* Renderable::getManip  )  const [inline, inherited]
 

Definition at line 184 of file Renderable.h.

References Renderable::_manip.

gutz::vec3f NodeWidget::getPoint  )  const [inline]
 

get point, WORLD space

Definition at line 78 of file NodeWidget.h.

References Renderable::_manip.

Referenced by getValidArea(), operator=(), setChanged(), EdgeWidget::setEndNode(), setPointLocal(), and EdgeWidget::setStartNode().

gutz::vec3f NodeWidget::getPointLocal  )  const [inline]
 

get point, LOCAL space

Definition at line 82 of file NodeWidget.h.

References Renderable::_manip.

Referenced by setPointLocal().

float NodeWidget::getRad  )  const [inline]
 

Definition at line 91 of file NodeWidget.h.

References _rad.

Referenced by GLUNodeWidget::drawGLDef(), and operator=().

WidgetItem::Point2Array NodeWidget::getValidArea  )  const [virtual]
 

polygonalItem interface stuff

Reimplemented from WidgetItem.

Definition at line 94 of file NodeWidget.cpp.

References _rad, getPoint(), WidgetItem::Point2, WidgetItem::Point2Array, and gutz::vec3f.

bool Renderable::isOn  )  const [inline, inherited]
 

Definition at line 141 of file Renderable.h.

References Renderable::_on.

bool Renderable::isSelected  )  const [inline, inherited]
 

Definition at line 177 of file Renderable.h.

References Renderable::_selected.

virtual bool Renderable::key unsigned char  k,
int  x,
int  y
[inline, virtual, inherited]
 

Definition at line 166 of file Renderable.h.

bool WidgetItem::mouse const gutz::MouseEvent me  )  [inline, virtual, inherited]
 

a mouse event...

checks with parent, then calls mouseDef()
Framework only, do not override.

Reimplemented from Renderable.

Definition at line 220 of file WidgetBase.h.

References WidgetItem::mouseDef().

virtual bool WidgetItem::mouseChild WidgetItem child,
const gutz::MouseEvent me
[inline, virtual, inherited]
 

a child was moused, called before their mouseDef.

return true if & only if parent will be handling the mouse event
return false if the child handles it's own mouse event

Reimplemented in TFViewWidget, FrameWidget, and SurfaceContentWidget.

Definition at line 238 of file WidgetBase.h.

virtual bool WidgetItem::mouseDef const gutz::MouseEvent me  )  [inline, virtual, inherited]
 

override this one to implement mouse behavior

Reimplemented in SurfaceWidget.

Definition at line 227 of file WidgetBase.h.

References Renderable::_manip, WidgetItem::getEvent(), and WidgetItem::NO_EVENT.

Referenced by WidgetItem::mouse(), and FrameWidget::mouseChild().

bool WidgetItem::move const gutz::MouseMoveEvent mme  )  [inline, virtual, inherited]
 

a move event, checks with parent, then calls moveDef().

Framework only, do not override.

Reimplemented from Renderable.

Definition at line 245 of file WidgetBase.h.

References WidgetItem::moveDef().

virtual bool WidgetItem::moveChild WidgetItem child,
const gutz::MouseMoveEvent mme
[inline, virtual, inherited]
 

a child wants to be moved.

if true, child does nothing (parent moves them) if false, child moves self

Reimplemented in TFViewWidget, FrameWidget, and SurfaceContentWidget.

Definition at line 267 of file WidgetBase.h.

virtual bool WidgetItem::moveDef const gutz::MouseMoveEvent mme  )  [inline, virtual, inherited]
 

override this one to implement move behavior

Reimplemented in SurfaceWidget.

Definition at line 253 of file WidgetBase.h.

References Renderable::_manip, and WidgetItem::setChanged().

Referenced by WidgetItem::move(), and FrameWidget::moveChild().

bool Renderable::needsDelete  )  const [inline, inherited]
 

Definition at line 152 of file Renderable.h.

References Renderable::_deleteMe.

void WidgetItem::nukeEvents  )  [inline, inherited]
 

delete all events from the event map

Definition at line 347 of file WidgetBase.h.

References _constraintMap, _eventMap, and ConstraintMap.

NodeWidget& NodeWidget::operator= const NodeWidget nw  )  [inline]
 

assingment operator, just copies position

Definition at line 39 of file NodeWidget.h.

References getPoint(), getRad(), Renderable::operator=(), setPoint(), and setRad().

Referenced by GLUNodeWidget::operator=().

virtual void NodeWidget::setChanged  )  [inline, virtual]
 

object changed

Implements WidgetItem.

Definition at line 65 of file NodeWidget.h.

References getPoint(), and pointChanged.

void WidgetItem::setColor ColorWState *const  color  )  [inline, inherited]
 

Definition at line 367 of file WidgetBase.h.

References _color.

Referenced by GLUEdgeWidget::GLUEdgeWidget(), and GLUNodeWidget::GLUNodeWidget().

void WidgetItem::setConstraints const ConstraintMap cnstMap  )  [inline, inherited]
 

Definition at line 358 of file WidgetBase.h.

References _constraintMap.

void Renderable::setDelete bool  yes  )  [inline, inherited]
 

Definition at line 153 of file Renderable.h.

References Renderable::_deleteMe, and Renderable::setOn().

void WidgetItem::setEvents const gutz::EventKeyMap eventMap  )  [inline, inherited]
 

Definition at line 354 of file WidgetBase.h.

References _eventMap.

void Renderable::setManip gutz::Manip *const  m  )  [inline, inherited]
 

Definition at line 185 of file Renderable.h.

References Renderable::_manip.

void Renderable::setManipEventsDefault  )  [inline, inherited]
 

you have to call this to enable default interaction, OR customize the manipulators events yourself.

Definition at line 188 of file Renderable.h.

References Renderable::_manip.

void Renderable::setOn bool  yes  )  [inline, inherited]
 

Definition at line 142 of file Renderable.h.

References Renderable::_on.

Referenced by Renderable::setDelete().

virtual void WidgetItem::setParent WidgetItem parent  )  [inline, virtual, inherited]
 

a (new?) parent now owns you :)

Definition at line 283 of file WidgetBase.h.

References Renderable::_manip.

Referenced by SurfaceContentWidget::addContent(), SurfaceContentWidget::delContent(), and PolygonWidget::setPoints().

void NodeWidget::setPoint const gutz::vec3f wpos  )  [virtual]
 

set point, WORLD space

Definition at line 42 of file NodeWidget.cpp.

References Renderable::_manip, and setPointLocal().

Referenced by applyXform(), operator=(), EdgeWidget::setEndNode(), and EdgeWidget::setStartNode().

void NodeWidget::setPointLocal const gutz::vec3f lpos  )  [virtual]
 

set point, LOCAL space

this is key, don't want infinite updates!!!! if we don't move, we don't update...

Definition at line 50 of file NodeWidget.cpp.

References WidgetItem::_invalidate(), Renderable::_manip, WidgetItem::_update(), getPoint(), getPointLocal(), and pointChanged.

Referenced by setPoint().

virtual void NodeWidget::setRad float  r  )  [inline, virtual]
 

Definition at line 89 of file NodeWidget.h.

References _rad, WidgetItem::appearanceChanged(), r, and radChanged.

Referenced by operator=().

virtual void Renderable::setSelected bool  yes  )  [inline, virtual, inherited]
 

Definition at line 176 of file Renderable.h.

References Renderable::_selected.


Friends And Related Function Documentation

friend class SmartPtr [friend, inherited]
 

Definition at line 40 of file smartptr.h.

Referenced by Nrro::NrroIter< T >::NrroIter().

friend class SmartPtrRef [friend, inherited]
 

Definition at line 41 of file smartptr.h.


Member Data Documentation

bool Renderable::_deleteMe [protected, inherited]
 

does this object need to be deleted?

Definition at line 237 of file Renderable.h.

Referenced by Renderable::needsDelete(), Renderable::Renderable(), and Renderable::setDelete().

gutz::ManipSP Renderable::_manip [protected, inherited]
 

You get a manipulator free, no charge.

Definition at line 240 of file Renderable.h.

Referenced by FrameWidget::configureFrame(), GLUEdgeWidget::drawDef(), GLUNodeWidget::drawDef(), GLSurfaceWidget::drawQuad(), EdgeWidget::getEndPoint(), Renderable::getManip(), SurfaceWidget::getPoint(), getPoint(), getPointLocal(), EdgeWidget::getStartPoint(), SurfaceWidget::intersectPlane(), Renderable::mouse(), FrameWidget::mouseChild(), WidgetItem::mouseDef(), Renderable::move(), FrameWidget::moveChild(), WidgetItem::moveDef(), NodeWidget(), Renderable::operator=(), Renderable::Renderable(), EdgeWidget::setEndPoint(), Renderable::setManip(), Renderable::setManipEventsDefault(), WidgetItem::setParent(), SurfaceWidget::setPoint(), setPoint(), setPointLocal(), EdgeWidget::setStartPoint(), and FrameWidget::updateManip().

bool Renderable::_on [protected, inherited]
 

is this renderable currently "render-able"?

Definition at line 235 of file Renderable.h.

Referenced by Renderable::isOn(), Renderable::operator=(), Renderable::Renderable(), and Renderable::setOn().

float NodeWidget::_rad [protected]
 

Definition at line 132 of file NodeWidget.h.

Referenced by getRad(), getValidArea(), NodeWidget(), and setRad().

bool Renderable::_selected [protected, inherited]
 

is this renderable selected?

Definition at line 236 of file Renderable.h.

Referenced by Renderable::isSelected(), Renderable::Renderable(), and Renderable::setSelected().

NodeWidget::HAS_SLOTS
 

Definition at line 47 of file NodeWidget.h.

gutz::Signal<const gutz::vec3f &> NodeWidget::pointChanged
 

signal: pointChanged(const vec3f &pt), sends WORLD space position

Definition at line 100 of file NodeWidget.h.

Referenced by setChanged(), EdgeWidget::setEndNode(), setPointLocal(), and EdgeWidget::setStartNode().

gutz::Signal<float> NodeWidget::radChanged
 

signal: radChanged(float r)

Definition at line 103 of file NodeWidget.h.

Referenced by setRad().


The documentation for this class was generated from the following files:
Send questions, comments, and bug reports to:
jmk