VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkCaptionActor2D.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 =========================================================================*/ 00057 #ifndef __vtkCaptionActor2D_h 00058 #define __vtkCaptionActor2D_h 00059 00060 #include "vtkRenderingAnnotationModule.h" // For export macro 00061 #include "vtkActor2D.h" 00062 00063 class vtkActor; 00064 class vtkAlgorithmOutput; 00065 class vtkAppendPolyData; 00066 class vtkCaptionActor2DConnection; 00067 class vtkGlyph2D; 00068 class vtkGlyph3D; 00069 class vtkPolyData; 00070 class vtkPolyDataMapper2D; 00071 class vtkPolyDataMapper; 00072 class vtkTextActor; 00073 class vtkTextMapper; 00074 class vtkTextProperty; 00075 00076 class VTKRENDERINGANNOTATION_EXPORT vtkCaptionActor2D : public vtkActor2D 00077 { 00078 public: 00079 vtkTypeMacro(vtkCaptionActor2D,vtkActor2D); 00080 void PrintSelf(ostream& os, vtkIndent indent); 00081 00082 static vtkCaptionActor2D *New(); 00083 00085 00087 virtual void SetCaption(const char* caption); 00088 virtual char* GetCaption(); 00090 00092 00095 vtkWorldCoordinateMacro(AttachmentPoint); 00097 00099 00100 vtkSetMacro(Border,int); 00101 vtkGetMacro(Border,int); 00102 vtkBooleanMacro(Border,int); 00104 00106 00108 vtkSetMacro(Leader,int); 00109 vtkGetMacro(Leader,int); 00110 vtkBooleanMacro(Leader,int); 00112 00114 00116 vtkSetMacro(ThreeDimensionalLeader,int); 00117 vtkGetMacro(ThreeDimensionalLeader,int); 00118 vtkBooleanMacro(ThreeDimensionalLeader,int); 00120 00122 00129 virtual void SetLeaderGlyphData(vtkPolyData*); 00130 virtual void SetLeaderGlyphConnection(vtkAlgorithmOutput*); 00131 virtual vtkPolyData* GetLeaderGlyph(); 00133 00135 00140 vtkSetClampMacro(LeaderGlyphSize,double,0.0,0.1); 00141 vtkGetMacro(LeaderGlyphSize,double); 00143 00145 00148 vtkSetClampMacro(MaximumLeaderGlyphSize,int,1,1000); 00149 vtkGetMacro(MaximumLeaderGlyphSize,int); 00151 00153 00155 vtkSetClampMacro(Padding, int, 0, 50); 00156 vtkGetMacro(Padding, int); 00158 00160 00162 vtkGetObjectMacro(TextActor,vtkTextActor); 00164 00166 00167 virtual void SetCaptionTextProperty(vtkTextProperty *p); 00168 vtkGetObjectMacro(CaptionTextProperty,vtkTextProperty); 00170 00173 void ShallowCopy(vtkProp *prop); 00174 00176 00178 vtkSetMacro(AttachEdgeOnly,int); 00179 vtkGetMacro(AttachEdgeOnly,int); 00180 vtkBooleanMacro(AttachEdgeOnly,int); 00182 00183 //BTX 00188 virtual void ReleaseGraphicsResources(vtkWindow *); 00189 00191 00194 int RenderOpaqueGeometry(vtkViewport* viewport); 00195 virtual int RenderTranslucentPolygonalGeometry(vtkViewport* ) {return 0;} 00196 int RenderOverlay(vtkViewport* viewport); 00198 00200 00201 virtual int HasTranslucentPolygonalGeometry(); 00202 //ETX 00204 00205 protected: 00206 vtkCaptionActor2D(); 00207 ~vtkCaptionActor2D(); 00208 00209 vtkCoordinate *AttachmentPointCoordinate; 00210 00211 int Border; 00212 int Leader; 00213 int ThreeDimensionalLeader; 00214 double LeaderGlyphSize; 00215 int MaximumLeaderGlyphSize; 00216 00217 int Padding; 00218 int AttachEdgeOnly; 00219 00220 00221 private: 00222 vtkTextActor *TextActor; 00223 vtkTextProperty *CaptionTextProperty; 00224 00225 vtkPolyData *BorderPolyData; 00226 vtkPolyDataMapper2D *BorderMapper; 00227 vtkActor2D *BorderActor; 00228 00229 vtkPolyData *HeadPolyData; // single attachment point for glyphing 00230 vtkGlyph3D *HeadGlyph; // for 3D leader 00231 vtkPolyData *LeaderPolyData; // line represents the leader 00232 vtkAppendPolyData *AppendLeader; // append head and leader 00233 00234 // for 2D leader 00235 vtkCoordinate *MapperCoordinate2D; 00236 vtkPolyDataMapper2D *LeaderMapper2D; 00237 vtkActor2D *LeaderActor2D; 00238 00239 // for 3D leader 00240 vtkPolyDataMapper *LeaderMapper3D; 00241 vtkActor *LeaderActor3D; 00242 00243 vtkCaptionActor2DConnection* LeaderGlyphConnectionHolder; 00244 00245 private: 00246 vtkCaptionActor2D(const vtkCaptionActor2D&); // Not implemented. 00247 void operator=(const vtkCaptionActor2D&); // Not implemented. 00248 }; 00249 00250 00251 #endif 00252 00253 00254