MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoCSO/SoView2DCSOEditor/SoView2DCSOExtensibleEditor/extensions/SoCSODistanceLineEditor/SoCSODistanceLineEditor.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00004 
00009 //----------------------------------------------------------------------------------
00010 
00011 
00012 #ifndef __SoCSODistanceLineEditor_H
00013 #define __SoCSODistanceLineEditor_H
00014 
00015 #include <SoView2DCSOEditor/SoView2DCSOExtensibleEditor/SoCSOCreatorEditorExtension.h>
00016 
00018 
00020 class SOCSO_EXPORT SoCSODistanceLineEditor : public SoCSOCreatorEditorExtension
00021 {
00022   SO_NODE_HEADER(SoCSODistanceLineEditor);
00023 
00024 public:
00025 
00027   SoCSODistanceLineEditor();
00028 
00030   SoSFBool renderArrowHeadAtStart;
00032   SoSFBool renderArrowHeadAtEnd;
00033 
00035   virtual void draw(const CSODrawCSOInfos& csoInfos, const CSODrawView2DInfos& view2DInfos, const CSODrawSliceInformation& drawSliceInfo, SoView2DCSOExtensibleEditor* editor);  
00036 
00038   static void initClass();
00039 
00040   virtual void createStartPressAt(const SoPointerPosition& pos);
00041 
00042   void createNewCSO( const SoPointerPosition& pos );
00043   virtual void createDragMoveTo(const SoPointerPosition& pos);
00044   virtual bool createEndPress(int clickCount);
00045 
00046   virtual void selectAndMoveStartPressAt(const SoPointerPosition& pos);
00047   virtual void selectAndMoveDragMoveTo(const SoPointerPosition& pos);
00048   virtual SoPointingAction* selectAndMoveEndPress(int clickCount);
00049 
00050   virtual int cursorShape() const { return SoViewerProxy::CROSS_LINE_CURSOR; }
00051 
00052 protected:
00053 
00054 private:
00055 
00056   void computeDeviceShadowOffset(const CSODrawCSOInfos& csoInfos, const CSODrawView2DInfos& view2DInfos, SbVec2f& shadowOffsetDevice);
00057   
00058   void drawArrowHeads(const CSODrawCSOInfos& csoInfos, const CSODrawView2DInfos& view2DInfos, const SbVec2f& shadowOffsetDevice);
00059   void drawVectorArrowHead(const SbVec2f& target, const SbVec2f& origin);
00060 
00061   unsigned short getStipplePattern(ml::CSO* cso, bool isAboveTopPlane, bool isAboveBottomPlane);
00062 
00063   ml::CSO* _newCSO;
00064   SbVec3f  _startPosition;
00065 };
00066 
00068 
00069 #endif // __SoCSODistanceLineEditor_H