00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00044 #ifndef __vtkLabelPlacer_h
00045 #define __vtkLabelPlacer_h
00046
00047 #include "vtkPolyDataAlgorithm.h"
00048
00049 class vtkRenderer;
00050 class vtkCoordinate;
00051 class vtkSelectVisiblePoints;
00052
00053 class VTK_RENDERING_EXPORT vtkLabelPlacer : public vtkPolyDataAlgorithm
00054 {
00055 public:
00056 static vtkLabelPlacer* New();
00057 vtkTypeMacro(vtkLabelPlacer,vtkPolyDataAlgorithm);
00058 virtual void PrintSelf( ostream& os, vtkIndent indent );
00059
00060 vtkGetObjectMacro(Renderer,vtkRenderer);
00061 virtual void SetRenderer( vtkRenderer* );
00062
00063 vtkGetObjectMacro(AnchorTransform,vtkCoordinate);
00064
00065
00067 enum LabelGravity
00068 {
00069 VerticalBottomBit = 1,
00070 VerticalBaselineBit = 2,
00071 VerticalCenterBit = 4,
00072 VerticalTopBit = 8,
00073 HorizontalLeftBit = 16,
00074 HorizontalCenterBit = 32,
00075 HorizontalRightBit = 64,
00076 VerticalBitMask = 15,
00077 HorizontalBitMask = 112,
00078
00079 LowerLeft=17,
00080 LowerCenter=33,
00081 LowerRight=65,
00082
00083 BaselineLeft=18,
00084 BaselineCenter=34,
00085 BaselineRight=66,
00086
00087 CenterLeft=20,
00088 CenterCenter=36,
00089 CenterRight=68,
00090
00091 UpperLeft=24,
00092 UpperCenter=40,
00093 UpperRight=72
00094 };
00095
00097 enum OutputCoordinates
00098 {
00099 WORLD=0,
00100 DISPLAY=1
00101 };
00102
00103
00105
00106 virtual void SetGravity( int gravity );
00107 vtkGetMacro(Gravity,int);
00109
00111
00113 vtkSetClampMacro(MaximumLabelFraction,double,0.,1.);
00114 vtkGetMacro(MaximumLabelFraction,double);
00116
00118
00120 vtkSetMacro(IteratorType,int);
00121 vtkGetMacro(IteratorType,int);
00123
00125
00126 vtkSetMacro(UseUnicodeStrings,bool);
00127 vtkGetMacro(UseUnicodeStrings,bool);
00128 vtkBooleanMacro(UseUnicodeStrings,bool);
00130
00131 virtual unsigned long GetMTime();
00132
00134
00138 vtkGetMacro(PositionsAsNormals,bool);
00139 vtkSetMacro(PositionsAsNormals,bool);
00140 vtkBooleanMacro(PositionsAsNormals,bool);
00142
00144
00146 vtkGetMacro(GeneratePerturbedLabelSpokes,bool);
00147 vtkSetMacro(GeneratePerturbedLabelSpokes,bool);
00148 vtkBooleanMacro(GeneratePerturbedLabelSpokes,bool);
00150
00152
00155 vtkGetMacro(UseDepthBuffer,bool);
00156 vtkSetMacro(UseDepthBuffer,bool);
00157 vtkBooleanMacro(UseDepthBuffer,bool);
00159
00161
00163 vtkGetMacro(OutputTraversedBounds,bool);
00164 vtkSetMacro(OutputTraversedBounds,bool);
00165 vtkBooleanMacro(OutputTraversedBounds,bool);
00167
00169
00172 vtkGetMacro(OutputCoordinateSystem,int);
00173 vtkSetClampMacro(OutputCoordinateSystem,int,WORLD,DISPLAY);
00174 void OutputCoordinateSystemWorld() { this->SetOutputCoordinateSystem( vtkLabelPlacer::WORLD ); }
00175 void OutputCoordinateSystemDisplay() { this->SetOutputCoordinateSystem( vtkLabelPlacer::DISPLAY ); }
00177
00178 protected:
00179 vtkLabelPlacer();
00180 virtual ~vtkLabelPlacer();
00181
00182 virtual void SetAnchorTransform( vtkCoordinate* );
00183
00184 int FillInputPortInformation( int port, vtkInformation* info );
00185 virtual int RequestData( vtkInformation* request,
00186 vtkInformationVector** inputVector, vtkInformationVector* outputVector );
00187
00188
00189 class Internal;
00190 Internal* Buckets;
00191
00192
00193 vtkRenderer* Renderer;
00194 vtkCoordinate* AnchorTransform;
00195 vtkSelectVisiblePoints* VisiblePoints;
00196 int Gravity;
00197 double MaximumLabelFraction;
00198 bool PositionsAsNormals;
00199 bool OutputTraversedBounds;
00200 bool GeneratePerturbedLabelSpokes;
00201 bool UseDepthBuffer;
00202 bool UseUnicodeStrings;
00203
00204 int LastRendererSize[2];
00205 double LastCameraPosition[3];
00206 double LastCameraFocalPoint[3];
00207 double LastCameraViewUp[3];
00208 double LastCameraParallelScale;
00209 int IteratorType;
00210 int OutputCoordinateSystem;
00211
00212 private:
00213 vtkLabelPlacer( const vtkLabelPlacer& );
00214 void operator = ( const vtkLabelPlacer& );
00215 };
00216
00217 #endif // __vtkLabelPlacer_h