VTK  9.3.1
vtkFlagpoleLabel.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
16 #ifndef vtkFlagpoleLabel_h
17 #define vtkFlagpoleLabel_h
18 
19 #include "vtkActor.h"
20 #include "vtkNew.h" // For.... vtkNew!
21 #include "vtkRenderingCoreModule.h" // For export macro
22 #include "vtkSmartPointer.h" // For.... vtkSmartPointer!
23 
24 VTK_ABI_NAMESPACE_BEGIN
25 class vtkActor;
26 class vtkImageData;
27 class vtkLineSource;
28 class vtkPolyData;
29 class vtkPolyDataMapper;
30 class vtkRenderer;
31 class vtkTextProperty;
32 class vtkTextRenderer;
33 
34 class VTKRENDERINGCORE_EXPORT vtkFlagpoleLabel : public vtkActor
35 {
36 public:
37  static vtkFlagpoleLabel* New();
38  vtkTypeMacro(vtkFlagpoleLabel, vtkActor);
39  void PrintSelf(ostream& os, vtkIndent indent) override;
40 
45  void SetInput(const char* in);
46  vtkGetStringMacro(Input);
53  void SetTextProperty(vtkTextProperty* tprop);
54  vtkGetObjectMacro(TextProperty, vtkTextProperty);
61  void SetForceOpaque(bool opaque) override;
62  bool GetForceOpaque() VTK_FUTURE_CONST override;
63  void ForceOpaqueOn() override;
64  void ForceOpaqueOff() override;
65  void SetForceTranslucent(bool trans) override;
66  bool GetForceTranslucent() VTK_FUTURE_CONST override;
67  void ForceTranslucentOn() override;
68  void ForceTranslucentOff() override;
74  vtkTypeBool HasTranslucentPolygonalGeometry() override;
75 
79  int RenderOpaqueGeometry(vtkViewport* vp) override;
80 
85  int RenderTranslucentPolygonalGeometry(vtkViewport* vp) override;
86 
87  void ReleaseGraphicsResources(vtkWindow* win) override;
88  double* GetBounds() override;
89  using Superclass::GetBounds;
90 
94  vtkGetVector3Macro(BasePosition, double);
95  void SetBasePosition(double x, double y, double z);
96 
100  vtkGetVector3Macro(TopPosition, double);
101  void SetTopPosition(double x, double y, double z);
102 
108  vtkGetMacro(FlagSize, double);
109  vtkSetMacro(FlagSize, double);
110 
111 protected:
113  ~vtkFlagpoleLabel() override;
114 
115  bool InputIsValid();
116 
117  void UpdateInternals(vtkRenderer* ren);
118 
119  bool TextureIsStale(vtkRenderer* ren);
120  void GenerateTexture(vtkRenderer* ren);
121 
122  bool QuadIsStale(vtkRenderer* ren);
123  void GenerateQuad(vtkRenderer* ren);
124 
125  // Used by the opaque pass to tell the translucent pass not to render.
126  void Invalidate();
127  bool IsValid();
128 
129  // Used to sync the internal actor's state.
130  void PreRender();
131 
132  // Text specification:
133  char* Input;
134  vtkTextProperty* TextProperty;
135 
136  // Cached metadata to determine if things need rebuildin'
137  int RenderedDPI;
138  vtkTimeStamp InputMTime;
139 
140  // We cache this so we can recompute the bounds between renders, if needed.
141  vtkSmartPointer<vtkRenderer> RenderedRenderer;
142 
143  // Rendering stuffies
144  vtkNew<vtkTextRenderer> TextRenderer;
148  vtkNew<vtkActor> QuadActor;
149 
151  vtkNew<vtkLineSource> LineSource;
152  vtkNew<vtkActor> PoleActor;
153 
154  double TopPosition[3];
155  double BasePosition[3];
156  double FlagSize;
157 
158 private:
159  vtkFlagpoleLabel(const vtkFlagpoleLabel&) = delete;
160  void operator=(const vtkFlagpoleLabel&) = delete;
161 };
162 
163 VTK_ABI_NAMESPACE_END
164 #endif // vtkFlagpoleLabel_h
void GetBounds(T a, double bds[6])
virtual void SetForceOpaque(bool)
Force the actor to be treated as opaque or translucent.
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:40
abstract specification for Viewports
Definition: vtkViewport.h:44
record modification and/or execution time
Definition: vtkTimeStamp.h:24
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Renders a flagpole (line) with a label at the top that faces the camera.
virtual bool GetForceOpaque()
Force the actor to be treated as opaque or translucent.
abstract specification for renderers
Definition: vtkRenderer.h:61
Hold a reference to a vtkObjectBase instance.
Definition: vtkMeta.h:23
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:38
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:79
static vtkActor * New()
Creates an actor with the following defaults: origin(0,0,0) position=(0,0,0) scale=(1,1,1) visibility=1 pickable=1 dragable=1 orientation=(0,0,0).
int vtkTypeBool
Definition: vtkABI.h:64
window superclass for vtkRenderWindow
Definition: vtkWindow.h:27
a simple class to control print indentation
Definition: vtkIndent.h:28
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
represent text properties.
create a line defined by two end points
Definition: vtkLineSource.h:52
map vtkPolyData to graphics primitives
Interface for generating images and path data from string data, using multiple backends.
Allocate and hold a VTK object.
Definition: vtkMeta.h:21