00001 /*======================================================================= 00002 ** SGI_COPYRIGHT_TAG 00003 **=======================================================================*/ 00004 /*======================================================================= 00005 ** Author : SGI (MMM YYYY) 00006 **=======================================================================*/ 00007 00008 #ifndef _SO_HIGHLIGHT_ACTION_H_ 00009 #define _SO_HIGHLIGHT_ACTION_H_ 1 00010 00011 #include <Inventor/actions/SoGLRenderAction.h> 00012 #include <Inventor/nodes/SoMaterial.h> 00013 #include <Inventor/nodes/SoDepthOffset.h> 00014 #include <Inventor/lists/SoPathList.h> 00015 00016 class SbViewportRegion; 00017 class SoSelection; 00018 00094 SoShapeHighlightRenderAction : public SoGLRenderAction { 00095 SO_ACTION_HEADER(SoShapeHighlightRenderAction); 00096 public: 00097 SoShapeHighlightRenderAction(); 00098 SoShapeHighlightRenderAction(const SbViewportRegion &viewportRegion); 00099 00100 virtual ~SoShapeHighlightRenderAction(); 00101 using SoGLRenderAction::apply; 00102 virtual void apply(SoNode *node); 00103 00109 void setColor(const SbColor& c); 00110 00114 const SbColor& getColor() const; 00115 00116 static void initClass(); 00117 static void exitClass(); 00118 00119 private: 00120 00121 void constructorCommon(); 00122 00123 SoRef<SoPath> m_selPath; // path to SoSelection node 00124 SoPathList m_highlightedPaths; 00125 SbColor m_baseColor; 00126 bool m_dirty; 00127 static void changeCB(void* userData, SoSelection* sel); 00128 }; 00129 #endif // _SO_HIGHLIGHT_ACTION_H_ 00130