vtkMRMLFiducialListNode.h

Go to the documentation of this file.
00001 /*=auto=========================================================================
00002 
00003   Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
00004 
00005   See Doc/copyright/copyright.txt
00006   or http://www.slicer.org/copyright/copyright.txt for details.
00007 
00008   Program:   3D Slicer
00009   Module:    $RCSfile: vtkMRMLFiducialListNode.h,v $
00010   Date:      $Date: 2006/03/19 17:12:28 $
00011   Version:   $Revision: 1.6 $
00012 
00013 =========================================================================auto=*/
00018 
00019 #ifndef __vtkMRMLFiducialListNode_h
00020 #define __vtkMRMLFiducialListNode_h
00021 
00022 #include <string>
00023 
00024 #include "vtkMatrix4x4.h"
00025 #include "vtkCollection.h"
00026 
00027 #include "vtkMRML.h"
00028 #include "vtkMRMLNode.h"
00029 #include "vtkMRMLFiducial.h"
00030 #include "vtkMRMLStorableNode.h"
00031 #include "vtkMRMLFiducialListStorageNode.h"
00032 
00036 typedef struct
00037 {
00038     int first;
00039     int second;
00040 } FiducialListSwappedIndices;
00041 
00042 class VTK_MRML_EXPORT vtkMRMLFiducialListNode : public vtkMRMLStorableNode
00043 {
00044 public:
00045   static vtkMRMLFiducialListNode *New();
00046   vtkTypeMacro(vtkMRMLFiducialListNode,vtkMRMLStorableNode);
00047   void PrintSelf(ostream& os, vtkIndent indent);
00048   
00052 
00053   virtual vtkMRMLNode* CreateNodeInstance();
00054 
00056   virtual void ReadXMLAttributes( const char** atts);
00057 
00059   virtual void WriteXML(ostream& of, int indent);
00060 
00061 
00063   virtual void Copy(vtkMRMLNode *node);
00064   
00066   virtual const char* GetNodeTagName() {return "FiducialList";};
00067 
00069   virtual void UpdateScene(vtkMRMLScene *scene);
00070 
00072   void UpdateReferences();
00073   
00076   void SetSymbolScale(double scale);
00077   vtkGetMacro(SymbolScale,double);
00078 
00079 
00082   void SetVisibility(int visible);
00083   vtkGetMacro(Visibility,int);
00084 
00087   void SetTextScale(double scale);
00088   vtkGetMacro(TextScale,double);
00089   
00092   void SetColor(double r, double g, double b);
00093   void SetColor(double c[3]);
00094   vtkGetVectorMacro(Color,double,3);
00095 
00097   void SetSelectedColor(double r, double g, double b);
00098   void SetSelectedColor(double c[3]);
00099   vtkGetVectorMacro(SelectedColor,double,3);
00100 
00101 
00103   int GetNumberOfFiducials();
00104   
00107   int SetNthFiducialXYZ(int n, float x, float y, float z);
00108   int SetNthFiducialOrientation(int n, float w, float x, float y, float z);
00109   int SetNthFiducialLabelText(int n, const char *text);
00110   int SetNthFiducialSelected(int n, int flag);
00111   int SetNthFiducialSelectedNoModified(int n, int flag);
00112   int SetNthFiducialVisibility(int n, int flag);
00113   int SetNthFiducialVisibilityNoModified(int n, int flag);
00114   int SetNthFiducialID(int n, const char *id);
00115 
00119   int SetNthFiducialXYZWorld(int n, float x, float y, float z);
00120   
00123   //BTX
00124   int SetFiducialXYZ(std::string fiducialID, float x, float y, float z);
00128   int GetFiducialIndex(std::string fiducialID);
00129   //ETX
00130   
00132   int SetAllFiducialsSelected(int flag);
00133 
00135   int SetAllFiducialsVisibility(int flag);
00136   
00139   float *GetNthFiducialXYZ(int n);
00140 
00145   int GetNthFiducialXYZWorld(int n, double *worldxyz);
00147   float *GetNthFiducialOrientation(int n);
00149   const char *GetNthFiducialLabelText(int n);
00151   int GetNthFiducialSelected(int n);
00153   int GetNthFiducialVisibility(int n);
00155   const char *GetNthFiducialID(int n);
00156   
00158   int AddFiducial( );
00159 
00161   int AddFiducialWithXYZ(float x, float y, float z, int selected);
00163   int AddFiducialWithLabelXYZSelectedVisibility(const char *label, float x, float y, float z, int selected, int visibility);
00164 
00166   void RemoveFiducial(vtkMRMLFiducial *o);
00168   void RemoveFiducial(int i);
00170   void RemoveAllFiducials();
00172   int  IsFiducialPresent(vtkMRMLFiducial *o);
00173 
00175   void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData );
00176 
00177   //BTX
00180   enum
00181     {
00182       DisplayModifiedEvent = 19000,
00183       PolyDataModifiedEvent = 19001,
00184       FiducialModifiedEvent = 19002,
00185       FiducialIndexModifiedEvent = 19003
00186     };
00187 //ETX
00188 
00190   void SetOpacity(double opacity);
00191   vtkGetMacro(Opacity, double);
00192 
00194   void SetAmbient(double val);
00195   vtkGetMacro(Ambient, double);
00196   
00198   void SetDiffuse(double val);
00199   vtkGetMacro(Diffuse, double);
00200   
00202   void SetSpecular(double val);
00203   vtkGetMacro(Specular, double);
00204 
00206   void SetPower(double val);
00207   vtkGetMacro(Power, double);
00208 
00210   void SetLocked(int locked);
00211   vtkGetMacro(Locked, int);
00212 
00213   //BTX
00216   enum GlyphShapes
00217   {
00218     GlyphMin = 1,
00219     Vertex2D = GlyphMin,
00220     Dash2D,
00221     Cross2D,
00222     ThickCross2D,
00223     Triangle2D,
00224     Square2D,
00225     Circle2D,
00226     Diamond2D,
00227     Arrow2D,
00228     ThickArrow2D,
00229     HookedArrow2D,
00230     StarBurst2D,
00231     Sphere3D,
00232     Diamond3D,
00233     GlyphMax = Diamond3D
00234   };
00235   //ETX
00237   int GetMinimumGlyphType() { return vtkMRMLFiducialListNode::GlyphMin; };
00238   int GetMaximumGlyphType() { return vtkMRMLFiducialListNode::GlyphMax; };
00239   
00241   void SetGlyphType(int type);
00242   vtkGetMacro(GlyphType, int);
00244   int GlyphTypeIs3D(int glyphType);
00245   int GlyphTypeIs3D() { return this->GlyphTypeIs3D(this->GlyphType); };
00246 
00248   const char* GetGlyphTypeAsString();
00249   const char* GetGlyphTypeAsString(int g);
00250   void SetGlyphTypeFromString(const char *glyphString);
00251 
00253   virtual bool CanApplyNonLinearTransforms() { return true; }
00254   virtual void ApplyTransform(vtkMatrix4x4* transformMatrix);
00255   virtual void ApplyTransform(vtkAbstractTransform* transform);
00256   
00258   virtual vtkMRMLStorageNode* CreateDefaultStorageNode()
00259     {
00260       return vtkMRMLFiducialListStorageNode::New();
00261     };
00262 
00266   int MoveFiducialUp(int fidIndex);
00267   int MoveFiducialDown(int fidIndex);
00268 
00272   void RenumberFiducials(int startFrom = 0);
00273 
00276   void RenameFiducials(const char *newName);
00277 
00278   //BTX
00280   enum NumberingSchemes
00281   {
00282       SchemeMin = 0,
00283       UseID = SchemeMin,
00284       UseIndex,
00285       UsePrevious,
00286       SchemeMax = UsePrevious
00287   };
00288   //ETX
00289 
00291   vtkSetMacro(NumberingScheme, int);
00292   vtkGetMacro(NumberingScheme, int);
00293 
00295   const char* GetNumberingSchemeAsString();
00296   const char* GetNumberingSchemeAsString(int g);
00297   void SetNumberingSchemeFromString(const char *schemeString);
00298 
00306   void SetFiducialLabelTextFromID(vtkMRMLFiducial *fid);
00307 
00308 protected:
00309   vtkMRMLFiducialListNode();
00310   ~vtkMRMLFiducialListNode();
00311   vtkMRMLFiducialListNode(const vtkMRMLFiducialListNode&);
00312   void operator=(const vtkMRMLFiducialListNode&);
00313 
00316   vtkMRMLFiducial* GetNthFiducial(int n);
00317   
00318   double SymbolScale;
00319   double TextScale;
00320   int Visibility;
00321   double Color[3];
00322   double SelectedColor[3];
00323 
00325   vtkCollection *FiducialList;
00326 
00328   double Opacity;
00329   double Ambient;
00330   double Diffuse;
00331   double Specular;
00332   double Power;
00333   int Locked;
00334   int GlyphType;
00335 
00337   int NumberingScheme;
00338 };
00339 
00340 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1