MeVisLabToolboxReference
|
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