MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoView2D/SoOrthoView2DBase.h
Go to the documentation of this file.
00001 #ifndef __SoOrthoView2DBase_H
00002 #define __SoOrthoView2DBase_H
00003 //----------------------------------------------------------------------------------
00004 // **InsertLicense** code
00005 //----------------------------------------------------------------------------------
00007 
00013 //----------------------------------------------------------------------------------
00014 
00015 #ifndef __SoView2DSystem_H
00016 #include "SoView2DSystem.h"
00017 #endif
00018 
00019 #ifndef __mlAPI_H
00020 #include "mlAPI.h"
00021 #endif
00022 
00023 #include <XVEnterScope.h>
00024 #include <Inventor/fields/SoSFBool.h>
00025 #include <Inventor/fields/SoSFInt32.h>
00026 #include <Inventor/fields/SoSFEnum.h>
00027 #include <Inventor/fields/SoSFTrigger.h>
00028 #include <Inventor/fields/SoSFFloat.h>
00029 #include <Inventor/fields/SoSFVec3f.h>
00030 #include <Inventor/fields/SoSFVec2f.h>
00031 #include <Inventor/fields/SoSFColor.h>
00032 #include <Inventor/fields/SoSFString.h>
00033 #include <Inventor/fields/SoSFPlane.h>
00034 #include <Inventor/nodes/SoSeparator.h>
00035 #include <Inventor/nodes/SoSwitch.h>
00036 #include <Inventor/nodes/SoSubNode.h>
00037 #include <Inventor/SbViewportRegion.h>
00038 #include <Inventor/sensors/SoFieldSensor.h>
00039 #include <XVLeaveScope.h>
00040 
00041 #ifndef __SoSFMLConnector_H
00042 #include "SoSFMLConnector.h"
00043 #endif
00044 
00045 class SoView2D;
00046 class SoSFMLImage;
00047 
00048 //=============================================================
00052 
00055 //=============================================================
00056 class SOVIEW2D_API SoOrthoView2DBase : public SoSeparator {
00057 
00058    SO_NODE_HEADER(SoOrthoView2DBase);
00059 
00060  public:
00062 
00064    SoSFBool drawImageData;
00065 
00067    SoSFString viewerId1;
00069    SoSFString viewerId2;
00071    SoSFString viewerId3;
00072 
00074    SoSFEnum  blendMode;
00076    SoSFEnum  filterMode;
00078    SoSFEnum  cacheMode;
00080    SoSFInt32 slab;
00081 
00083    SoSFEnum  layoutMode;
00085    SoSFVec3f worldPosition;
00087    SoSFBool  worldPosSticky;
00088 
00090    SoSFBool  snapToCenter;
00092    SoSFFloat sliceZoom;
00093 
00095    SoSFVec2f sliceOrigin1;
00096 
00098    SoSFVec2f sliceOrigin2;
00099 
00101    SoSFVec2f sliceOrigin3;
00102 
00104    SoSFBool  synchronizePanning;
00105 
00108    SoSFBool  keepSlicesInView;
00109 
00115    SoSFVec3f viewingCenter;
00116 
00118    SoSFVec3f viewingCenter1;
00119 
00121    SoSFVec3f viewingCenter2;
00122 
00124    SoSFVec3f viewingCenter3;
00125 
00127    SoSFBool  invertKeyPanningDirections;
00128 
00130    SoSFTrigger unzoom;
00131 
00133    SoSFBool  synchronizeZoom;
00134 
00136    SoSFFloat alphaFactor;
00138    SoSFColor baseColor;
00139 
00141    SoSFBool  extraViewSpace;
00143    SoSFVec2f extraViewLowerLeft;
00145    SoSFVec2f extraViewUpperRight;
00147    SoSFVec2f extraViewSize;
00148 
00150    SoSFInt32 timePoint;
00152    SoSFInt32 maxTimePoint;
00153 
00155   SoSFVec2f margin;
00156 
00158   SoSFBool  alternCubeLayout;
00159 
00161    SoSFTrigger deleteSelected;
00163    SoSFTrigger edit;
00164 
00165 
00167   SoSFBool useManagedInteraction;
00168 
00170   SoSFEnum    zoomMode;
00171 
00173   SoSFFloat   zoomModeParameter;
00174 
00176   SoSFFloat minSliceZoomKeyboard;
00177 
00179   SoSFInt32 sliceStep1;
00181   SoSFInt32 sliceStep2;
00183   SoSFInt32 sliceStep3;
00185   SoSFInt32 numSlices1;
00187   SoSFInt32 numSlices2;
00189   SoSFInt32 numSlices3;
00191   SoSFInt32 numXSlices1;
00193   SoSFInt32 numXSlices2;
00195   SoSFInt32 numXSlices3;
00196 
00197 
00199   SoSFPlane plane1;
00201   SoSFPlane plane2;
00203   SoSFPlane plane3;
00204 
00206   SoSFBool  synchronizeFilterMode;
00207 
00209 
00211   SoSFTrigger startCine;
00213   SoSFTrigger stopCine;
00215   SoSFInt32   cineCenterT;
00217   SoSFInt32   cineIntervalT;
00219   SoSFEnum    cineDirection;
00221   SoSFEnum    cineRepeat;
00223   SoSFFloat   cineSpeed;
00225   SoSFBool    cineFullRangeT;
00228   SoSFBool    cineAlwaysReset;
00229 
00230 
00232 
00234   SoSFString  status;
00235 
00237   SoSFString  seriesInstanceUID;
00238 
00240 
00242    static void    initClass();
00243 
00244  protected:
00245 
00247     SoOrthoView2DBase();
00248 
00249     virtual ~SoOrthoView2DBase();
00250 
00253     virtual mlField* getMLImageField(int /*viewerIndex*/) { return NULL; }
00254 
00257     virtual bool isViewerVisible(int viewerIndex) const;
00258 
00260     static void positionChangedCB(void *data, SoSensor* a);
00262     void        positionChanged();
00263 
00265     static void sliceChangedCB(void *data, SoSensor* a);
00267     void        sliceChanged(SoSensor *sensor);
00268 
00270     static void sliceZoomChangedCB(void *data, SoSensor* a);
00272     static void sliceZoomChanged1CB(void *data, SoSensor* a);
00274     static void sliceZoomChanged2CB(void *data, SoSensor* a);
00276     static void sliceZoomChanged3CB(void *data, SoSensor* a);
00278     void        sliceZoomChanged(int which);
00279 
00281     static void sliceOriginChanged1CB(void *data, SoSensor* a);
00283     static void sliceOriginChanged2CB(void *data, SoSensor* a);
00285     static void sliceOriginChanged3CB(void *data, SoSensor* a);
00286 
00288     void resetPanning();
00290     static void synchronizePanningChangedCB(void *data, SoSensor* a);
00292     static void viewingCenterChangedCB(void *data, SoSensor* a);
00294     static void viewingCenterChanged1CB(void *data, SoSensor* a);
00296     static void viewingCenterChanged2CB(void *data, SoSensor* a);
00298     static void viewingCenterChanged3CB(void *data, SoSensor* a);
00300     void viewingCenterChanged(int which);
00301 
00303     void setSliceViewingCenterFor(int which, const SbVec3f& center);
00304 
00305 
00307     static void maxTimePointChangedCB(void *data, SoSensor* a);
00309     void maxTimePointChanged();
00310 
00312     static void timeChangedCB(void *data, SoSensor* a);
00314     void        timeChanged();
00315 
00317     static void marginChangedCB(void *data, SoSensor* a);
00319     void        marginChanged();
00320 
00322     static void zoomModeChangedCB(void *data, SoSensor* a);
00324     void        zoomModeChanged();
00326     static void zoomModeParameterChangedCB(void *data, SoSensor* a);
00328     void        zoomModeParameterChanged();
00329 
00331     static void plane1ChangedCB(void *data, SoSensor* a);
00333     void        plane1Changed();
00335     static void plane2ChangedCB(void *data, SoSensor* a);
00337     void        plane2Changed();
00339     static void plane3ChangedCB(void *data, SoSensor* a);
00341     void        plane3Changed();
00342 
00344     static void filterMode1ChangedCB(void *data, SoSensor* a);
00346     void        filterMode1Changed();
00348     static void filterMode2ChangedCB(void *data, SoSensor* a);
00350     void        filterMode2Changed();
00352     static void filterMode3ChangedCB(void *data, SoSensor* a);
00354     void        filterMode3Changed();
00355 
00357     static void startCineModeCB(void *data, SoSensor* a);
00359     void        startCineMode();
00361     static void stopCineModeCB(void *data, SoSensor* a);
00363     void        stopCineMode();
00364 
00366     static void seriesInstanceUIDChangedCB(void *data, SoSensor* a);
00368     void        seriesInstanceUIDChanged();
00369 
00371     static int sliceInitCB (const SoView2D *view2D, SoSFMLImage *image, void *user);
00373     int sliceInit (const SoView2D *view2D, SoSFMLImage *image);
00374 
00376     static void  updateLayoutCB(void *data, SoSensor* a);
00378     void updateLayout();
00379 
00381     void  connectFieldsTo(SoView2D* view);
00382 
00384     void  updateTimePoints();
00385 
00387     SoSwitch* _switch1;
00388 
00390     SoView2D* _view[3];
00391 
00393     SoView2D* _lastConnectedView;
00394 
00396     int _timePoint[3];
00397 
00399     int _cineMaster;
00400 
00402     SoFieldSensor* _posSensor;
00403     SoFieldSensor* _sliceSensor1;
00404     SoFieldSensor* _sliceSensor2;
00405     SoFieldSensor* _sliceSensor3;
00406 
00407     SoFieldSensor* _zoomSensor;
00408     SoFieldSensor* _zoomSensor1;
00409     SoFieldSensor* _zoomSensor2;
00410     SoFieldSensor* _zoomSensor3;
00411 
00412     SoFieldSensor* _sliceOriginSensor1;
00413     SoFieldSensor* _sliceOriginSensor2;
00414     SoFieldSensor* _sliceOriginSensor3;
00415 
00416     SoFieldSensor* _synchronizePanningSensor;
00417     SoFieldSensor* _viewingCenterSensor;
00418     SoFieldSensor* _viewingCenterSensor1;
00419     SoFieldSensor* _viewingCenterSensor2;
00420     SoFieldSensor* _viewingCenterSensor3;
00421 
00422     SoFieldSensor* _layoutSensor;
00423     SoFieldSensor* _maxTimePointSensor1;
00424     SoFieldSensor* _maxTimePointSensor2;
00425     SoFieldSensor* _maxTimePointSensor3;
00426     SoFieldSensor* _timeSensor1;
00427     SoFieldSensor* _timeSensor2;
00428     SoFieldSensor* _timeSensor3;
00429 
00430     SoFieldSensor* _marginSensor;
00431     SoFieldSensor* _alternCubeLayoutSensor;
00432     SoFieldSensor* _extraViewSizeSensor;
00433 
00434     SoFieldSensor* _zoomModeSensor;
00435     SoFieldSensor* _zoomModeParameterSensor;
00436 
00437     SoFieldSensor* _plane1Sensor;
00438     SoFieldSensor* _plane2Sensor;
00439     SoFieldSensor* _plane3Sensor;
00440     
00441     SoFieldSensor* _filterMode1Sensor;
00442     SoFieldSensor* _filterMode2Sensor;
00443     SoFieldSensor* _filterMode3Sensor;
00444 
00446     SoTimerSensor     *_cineTimerSensor;
00448     SoFieldSensor     *_startCineSensor;
00450     SoFieldSensor     *_stopCineSensor;
00451 
00453     SoFieldSensor     *_seriesInstanceUIDSensor;
00454 
00456     bool _inhibitViewingCenterSync;
00457 
00459 
00460 };
00461 
00462 #endif
00463 
00464 
00465 
00466 
00467 
00468