VTK
dox/Hybrid/vtkCaptionActor2D.h
Go to the documentation of this file.
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