VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageCanvasSource2D.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00029 #ifndef vtkImageCanvasSource2D_h 00030 #define vtkImageCanvasSource2D_h 00031 00032 #include "vtkImagingSourcesModule.h" // For export macro 00033 #include "vtkImageAlgorithm.h" 00034 00035 class VTKIMAGINGSOURCES_EXPORT vtkImageCanvasSource2D : public vtkImageAlgorithm 00036 { 00037 public: 00039 static vtkImageCanvasSource2D *New(); 00040 00041 vtkTypeMacro(vtkImageCanvasSource2D,vtkImageAlgorithm); 00042 void PrintSelf(ostream& os, vtkIndent indent); 00043 00045 00047 vtkSetVector4Macro(DrawColor, double); 00048 vtkGetVector4Macro(DrawColor, double); 00050 00052 void SetDrawColor(double a) {this->SetDrawColor(a, 0.0, 0.0, 0.0);} 00053 00055 void SetDrawColor(double a,double b) {this->SetDrawColor(a, b, 0.0, 0.0);} 00056 00058 00059 void SetDrawColor(double a, double b, double c) { 00060 this->SetDrawColor(a, b, c, 0.0);} 00062 00064 void InitializeCanvasVolume(vtkImageData *volume); 00065 00067 00069 void FillBox(int min0, int max0, int min1, int max1); 00070 void FillTube(int x0, int y0, int x1, int y1, double radius); 00071 void FillTriangle(int x0, int y0, int x1, int y1, int x2, int y2); 00072 void DrawCircle(int c0, int c1, double radius); 00073 void DrawPoint(int p0, int p1); 00074 void DrawSegment(int x0, int y0, int x1, int y1); 00075 void DrawSegment3D(double *p0, double *p1); 00076 void DrawSegment3D(double x1, double y1, double z1, 00077 double x2, double y2, double z2) 00078 { double p1[3], p2[3]; 00079 p1[0] = x1; p1[1] = y1; p1[2] = z1; p2[0] = x2; p2[1] = y2; p2[2] = z2; 00080 this->DrawSegment3D(p1, p2);} 00082 00084 00086 void DrawImage(int x0, int y0, vtkImageData* i) 00087 { this->DrawImage(x0, y0, i, -1, -1, -1, -1); } 00088 void DrawImage(int x0, int y0, vtkImageData*, int sx, int sy, 00089 int width, int height); 00091 00095 void FillPixel(int x, int y); 00096 00098 00101 void SetExtent(int *extent); 00102 void SetExtent(int x1, int x2, int y1, int y2, int z1, int z2); 00104 00106 00109 vtkSetMacro(DefaultZ, int); 00110 vtkGetMacro(DefaultZ, int); 00112 00114 00117 vtkSetVector3Macro(Ratio, double); 00118 vtkGetVector3Macro(Ratio, double); 00120 00122 00123 virtual void SetNumberOfScalarComponents(int i); 00124 virtual int GetNumberOfScalarComponents() const; 00126 00128 00133 void SetScalarTypeToFloat(){this->SetScalarType(VTK_FLOAT);}; 00134 void SetScalarTypeToDouble(){this->SetScalarType(VTK_DOUBLE);}; 00135 void SetScalarTypeToInt(){this->SetScalarType(VTK_INT);}; 00136 void SetScalarTypeToUnsignedInt() 00137 {this->SetScalarType(VTK_UNSIGNED_INT);}; 00138 void SetScalarTypeToLong(){this->SetScalarType(VTK_LONG);}; 00139 void SetScalarTypeToUnsignedLong() 00140 {this->SetScalarType(VTK_UNSIGNED_LONG);}; 00141 void SetScalarTypeToShort(){this->SetScalarType(VTK_SHORT);}; 00142 void SetScalarTypeToUnsignedShort() 00143 {this->SetScalarType(VTK_UNSIGNED_SHORT);}; 00144 void SetScalarTypeToUnsignedChar() 00145 {this->SetScalarType(VTK_UNSIGNED_CHAR);}; 00146 void SetScalarTypeToChar() 00147 {this->SetScalarType(VTK_CHAR);}; 00148 void SetScalarType(int); 00149 int GetScalarType() const; 00151 00152 protected: 00153 vtkImageCanvasSource2D(); 00154 // Destructor: Deleting a vtkImageCanvasSource2D automatically deletes the 00155 // associated vtkImageData. However, since the data is reference counted, 00156 // it may not actually be deleted. 00157 ~vtkImageCanvasSource2D(); 00158 00159 vtkImageData *ImageData; 00160 int WholeExtent[6]; 00161 double DrawColor[4]; 00162 int DefaultZ; 00163 double Ratio[3]; 00164 00165 int ClipSegment(int &a0, int &a1, int &b0, int &b1); 00166 00167 virtual int RequestInformation (vtkInformation *, 00168 vtkInformationVector**, 00169 vtkInformationVector *); 00170 virtual int RequestData (vtkInformation *, 00171 vtkInformationVector**, 00172 vtkInformationVector *); 00173 00174 private: 00175 vtkImageCanvasSource2D(const vtkImageCanvasSource2D&); // Not implemented. 00176 void operator=(const vtkImageCanvasSource2D&); // Not implemented. 00177 }; 00178 00179 00180 00181 #endif 00182 00183