VTK  9.2.6
vtkGlyphSource2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGlyphSource2D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
36 #ifndef vtkGlyphSource2D_h
37 #define vtkGlyphSource2D_h
38 
39 #include "vtkFiltersSourcesModule.h" // For export macro
40 #include "vtkPolyDataAlgorithm.h"
41 
42 #define VTK_NO_GLYPH 0
43 #define VTK_VERTEX_GLYPH 1
44 #define VTK_DASH_GLYPH 2
45 #define VTK_CROSS_GLYPH 3
46 #define VTK_THICKCROSS_GLYPH 4
47 #define VTK_TRIANGLE_GLYPH 5
48 #define VTK_SQUARE_GLYPH 6
49 #define VTK_CIRCLE_GLYPH 7
50 #define VTK_DIAMOND_GLYPH 8
51 #define VTK_ARROW_GLYPH 9
52 #define VTK_THICKARROW_GLYPH 10
53 #define VTK_HOOKEDARROW_GLYPH 11
54 #define VTK_EDGEARROW_GLYPH 12
55 
56 #define VTK_MAX_CIRCLE_RESOLUTION 1024
57 
58 class vtkPoints;
60 class vtkCellArray;
61 
62 class VTKFILTERSSOURCES_EXPORT vtkGlyphSource2D : public vtkPolyDataAlgorithm
63 {
64 public:
66  void PrintSelf(ostream& os, vtkIndent indent) override;
67 
72  static vtkGlyphSource2D* New();
73 
75 
78  vtkSetVector3Macro(Center, double);
79  vtkGetVectorMacro(Center, double, 3);
81 
83 
87  vtkSetClampMacro(Scale, double, 0.0, VTK_DOUBLE_MAX);
88  vtkGetMacro(Scale, double);
90 
92 
96  vtkSetClampMacro(Scale2, double, 0.0, VTK_DOUBLE_MAX);
97  vtkGetMacro(Scale2, double);
99 
101 
104  vtkSetVector3Macro(Color, double);
105  vtkGetVectorMacro(Color, double, 3);
107 
109 
114  vtkSetMacro(Filled, vtkTypeBool);
115  vtkGetMacro(Filled, vtkTypeBool);
116  vtkBooleanMacro(Filled, vtkTypeBool);
118 
120 
125  vtkSetMacro(Dash, vtkTypeBool);
126  vtkGetMacro(Dash, vtkTypeBool);
127  vtkBooleanMacro(Dash, vtkTypeBool);
129 
131 
136  vtkSetMacro(Cross, vtkTypeBool);
137  vtkGetMacro(Cross, vtkTypeBool);
138  vtkBooleanMacro(Cross, vtkTypeBool);
140 
142 
147  vtkSetMacro(RotationAngle, double);
148  vtkGetMacro(RotationAngle, double);
150 
152 
155  vtkSetClampMacro(Resolution, int, 3, VTK_MAX_CIRCLE_RESOLUTION);
156  vtkGetMacro(Resolution, int);
158 
160 
163  vtkSetClampMacro(GlyphType, int, VTK_NO_GLYPH, VTK_EDGEARROW_GLYPH);
164  vtkGetMacro(GlyphType, int);
165  void SetGlyphTypeToNone() { this->SetGlyphType(VTK_NO_GLYPH); }
166  void SetGlyphTypeToVertex() { this->SetGlyphType(VTK_VERTEX_GLYPH); }
167  void SetGlyphTypeToDash() { this->SetGlyphType(VTK_DASH_GLYPH); }
168  void SetGlyphTypeToCross() { this->SetGlyphType(VTK_CROSS_GLYPH); }
169  void SetGlyphTypeToThickCross() { this->SetGlyphType(VTK_THICKCROSS_GLYPH); }
170  void SetGlyphTypeToTriangle() { this->SetGlyphType(VTK_TRIANGLE_GLYPH); }
171  void SetGlyphTypeToSquare() { this->SetGlyphType(VTK_SQUARE_GLYPH); }
172  void SetGlyphTypeToCircle() { this->SetGlyphType(VTK_CIRCLE_GLYPH); }
173  void SetGlyphTypeToDiamond() { this->SetGlyphType(VTK_DIAMOND_GLYPH); }
174  void SetGlyphTypeToArrow() { this->SetGlyphType(VTK_ARROW_GLYPH); }
175  void SetGlyphTypeToThickArrow() { this->SetGlyphType(VTK_THICKARROW_GLYPH); }
176  void SetGlyphTypeToHookedArrow() { this->SetGlyphType(VTK_HOOKEDARROW_GLYPH); }
177  void SetGlyphTypeToEdgeArrow() { this->SetGlyphType(VTK_EDGEARROW_GLYPH); }
179 
181 
186  vtkSetMacro(OutputPointsPrecision, int);
187  vtkGetMacro(OutputPointsPrecision, int);
189 
190 protected:
192  ~vtkGlyphSource2D() override = default;
193 
195 
196  double Center[3];
197  double Scale;
198  double Scale2;
199  double Color[3];
207 
208  void TransformGlyph(vtkPoints* pts);
209  void ConvertColor();
210  unsigned char RGB[3];
211 
212  void CreateVertex(vtkPoints* pts, vtkCellArray* verts, vtkUnsignedCharArray* colors);
213  void CreateDash(vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys,
214  vtkUnsignedCharArray* colors, double scale);
215  void CreateCross(vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys,
216  vtkUnsignedCharArray* colors, double scale);
217  void CreateThickCross(
218  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
219  void CreateTriangle(
220  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
221  void CreateSquare(
222  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
223  void CreateCircle(
224  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
225  void CreateDiamond(
226  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
227  void CreateArrow(
228  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
229  void CreateThickArrow(
230  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
231  void CreateHookedArrow(
232  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
233  void CreateEdgeArrow(
234  vtkPoints* pts, vtkCellArray* lines, vtkCellArray* polys, vtkUnsignedCharArray* colors);
235 
236 private:
237  vtkGlyphSource2D(const vtkGlyphSource2D&) = delete;
238  void operator=(const vtkGlyphSource2D&) = delete;
239 };
240 
241 #endif
#define VTK_HOOKEDARROW_GLYPH
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
Store vtkAlgorithm input/output information.
#define VTK_EDGEARROW_GLYPH
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
void SetGlyphTypeToVertex()
Specify the type of glyph to generate.
void SetGlyphTypeToDash()
Specify the type of glyph to generate.
#define VTK_MAX_CIRCLE_RESOLUTION
#define VTK_THICKCROSS_GLYPH
void SetGlyphTypeToThickCross()
Specify the type of glyph to generate.
void SetGlyphTypeToCircle()
Specify the type of glyph to generate.
#define VTK_NO_GLYPH
void SetGlyphTypeToTriangle()
Specify the type of glyph to generate.
static vtkPolyDataAlgorithm * New()
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SQUARE_GLYPH
Superclass for algorithms that produce only polydata as output.
void SetGlyphTypeToNone()
Specify the type of glyph to generate.
#define VTK_VERTEX_GLYPH
void SetGlyphTypeToHookedArrow()
Specify the type of glyph to generate.
a simple class to control print indentation
Definition: vtkIndent.h:39
#define VTK_DIAMOND_GLYPH
void SetGlyphTypeToCross()
Specify the type of glyph to generate.
void SetGlyphTypeToEdgeArrow()
Specify the type of glyph to generate.
#define VTK_ARROW_GLYPH
dynamic, self-adjusting array of unsigned char
void SetGlyphTypeToSquare()
Specify the type of glyph to generate.
object to represent cell connectivity
Definition: vtkCellArray.h:186
#define VTK_CROSS_GLYPH
#define VTK_CIRCLE_GLYPH
#define VTK_DASH_GLYPH
Store zero or more vtkInformation instances.
#define VTK_TRIANGLE_GLYPH
create 2D glyphs represented by vtkPolyData
void SetGlyphTypeToDiamond()
Specify the type of glyph to generate.
void SetGlyphTypeToThickArrow()
Specify the type of glyph to generate.
#define VTK_THICKARROW_GLYPH
represent and manipulate 3D points
Definition: vtkPoints.h:39
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetGlyphTypeToArrow()
Specify the type of glyph to generate.