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