NIREP
|
00001 /*========================================================================= 00002 00003 Program: vtkINRIA3D 00004 Module: $Id: NIREPvtkViewImage2D.h,v 1.9 2011/02/08 21:07:53 hawle Exp $ 00005 Language: C++ 00006 Author: $Author: hawle $ 00007 Date: $Date: 2011/02/08 21:07:53 $ 00008 Version: $Revision: 1.9 $ 00009 00010 Copyright (c) 2007 INRIA - Asclepios Project. All rights reserved. 00011 See Copyright.txt for details. 00012 00013 This software is distributed WITHOUT ANY WARRANTY; without even 00014 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00015 PURPOSE. See the above copyright notices for more information. 00016 00017 =========================================================================*/ 00018 00019 //I have renamed this class from vtkViewImage2D to 00020 //NIREPvtkViewImage2D so that we can have our changes but 00021 //not have to have vtkINRIA3D in our source tree. 00022 //I wanted to have vtkViewImage2D be the main class I pass around in 00023 //NIREPDisplay and I already made changes to vtkViewImage which is the 00024 //parent of this class. So I had to pull vtkViewImage2D out of vtkINRIA3D 00025 //and rename to NIREPvtkViewImage2D, so that my changes stayed. 00026 //Jeffrey Hawley 00027 00028 #ifndef _NIREPvtkViewImage2D_h_ 00029 #define _NIREPvtkViewImage2D_h_ 00030 00031 #include "vtkINRIA3DConfigure.h" 00032 00033 #include <iostream> 00034 #include "NIREPvtkViewImage.h" 00035 00036 class vtkActor; 00037 class vtkAlgorithmOutput; 00038 class vtkBox; 00039 class vtkBoxCutPolyLines; 00040 class vtkColorTransferFunction; 00041 class vtkColorTransferFunction; 00042 class vtkCutter; 00043 class vtkCutter; 00044 class vtkDataSet; 00045 class vtkDataSetMapper; 00046 class vtkImageActor; 00047 class vtkImageBlend; 00048 class vtkImageBlendWithMask; 00049 class vtkImageMapToColors; 00050 class vtkImageMapToWindowLevelColors; 00051 class vtkImageReslice; 00052 class NIREPvtkInteractorStyleImage2D; 00053 class vtkLineSource; 00054 class vtkLookupTable; 00055 class vtkMatrix4x4; 00056 class vtkPlane; 00057 class vtkPolyDataMapper; 00058 class vtkProp; 00059 class vtkProperty; 00060 class vtkScalarsToColors; 00061 class vtkTextMapper; 00062 class vtkTransform; 00063 class vtkRulerWidget; 00064 00088 class VTK_RENDERINGADDON_EXPORT NIREPvtkViewImage2D : public NIREPvtkViewImage 00089 { 00090 public: 00091 00092 static NIREPvtkViewImage2D* New(); 00093 vtkTypeRevisionMacro(NIREPvtkViewImage2D, NIREPvtkViewImage); 00094 00095 00096 //BTX 00097 enum InteractionStyleIds { 00098 NO_INTERACTION, 00099 SELECT_INTERACTION, 00100 WINDOW_LEVEL_INTERACTION, 00101 FULL_PAGE_INTERACTION, 00102 MEASURE_INTERACTION, 00103 ZOOM_INTERACTION 00104 }; 00105 //ETX 00106 00107 //BTX 00108 enum ConventionIds{ 00109 RADIOLOGIC, 00110 NEUROLOGIC 00111 }; 00112 //ETX 00113 00114 00115 void PrintSelf(ostream& os, vtkIndent indent); 00116 00117 00121 virtual void SetShowSliceNumber(int p_showSliceNumber); 00122 vtkBooleanMacro (ShowSliceNumber, int); 00123 vtkGetMacro (ShowSliceNumber, int); 00124 00125 00129 virtual void SetShow2DAxis(int); 00130 vtkBooleanMacro (Show2DAxis, int); 00131 vtkGetMacro (Show2DAxis, int); 00132 00133 00137 virtual void SetImage(vtkImageData* image); 00138 00139 00143 virtual void SetTransform(vtkTransform* p_transform); 00144 00145 00150 virtual void SetMatrix(vtkMatrix4x4* p_matrix, bool centered = false); 00151 00152 00157 virtual void SetOrientation(unsigned int orientation); 00158 vtkGetMacro (Orientation, unsigned int); 00159 00160 00165 virtual int GetWholeZMin(); 00166 00167 00171 virtual int GetWholeZMax(); 00172 00173 00177 virtual int GetZSlice(); 00178 00179 00183 virtual void SetZSlice(int p_slice); 00184 00185 00189 virtual double GetColorWindow(); 00190 00191 00195 virtual double GetColorLevel(); 00196 00197 00201 virtual void SetWindow (double); 00202 00203 00207 virtual void SetLevel (double); 00208 00209 00210 00211 00215 virtual void SetInterpolationMode(int i); 00216 00217 00221 virtual int GetInterpolationMode(void); 00222 00223 00227 vtkSetMacro (LeftButtonInteractionStyle, unsigned int); 00228 vtkGetMacro (LeftButtonInteractionStyle, unsigned int); 00229 00230 00234 vtkSetMacro (RightButtonInteractionStyle, unsigned int); 00235 vtkGetMacro (RightButtonInteractionStyle, unsigned int); 00236 00237 00241 vtkSetMacro (MiddleButtonInteractionStyle, unsigned int); 00242 vtkGetMacro (MiddleButtonInteractionStyle, unsigned int); 00243 00247 vtkSetMacro (WheelInteractionStyle, unsigned int); 00248 vtkGetMacro (WheelInteractionStyle, unsigned int); 00249 00250 00254 virtual void SetInteractionStyle (const unsigned int& style) 00255 { 00256 if (this->GetLeftButtonInteractionStyle() == this->InteractionStyle) 00257 this->SetLeftButtonInteractionStyle (style); 00258 if (this->GetMiddleButtonInteractionStyle() == this->InteractionStyle) 00259 this->SetMiddleButtonInteractionStyle (style); 00260 if (this->GetRightButtonInteractionStyle() == this->InteractionStyle) 00261 this->SetRightButtonInteractionStyle (style); 00262 if (this->GetWheelInteractionStyle() == this->InteractionStyle) 00263 this->SetWheelInteractionStyle (style); 00264 this->InteractionStyle = style; 00265 } 00266 vtkGetMacro (InteractionStyle, unsigned int); 00267 00268 00272 virtual void SetRulerWidgetVisibility (int); 00273 vtkBooleanMacro (RulerWidgetVisibility, int); 00274 vtkGetMacro (RulerWidgetVisibility, int); 00275 00276 00280 vtkGetObjectMacro (RulerWidget, vtkRulerWidget); 00281 00282 00289 virtual void SetMaskImage (vtkImageData* mask, vtkLookupTable* lut); 00290 00291 00295 virtual void RemoveMaskImage (void); 00296 00297 00302 virtual void SetOverlappingImage (vtkImageData* image); 00303 00304 00308 virtual void RemoveOverlappingImage (void); 00309 00310 00314 virtual void SetLookupTable (vtkScalarsToColors* lut); 00315 00316 00320 virtual void SetBGLookupTable (vtkScalarsToColors* lut); 00321 virtual vtkScalarsToColors* GetBGLookupTable (void) const; 00322 00323 00328 virtual void UpdatePosition (); 00329 00330 00334 virtual void SetVisibility (int state); 00335 00336 00340 virtual void SetOpacity(double opacity); 00341 virtual double GetOpacity (void) const; 00342 00343 00350 virtual vtkActor* AddDataSet (vtkDataSet* dataset, vtkProperty* property = NULL); 00351 00352 00360 virtual vtkActor* AddPolyData (vtkPolyData* polydata, vtkProperty* property = NULL, double thickness = 0.2); 00361 virtual vtkActor* SyncAddPolyData (vtkPolyData* polydata, vtkProperty* property = NULL, double thickness = 0.2); 00362 00363 00367 virtual void SetZoom (double factor); 00368 00369 00373 virtual void ResetZoom (void); 00374 00375 00381 virtual void ResetAndRestablishZoomAndCamera (void); 00382 00383 00388 virtual void SetConventionsToRadiological (void); 00389 00390 00395 virtual void SetConventionsToNeurological (void); 00396 00397 00402 virtual void SetConventions (int); 00403 vtkGetMacro (Conventions, unsigned int); 00404 00405 00410 static void SetViewImage2DDisplayConventions(int val); 00411 static void SetViewImage2DDisplayConventionsToRadiologic() {NIREPvtkViewImage2D::SetViewImage2DDisplayConventions(0);}; 00412 static void SetViewImage2DDisplayConventionsToNeurologic() {NIREPvtkViewImage2D::SetViewImage2DDisplayConventions(1);}; 00413 static int GetViewImage2DDisplayConventions(); 00414 00415 00419 virtual void SetBGImage (vtkImageData* image, int slice = 0, vtkTransform* transform = NULL); 00420 vtkGetObjectMacro (BGImage, vtkImageData); 00421 00422 00426 virtual void RemoveBGImage (void); 00427 00428 00432 virtual void SetBGImageOpacity(double opacity); 00433 double GetBGImageOpacity (void) const; 00434 00435 00439 virtual void Clear(void); 00440 00441 00447 virtual void ScreenCoordinatesToPosition (double sc[2], double pos[3]); 00448 00449 00450 00451 00452 // access methods to internal classes 00453 00454 00458 vtkGetObjectMacro (ImageActor, vtkImageActor); 00459 00460 00464 vtkGetObjectMacro (BGActor, vtkImageActor); 00465 00466 00470 vtkGetObjectMacro (WindowLevel, vtkImageMapToColors); 00471 00472 00476 vtkGetObjectMacro (ImageReslice, vtkImageReslice); 00477 00478 00479 00480 00481 protected: 00482 NIREPvtkViewImage2D(); 00483 ~NIREPvtkViewImage2D(); 00484 00491 virtual void Initialize(); 00492 00493 00497 virtual void Uninitialize(); 00498 00499 00504 virtual void InitializeImagePositionAndSize(void); 00505 00506 00511 vtkGetObjectMacro (ScreenToRealWorldMatrix, vtkMatrix4x4); 00512 00513 00517 vtkGetObjectMacro (OrientationMatrix, vtkMatrix4x4); 00518 00519 00526 virtual void InternalUpdate(void); 00527 00528 00529 virtual void SetupAnnotations (void); 00530 00531 00532 // private: 00533 00534 // Update data information and set the update and display extents. 00535 // Reset the camera position. 00536 void UpdateImageActor(); 00537 00538 00540 vtkImageData* AuxInput; 00541 00543 vtkImageData* ResliceInput; 00544 00546 vtkImageMapToWindowLevelColors* WindowLevelForCorner; 00547 vtkImageMapToColors* WindowLevel; 00548 00552 vtkImageReslice* ImageReslice; 00553 00554 // mask filter 00555 vtkImageBlendWithMask* MaskFilter; 00556 00557 // image blender 00558 vtkImageBlend* Blender; 00559 00561 vtkImageActor* ImageActor; 00562 vtkActor* HorizontalLineActor; 00563 vtkLineSource* HorizontalLineSource; 00564 vtkActor* VerticalLineActor; 00565 vtkLineSource* VerticalLineSource; 00566 00567 vtkScalarsToColors* BGLookupTable; 00568 00569 int FirstRender; 00570 //int ShowDirections; 00571 int ShowSliceNumber; 00572 int Show2DAxis; 00573 int RulerWidgetVisibility; 00574 00576 unsigned int Orientation; 00577 unsigned int InteractionStyle; 00578 00579 vtkPlane* DataSetCutPlane; 00580 vtkBox* DataSetCutBox; 00581 double BoxThickness; 00582 00583 unsigned int LeftButtonInteractionStyle; 00584 unsigned int RightButtonInteractionStyle; 00585 unsigned int MiddleButtonInteractionStyle; 00586 unsigned int WheelInteractionStyle; 00587 00588 00589 double InitialParallelScale; 00590 00591 unsigned int Conventions; 00592 00594 vtkImageData* BGImage; 00595 vtkImageActor * BGActor; 00596 vtkImageMapToColors* BGWindowLevel; 00597 00598 00599 vtkMatrix4x4 *OrientationMatrix; 00600 vtkMatrix4x4 *ScreenToRealWorldMatrix; 00601 00602 vtkRulerWidget* RulerWidget; 00603 00604 }; 00605 00606 #endif /* _NIREPvtkViewImage2D_h_ */