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 "vtkActor2D.h" 00061 00062 class vtkActor; 00063 class vtkAppendPolyData; 00064 class vtkGlyph2D; 00065 class vtkGlyph3D; 00066 class vtkPolyData; 00067 class vtkPolyDataMapper2D; 00068 class vtkPolyDataMapper; 00069 class vtkTextActor; 00070 class vtkTextMapper; 00071 class vtkTextProperty; 00072 00073 class VTK_HYBRID_EXPORT vtkCaptionActor2D : public vtkActor2D 00074 { 00075 public: 00076 vtkTypeMacro(vtkCaptionActor2D,vtkActor2D); 00077 void PrintSelf(ostream& os, vtkIndent indent); 00078 00079 static vtkCaptionActor2D *New(); 00080 00082 00084 virtual void SetCaption(const char* caption); 00085 virtual char* GetCaption(); 00087 00089 00092 vtkWorldCoordinateMacro(AttachmentPoint); 00094 00096 00097 vtkSetMacro(Border,int); 00098 vtkGetMacro(Border,int); 00099 vtkBooleanMacro(Border,int); 00101 00103 00105 vtkSetMacro(Leader,int); 00106 vtkGetMacro(Leader,int); 00107 vtkBooleanMacro(Leader,int); 00109 00111 00113 vtkSetMacro(ThreeDimensionalLeader,int); 00114 vtkGetMacro(ThreeDimensionalLeader,int); 00115 vtkBooleanMacro(ThreeDimensionalLeader,int); 00117 00119 00123 virtual void SetLeaderGlyph(vtkPolyData*); 00124 vtkGetObjectMacro(LeaderGlyph,vtkPolyData); 00126 00128 00133 vtkSetClampMacro(LeaderGlyphSize,double,0.0,0.1); 00134 vtkGetMacro(LeaderGlyphSize,double); 00136 00138 00141 vtkSetClampMacro(MaximumLeaderGlyphSize,int,1,1000); 00142 vtkGetMacro(MaximumLeaderGlyphSize,int); 00144 00146 00148 vtkSetClampMacro(Padding, int, 0, 50); 00149 vtkGetMacro(Padding, int); 00151 00153 00155 vtkGetObjectMacro(TextActor,vtkTextActor); 00157 00159 00160 virtual void SetCaptionTextProperty(vtkTextProperty *p); 00161 vtkGetObjectMacro(CaptionTextProperty,vtkTextProperty); 00163 00166 void ShallowCopy(vtkProp *prop); 00167 00169 00171 vtkSetMacro(AttachEdgeOnly,int); 00172 vtkGetMacro(AttachEdgeOnly,int); 00173 vtkBooleanMacro(AttachEdgeOnly,int); 00175 00176 //BTX 00181 virtual void ReleaseGraphicsResources(vtkWindow *); 00182 00184 00187 int RenderOpaqueGeometry(vtkViewport* viewport); 00188 virtual int RenderTranslucentPolygonalGeometry(vtkViewport* ) {return 0;} 00189 int RenderOverlay(vtkViewport* viewport); 00191 00193 00194 virtual int HasTranslucentPolygonalGeometry(); 00195 //ETX 00197 00198 protected: 00199 vtkCaptionActor2D(); 00200 ~vtkCaptionActor2D(); 00201 00202 vtkCoordinate *AttachmentPointCoordinate; 00203 00204 int Border; 00205 int Leader; 00206 int ThreeDimensionalLeader; 00207 double LeaderGlyphSize; 00208 int MaximumLeaderGlyphSize; 00209 00210 vtkPolyData *LeaderGlyph; //what to put on the end of the leader 00211 00212 int Padding; 00213 int AttachEdgeOnly; 00214 00215 00216 private: 00217 vtkTextActor *TextActor; 00218 vtkTextProperty *CaptionTextProperty; 00219 00220 vtkPolyData *BorderPolyData; 00221 vtkPolyDataMapper2D *BorderMapper; 00222 vtkActor2D *BorderActor; 00223 00224 vtkPolyData *HeadPolyData; // single attachment point for glyphing 00225 vtkGlyph3D *HeadGlyph; // for 3D leader 00226 vtkPolyData *LeaderPolyData; // line represents the leader 00227 vtkAppendPolyData *AppendLeader; // append head and leader 00228 00229 // for 2D leader 00230 vtkCoordinate *MapperCoordinate2D; 00231 vtkPolyDataMapper2D *LeaderMapper2D; 00232 vtkActor2D *LeaderActor2D; 00233 00234 // for 3D leader 00235 vtkPolyDataMapper *LeaderMapper3D; 00236 vtkActor *LeaderActor3D; 00237 00238 private: 00239 vtkCaptionActor2D(const vtkCaptionActor2D&); // Not implemented. 00240 void operator=(const vtkCaptionActor2D&); // Not implemented. 00241 }; 00242 00243 00244 #endif 00245 00246 00247