NIREP

C:/Programs/source/NIREP/DisplayManager/NIREPvtkViewImage2D.h

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_ */
 All Classes Functions Variables Typedefs Enumerations Enumerator