MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoCSO/SoView2DCSOEditor/SoView2DCSOExtensibleEditor/extensions/SoCSOPointEditor/SoCSOPointEditor.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00004 
00009 //----------------------------------------------------------------------------------
00010 
00011 
00012 #ifndef __SoCSOPointEditor_H
00013 #define __SoCSOPointEditor_H
00014 
00015 #include <SoView2DCSOEditor/SoView2DCSOExtensibleEditor/SoCSOCreatorEditorExtension.h>
00016 
00018 
00020 class SOCSO_EXPORT SoCSOPointEditor : public SoCSOCreatorEditorExtension
00021 {
00022   SO_NODE_HEADER(SoCSOPointEditor);
00023 
00024 public:
00025 
00027   SoCSOPointEditor();
00028 
00030   SoSFEnum drawingMode;
00031 
00033   virtual void draw(const CSODrawCSOInfos& csoInfos, const CSODrawView2DInfos& view2DInfos, const CSODrawSliceInformation& drawSliceInfo, SoView2DCSOExtensibleEditor* editor);  
00034 
00036   static void initClass();
00037 
00038 
00039   virtual void createStartPressAt(const SoPointerPosition& pos);
00040   virtual void createDragMoveTo(const SoPointerPosition& pos);
00041   virtual bool createEndPress(int clickCount);
00042 
00043   virtual void selectAndMoveStartPressAt(const SoPointerPosition& pos);
00044   virtual void selectAndMoveDragMoveTo(const SoPointerPosition& pos);
00045   virtual SoPointingAction* selectAndMoveEndPress(int clickCount);
00046 
00047   virtual int cursorShape() const { return SoViewerProxy::CROSS_POINT_CURSOR; }
00048 
00049   enum PointDrawingMode {
00050     POINT_DRAWING_MODE_POINT     = 0, 
00051     POINT_DRAWING_MODE_CROSSHAIR = 1  
00052   };
00053 
00054 protected:
00055 
00056 private:
00057 
00058   void renderCrosshair(const CSODrawCSOInfos& csoInfos, const CSODrawView2DInfos& view2DInfos, const CSODrawSliceInformation& drawSliceInfo);
00059   void renderCrosshair(int deviceXCenter, int deviceYCenter, const SbColor& color, float alpha) const;
00060   void glRenderOpaqueLine(int deviceXStart, int deviceYStart, int deviceXEnd, int deviceYEnd, const SbColor& color, float alpha) const;
00061   void glRenderFadingOutLine(int deviceXStart, int deviceYStart, int deviceXEnd, int deviceYEnd, const SbColor& color, float alpha) const;
00062 
00063   ml::CSO* _newCSO;
00064   SbVec3f  _startPosition;
00065 };
00066 
00068 
00069 #endif // __SoCSOPointEditor_H