MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00004 00010 //---------------------------------------------------------------------------------- 00011 00012 #ifndef __SoView2DMagnifyController_H 00013 #define __SoView2DMagnifyController_H 00014 00015 #include "XVEnterScope.h" 00016 #include <Inventor/nodes/SoSubNode.h> 00017 #ifndef __SoView2DExtension_H 00018 #include <SoView2DExtension.h> 00019 #endif 00020 #ifndef __View2DSlice_H 00021 #include <View2DSlice.h> 00022 #endif 00023 #ifndef __View2DSliceList_H 00024 #include <View2DSliceList.h> 00025 #endif 00026 // include used fields 00027 #include <Inventor/fields/SoSFFloat.h> 00028 #include <Inventor/fields/SoSFVec2f.h> 00029 #include <Inventor/fields/SoSFInt32.h> 00030 #include <Inventor/fields/SoSFVec3f.h> 00031 #include <Inventor/fields/SoSFTrigger.h> 00032 #include <Inventor/sensors/SoFieldSensor.h> 00033 #ifndef __SoSFMLImage_H 00034 #include <SoSFMLImage.h> 00035 #endif 00036 #include "XVLeaveScope.h" 00037 00038 00040 class SOVIEW2D_API SoView2DMagnifyController : public SoView2DExtension 00041 { 00043 SO_NODE_HEADER(SoView2DMagnifyController); 00044 00045 public: 00047 SoView2DMagnifyController(); 00048 00050 static void initClass(); 00051 00053 00054 SoSFVec2f windowOffsetInPixels; 00055 00056 SoSFVec2f windowStartPosition; 00057 00058 SoSFVec2f windowCurrentPosition; 00059 00060 SoSFVec2f translationScale; 00061 00062 SoSFFloat magnify; 00063 00064 SoSFMLImage inImage; 00065 00066 SoSFBool inplace; 00067 00068 SoSFVec2f inplaceWindowSize; 00069 00070 // out 00071 00072 SoSFInt32 startSlice; 00073 00074 SoSFVec2f sliceOrigin; 00075 00076 SoSFFloat pixelPerMm; 00077 00078 SoSFVec3f worldStartPosition; 00079 00080 SoSFTrigger showWindow; 00081 00082 SoSFTrigger closeWindow; 00083 00084 SoSFVec2f lowerLeft; 00085 00086 SoSFVec2f upperRight; 00087 00089 00090 00092 virtual bool evalEvent(SoView2D *view2d, View2DSliceList *list, 00093 View2DEvent* event, View2DEventPhase phase); 00094 00096 virtual void draw(View2DSliceList *list, View2DSlice *slice, int z); 00097 00098 protected: 00100 virtual ~SoView2DMagnifyController(); 00101 00103 void windowCurrentPositionChanged(); 00105 static void windowCurrentPositionChangedCB(void *data, SoSensor* sens); 00106 00107 void updateInplace(View2DSliceList *list, 00108 View2DEvent* ec); 00109 00110 private: 00111 SoFieldSensor* _windowCurrentPositionSensor; 00112 00113 float _vx,_vy; 00114 00117 SbVec3f _lastSelectedPos; 00118 }; 00119 00120 #endif // __SOVIEW2DMAGNIFYCONTROLLER_H 00121 00122