VTK
vtkGlyph3DMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGlyph3DMapper.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 =========================================================================*/
31 #ifndef vtkGlyph3DMapper_h
32 #define vtkGlyph3DMapper_h
33 
34 #include "vtkRenderingCoreModule.h" // For export macro
35 #include "vtkMapper.h"
36 #include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
37 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
38 
40 class vtkDataObjectTree;
41 
42 class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
43 {
44 public:
45  static vtkGlyph3DMapper* New();
46  vtkTypeMacro(vtkGlyph3DMapper, vtkMapper);
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
50  {
51  SCALE = 0,
52  SOURCE_INDEX = 1,
53  MASK = 2,
54  ORIENTATION = 3,
55  SELECTIONID = 4
56  };
57 
63  void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
65  { this->SetSourceConnection(0, algOutput); }
66 
72  void SetInputData(vtkDataObject *);
73 
77  void SetSourceData(int idx, vtkPolyData *pd);
78 
87  void SetSourceTableTree(vtkDataObjectTree *tree);
88 
95  void SetSourceData(vtkPolyData *pd);
96 
100  vtkPolyData *GetSource(int idx = 0);
101 
105  vtkDataObjectTree* GetSourceTableTree();
106 
108 
113  vtkSetMacro(Scaling, bool);
114  vtkBooleanMacro(Scaling, bool);
115  vtkGetMacro(Scaling, bool);
117 
119 
125  vtkSetMacro(ScaleMode, int);
126  vtkGetMacro(ScaleMode, int);
128 
130 
134  vtkSetMacro(ScaleFactor, double);
135  vtkGetMacro(ScaleFactor, double);
137 
139  {
140  NO_DATA_SCALING = 0,
141  SCALE_BY_MAGNITUDE = 1,
142  SCALE_BY_COMPONENTS = 2
143  };
144 
146  { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
148  { this->SetScaleMode(SCALE_BY_COMPONENTS); }
150  { this->SetScaleMode(NO_DATA_SCALING); }
151  const char *GetScaleModeAsString();
152 
154 
157  vtkSetVector2Macro(Range, double);
158  vtkGetVectorMacro(Range, double, 2);
160 
162 
167  vtkSetMacro(Orient, bool);
168  vtkGetMacro(Orient, bool);
169  vtkBooleanMacro(Orient, bool);
171 
173 
178  vtkSetClampMacro(OrientationMode, int, DIRECTION, ROTATION);
179  vtkGetMacro(OrientationMode, int);
181  { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
183  { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
184  const char* GetOrientationModeAsString();
186 
188  {
189  DIRECTION=0,
190  ROTATION=1
191  };
192 
194 
197  vtkSetMacro(Clamping, bool);
198  vtkGetMacro(Clamping, bool);
199  vtkBooleanMacro(Clamping, bool);
201 
203 
209  vtkSetMacro(SourceIndexing, bool);
210  vtkGetMacro(SourceIndexing, bool);
211  vtkBooleanMacro(SourceIndexing, bool);
213 
215 
220  vtkSetMacro(UseSourceTableTree, bool)
221  vtkGetMacro(UseSourceTableTree, bool)
222  vtkBooleanMacro(UseSourceTableTree, bool)
223 
224  //@{
229  vtkSetMacro(UseSelectionIds, bool);
230  vtkBooleanMacro(UseSelectionIds, bool);
231  vtkGetMacro(UseSelectionIds, bool);
233 
237  double *GetBounds() override;
238 
242  void GetBounds(double bounds[6]) override;
243 
247  void Render(vtkRenderer *ren, vtkActor *act) override;
248 
250 
260  VTK_LEGACY(void SetNestedDisplayLists(bool));
261  VTK_LEGACY(bool GetNestedDisplayLists());
262  VTK_LEGACY(void NestedDisplayListsOn());
263  VTK_LEGACY(void NestedDisplayListsOff());
265 
267 
275  vtkSetMacro(Masking, bool);
276  vtkGetMacro(Masking, bool);
277  vtkBooleanMacro(Masking, bool);
279 
286  void SetMaskArray(const char* maskarrayname);
287 
300  void SetMaskArray(int fieldAttributeType);
301 
317  void SetOrientationArray(const char* orientationarrayname);
318 
340  void SetOrientationArray(int fieldAttributeType);
341 
347  void SetScaleArray(const char* scalarsarrayname);
348 
354  void SetScaleArray(int fieldAttributeType);
355 
362  void SetSourceIndexArray(const char* arrayname);
363 
370  void SetSourceIndexArray(int fieldAttributeType);
371 
381  void SetSelectionIdArray(const char* selectionIdArrayName);
382 
392  void SetSelectionIdArray(int fieldAttributeType);
393 
395 
400  vtkSetMacro(SelectionColorId, unsigned int);
401  vtkGetMacro(SelectionColorId, unsigned int);
403 
405 
414  virtual void SetBlockAttributes(vtkCompositeDataDisplayAttributes* attr);
415  vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
417 
424  bool GetSupportsSelection() override
425  { return true; }
426 
427 protected:
429  ~vtkGlyph3DMapper() override;
430 
431  virtual int RequestUpdateExtent(vtkInformation *request,
432  vtkInformationVector **inInfo,
433  vtkInformationVector *outInfo);
434 
435  int FillInputPortInformation(int port, vtkInformation *info) override;
436 
437  vtkPolyData *GetSource(int idx, vtkInformationVector *sourceInfo);
438  vtkPolyData *GetSourceTable(int idx, vtkInformationVector *sourceInfo);
439 
441 
444  vtkDataArray* GetMaskArray(vtkDataSet* input);
445  vtkDataArray* GetSourceIndexArray(vtkDataSet* input);
446  vtkDataArray* GetOrientationArray(vtkDataSet* input);
447  vtkDataArray* GetScaleArray(vtkDataSet* input);
448  vtkDataArray* GetSelectionIdArray(vtkDataSet* input);
449  vtkUnsignedCharArray* GetColors(vtkDataSet* input);
451 
453  bool Scaling; // Determine whether scaling of geometry is performed
454  double ScaleFactor; // Scale factor to use to scale geometry
455  int ScaleMode; // Scale by scalar value or vector magnitude
456 
457  double Range[2]; // Range to use to perform scalar scaling
458  bool Orient; // boolean controls whether to "orient" data
459  bool Clamping; // whether to clamp scale factor
460  bool SourceIndexing; // Enable/disable indexing into the glyph table
461  bool UseSelectionIds; // Enable/disable custom pick ids
462  bool Masking; // Enable/disable masking.
464 #if !defined(VTK_LEGACY_REMOVE)
465  bool NestedDisplayLists; // boolean
466 #endif
467 
468  bool UseSourceTableTree; // Map DataObjectTree glyph source into table
469 
470  unsigned int SelectionColorId;
471 
472 private:
473  vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
474  void operator=(const vtkGlyph3DMapper&) = delete;
475 
479  bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
480 
481 };
482 
483 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
provides implementation for most abstract methods in the superclass vtkCompositeDataSet ...
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
Rendering attributes for a multi-block dataset.
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
abstract specification for renderers
Definition: vtkRenderer.h:63
vtkGlyph3D on the GPU.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
Proxy object to connect input/output ports.
void SetOrientationModeToDirection()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
void SetOrientationModeToRotation()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
void SetScaleModeToScaleByVectorComponents()
a simple class to control print indentation
Definition: vtkIndent.h:39
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:83
bool GetSupportsSelection() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
dynamic, self-adjusting array of unsigned char
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkCompositeDataDisplayAttributes * BlockAttributes
void SetScaleModeToNoDataScaling()
void SetScaleModeToScaleByMagnitude()
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax, zmin,zmax).
unsigned int SelectionColorId
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
general representation of visualization data
Definition: vtkDataObject.h:64
virtual void Render(vtkRenderer *ren, vtkActor *a)=0
Method initiates the mapping process.