MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoView2D/extensions/SoView2DMagnifyController.h
Go to the documentation of this file.
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