VTK
dox/Rendering/Annotation/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 "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