vtkSlicermiAnnotationModuleLogic.h

Go to the documentation of this file.
00001 #ifndef __vtkSlicermiAnnotationModuleLogic_h
00002 #define __vtkSlicermiAnnotationModuleLogic_h
00003 
00004 // Slicer Logic includes
00005 #include "vtkSlicerModuleLogic.h"
00006 
00007 // qCTK includes
00008 #include <qCTKPimpl.h>
00009 
00010 #include "qSlicermiAnnotationModuleExport.h"
00011 #include "vtkSlicerNodeSelectorWidget.h"
00012 #include "vtkKWUserInterfacePanel.h"
00013 #include "vtkSlicerModuleGUI.h"
00014 
00015 class vtkSlicerFiducialListWidget;
00016 class vtkSlicermiAnnotationModuleLogicPrivate;
00017 class vtkMeasurementsAngleWidget;
00018 class vtkMeasurementsRulerWidget;
00019 class vtkMRMLMeasurementsAngleNode;
00020 class vtkMRMLAnnotationRulerNode;
00021 class vtkMRMLAnnotationAngleNode;
00022 class vtkSlicerViewerWidget;
00023 class vtkSlicerApplicationGUI;
00024 class vtkMeasurementsDistanceWidgetClass;
00025 class vtkMeasurementsAngleWidgetClass;
00026 class vtkMRMLAnnotationFiducialNode;
00027 class vtkMRMLAnnotationFiducialNode;
00028 class vtkMRMLAnnotationNode;
00029 class vtkMRMLAnnotationPointDisplayNode;
00030 class vtkMRMLAnnotationLineDisplayNode;
00031 class vtkMRMLAnnotationLinesNode;
00032 class vtkMRMLAnnotationControlPointsNode;
00033 class vtkMRMLAnnotationDisplayNode;
00034 class vtkMRMLAnnotationTextDisplayNode;
00035 class vtkMRMLAnnotationStickyNode;
00036 class vtkSlicerAnnotationRulerManager;
00037 class vtkSlicerAnnotationAngleManager;
00038 
00039 
00040 class Q_SLICER_QTMODULES_ANNOTATIONS_EXPORT vtkSlicermiAnnotationModuleLogic :
00041   public vtkSlicerModuleLogic
00042 {
00043 public:
00044   typedef enum { VALUE=0, 
00045          TEXT, 
00046          LOCK,      
00047          TEXT_COLOR, 
00048          TEXT_SELECTED_COLOR, 
00049          TEXT_OPACITY, 
00050          TEXT_AMBIENT, 
00051          TEXT_DIFFUSE, 
00052          TEXT_SPECULAR,
00053          TEXT_SCALE, 
00054          POINT_COLOR, 
00055          POINT_SELECTED_COLOR, 
00056          POINT_OPACITY, 
00057          POINT_AMBIENT, 
00058          POINT_DIFFUSE, 
00059          POINT_SPECULAR,
00060          POINT_SIZE, 
00061          LINE_COLOR, 
00062          LINE_SELECTED_COLOR, 
00063          LINE_OPACITY, 
00064          LINE_AMBIENT, 
00065          LINE_DIFFUSE, 
00066          LINE_SPECULAR,
00067          LINE_WIDTH} PropertyType;
00068 
00069   enum
00070   {
00071       AddAngleCompletedEvent = 19020,
00072   };
00073 
00074   static vtkSlicermiAnnotationModuleLogic *New();
00075   vtkTypeRevisionMacro(vtkSlicermiAnnotationModuleLogic,vtkSlicerModuleLogic);
00076   virtual void PrintSelf(ostream& os, vtkIndent indent);
00077 
00078   // Fiducial Related Public Functions
00079   const char* AddFiducial();
00080   double GetFiducialValue(const char* cpID);
00081   std::vector<double> GetFiducialPositionsByNodeID(const char* cpID);
00082   void SetFiducialPositionsByNodeID(const char* cpID, std::vector<double> positions);
00083   void RemoveFiducial(const char* id);
00084   vtkMRMLAnnotationFiducialNode* GetFiducialNodeByID(const char* id);
00085   void Update3DFiducial(vtkMRMLAnnotationFiducialNode *activeCPNode);
00086   void StartAddingFiducials();
00087   void StopAddingFiducials();
00088 
00089   // Ruler Related Public Functions
00090   const char* AddRuler();
00091   void RemoveRuler(const char* id);
00092   vtkMRMLAnnotationRulerNode* GetRulerNodeByID(const char* id);
00093 
00094   // Angle Related Public Functions
00095   const char* AddAngle();
00096   void RemoveAngle(const char* id);
00097   vtkMRMLAnnotationAngleNode* GetAngleNodeByID(const char* id);
00098   void AddAngleCompleted();
00099 
00100   // Sticky Node
00101   const char* AddStickyNode();
00102 
00103   // Common Widget Public Function
00104   void ModifyPropertiesAndWidget(vtkMRMLNode* node, int type, void*data);
00105   vtkSlicerViewerWidget* GetViewerWidget();
00106   void SetAnnotationSelectedByIDs(std::vector<const char*> selectedIDs, std::vector<const char*> allIDs);
00107   void RemoveAnnotationByID(const char* id);
00108 
00109   // Common MRML Related Public Functions
00110   void SetAnnotationControlPointsProperties(vtkMRMLAnnotationControlPointsNode* node, int type, void* data);
00111   void SetAnnotationLinesProperties(vtkMRMLAnnotationLinesNode* node, int type, void* data);
00112   void SetAnnotationProperties(vtkMRMLAnnotationNode* node, int type, void* data);
00113   int SetAnnotationDisplayProperties(vtkMRMLAnnotationDisplayNode* node, int type, void* data);
00114   int SetAnnotationTextDisplayProperties(vtkMRMLAnnotationTextDisplayNode* node, int type, void* data);
00115   int SetAnnotationPointDisplayProperties(vtkMRMLAnnotationPointDisplayNode* node, int type, void* data);
00116   int SetAnnotationLineDisplayProperties(vtkMRMLAnnotationLineDisplayNode* node, int type, void* data);
00117   vtkStdString GetAnnotationTextProperty(vtkMRMLNode* node);
00118   const char* GetAnnotationTextFormatProperty(vtkMRMLNode* node);
00119   double GetAnnotationMeasurement(vtkMRMLNode* node);
00120   int GetNumberOfControlPoints(vtkMRMLNode* mrmlnode);
00121   double* GetAnnotationControlPointsCoordinate(vtkMRMLNode* mrmlnode, vtkIdType coordId);
00122   int SetAnnotationControlPointsCoordinate(vtkMRMLNode* mrmlnode, double* pos, vtkIdType coordId);
00123 
00124   int GetAnnotationLinesPropertiesDouble(vtkMRMLNode* node, int type, double &result);
00125   int GetAnnotationLineDisplayPropertiesDouble(vtkMRMLAnnotationLineDisplayNode* node, int type, double& result);
00126   int GetAnnotationControlPointsPropertiesDouble(vtkMRMLAnnotationControlPointsNode* node, int type, double &result);
00127   int GetAnnotationPropertiesDouble(vtkMRMLAnnotationNode* node, int type, double& result);
00128   int GetAnnotationDisplayPropertiesDouble(vtkMRMLAnnotationDisplayNode* node, int type, double& result);
00129   int GetAnnotationTextDisplayPropertiesDouble(vtkMRMLAnnotationTextDisplayNode* node, int type, double& result);
00130   int GetAnnotationPointDisplayPropertiesDouble(vtkMRMLAnnotationPointDisplayNode* node, int type, double& result);
00131 
00132   double* GetAnnotationLinesPropertiesColor(vtkMRMLNode* mrmlnode, int type);
00133   double* GetAnnotationLineDisplayPropertiesColor(vtkMRMLAnnotationLineDisplayNode* node, int type);
00134   double* GetAnnotationControlPointsPropertiesColor(vtkMRMLAnnotationControlPointsNode* node, int type);
00135   double* GetAnnotationPropertiesColor(vtkMRMLAnnotationNode* node, int type);
00136   double* GetAnnotationDisplayPropertiesColor(vtkMRMLAnnotationDisplayNode* node, int type);
00137   double* GetAnnotationTextDisplayPropertiesColor(vtkMRMLAnnotationTextDisplayNode* node, int type);
00138   double* GetAnnotationPointDisplayPropertiesColor(vtkMRMLAnnotationPointDisplayNode* node, int type);
00139 
00140   // Other Public Functions
00141   void ProcessLogicEvents(vtkObject *caller, unsigned long event, void *callData );
00142   vtkSlicerApplicationGUI* GetApplicationGUI();
00143   vtkImageData* SaveScreenShot();
00144   void SaveMRMLScene();
00145   const char* GetIconName(vtkMRMLNode* node, bool isEdit=false);
00146 
00147   void AddRulerNodeObserver(vtkMRMLAnnotationRulerNode* rnode) ;
00148 
00149   int TestReceivedMessage; 
00150 
00151 protected:
00152   vtkSlicermiAnnotationModuleLogic();
00153   ~vtkSlicermiAnnotationModuleLogic();
00154   // not implemented
00155   vtkSlicermiAnnotationModuleLogic(const vtkSlicermiAnnotationModuleLogic&);
00156   void operator=(const vtkSlicermiAnnotationModuleLogic&);
00157 
00158 
00159 private:
00160   QCTK_DECLARE_PRIVATE(vtkSlicermiAnnotationModuleLogic);
00161 
00162   // Fiducial Related Private Functions
00163   vtkSlicerFiducialListWidget* GetFiducialWidget(const char *nodeID);
00164   void AddFiducialWidget(vtkMRMLAnnotationFiducialNode *cpNode);
00165   void RemoveFiducialWidget(vtkMRMLAnnotationFiducialNode *cpNode);
00166 
00167   vtkSlicerAnnotationRulerManager *m_RulerManager;
00168   vtkSlicerAnnotationAngleManager *m_AngleManager;
00169 
00170 };
00171 
00172 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1