VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkIconGlyphFilter.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 =========================================================================*/ 00041 #ifndef __vtkIconGlyphFilter_h 00042 #define __vtkIconGlyphFilter_h 00043 00044 #include "vtkPolyDataAlgorithm.h" 00045 00046 #define VTK_ICON_GRAVITY_TOP_RIGHT 1 00047 #define VTK_ICON_GRAVITY_TOP_CENTER 2 00048 #define VTK_ICON_GRAVITY_TOP_LEFT 3 00049 #define VTK_ICON_GRAVITY_CENTER_RIGHT 4 00050 #define VTK_ICON_GRAVITY_CENTER_CENTER 5 00051 #define VTK_ICON_GRAVITY_CENTER_LEFT 6 00052 #define VTK_ICON_GRAVITY_BOTTOM_RIGHT 7 00053 #define VTK_ICON_GRAVITY_BOTTOM_CENTER 8 00054 #define VTK_ICON_GRAVITY_BOTTOM_LEFT 9 00055 00056 #define VTK_ICON_SCALING_OFF 0 00057 #define VTK_ICON_SCALING_USE_SCALING_ARRAY 1 00058 00059 00060 class VTK_GRAPHICS_EXPORT vtkIconGlyphFilter : public vtkPolyDataAlgorithm 00061 { 00062 public: 00064 00065 static vtkIconGlyphFilter *New(); 00066 vtkTypeMacro(vtkIconGlyphFilter,vtkPolyDataAlgorithm); 00067 void PrintSelf(ostream& os, vtkIndent indent); 00069 00071 00073 vtkSetVector2Macro(IconSize,int); 00074 vtkGetVectorMacro(IconSize,int,2); 00076 00078 00080 vtkSetVector2Macro(IconSheetSize,int); 00081 vtkGetVectorMacro(IconSheetSize,int,2); 00083 00085 00090 vtkSetVector2Macro(DisplaySize,int); 00091 vtkGetVectorMacro(DisplaySize,int,2); 00093 00095 00097 vtkSetMacro(UseIconSize,bool); 00098 vtkGetMacro(UseIconSize,bool); 00099 vtkBooleanMacro(UseIconSize, bool); 00101 00103 00106 vtkSetMacro(IconScaling,int); 00107 vtkGetMacro(IconScaling,int); 00108 void SetIconScalingToScalingOff() {this->SetIconScaling(VTK_ICON_SCALING_OFF);} 00109 void SetIconScalingToScalingArray() 00110 {this->SetIconScaling(VTK_ICON_SCALING_USE_SCALING_ARRAY);} 00112 00114 00118 vtkSetMacro(PassScalars,bool); 00119 vtkGetMacro(PassScalars,bool); 00120 vtkBooleanMacro(PassScalars,bool); 00122 00124 00128 vtkSetMacro(Gravity, int); 00129 vtkGetMacro(Gravity, int); 00130 void SetGravityToTopRight() {this->SetGravity(VTK_ICON_GRAVITY_TOP_RIGHT);}; 00131 void SetGravityToTopCenter() {this->SetGravity(VTK_ICON_GRAVITY_TOP_CENTER);}; 00132 void SetGravityToTopLeft() {this->SetGravity(VTK_ICON_GRAVITY_TOP_LEFT);}; 00133 void SetGravityToCenterRight() {this->SetGravity(VTK_ICON_GRAVITY_CENTER_RIGHT);}; 00134 void SetGravityToCenterCenter() {this->SetGravity(VTK_ICON_GRAVITY_CENTER_CENTER);}; 00135 void SetGravityToCenterLeft() {this->SetGravity(VTK_ICON_GRAVITY_CENTER_LEFT);}; 00136 void SetGravityToBottomRight() {this->SetGravity(VTK_ICON_GRAVITY_BOTTOM_RIGHT);}; 00137 void SetGravityToBottomCenter() {this->SetGravity(VTK_ICON_GRAVITY_BOTTOM_CENTER);}; 00138 void SetGravityToBottomLeft() {this->SetGravity(VTK_ICON_GRAVITY_BOTTOM_LEFT);}; 00140 00142 00144 vtkSetVector2Macro(Offset,int); 00145 vtkGetVectorMacro(Offset,int,2); 00147 00148 protected: 00149 vtkIconGlyphFilter(); 00150 ~vtkIconGlyphFilter(); 00151 00152 virtual int RequestData(vtkInformation *, 00153 vtkInformationVector **, 00154 vtkInformationVector *); 00155 00156 int IconSize[2]; // Size in pixels of an icon in an icon sheet 00157 int IconSheetSize[2]; // Size in pixels of the icon sheet 00158 int DisplaySize[2]; // Size in pixels of the icon when displayed 00159 00160 int Gravity; 00161 bool UseIconSize; 00162 int IconScaling; 00163 bool PassScalars; 00164 int Offset[2]; 00165 00166 private: 00167 vtkIconGlyphFilter(const vtkIconGlyphFilter&); // Not implemented. 00168 void operator=(const vtkIconGlyphFilter&); // Not implemented. 00169 00170 void IconConvertIndex(int id, int & j, int & k); 00171 }; 00172 00173 inline void vtkIconGlyphFilter::IconConvertIndex(int id, int & j, int & k) 00174 { 00175 int dimX = this->IconSheetSize[0]/this->IconSize[0]; 00176 int dimY = this->IconSheetSize[1]/this->IconSize[1]; 00177 00178 j = id - dimX * static_cast<int>(id/dimX); 00179 k = dimY - static_cast<int>(id/dimX) - 1; 00180 } 00181 00182 #endif