VTK  9.0.1
vtkMoleculeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMoleculeMapper.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 =========================================================================*/
24 #ifndef vtkMoleculeMapper_h
25 #define vtkMoleculeMapper_h
26 
27 #include "vtkDomainsChemistryModule.h" // For export macro
28 #include "vtkMapper.h"
29 #include "vtkNew.h" // For vtkNew
30 
31 class vtkActor;
32 class vtkGlyph3DMapper;
33 class vtkIdTypeArray;
34 class vtkMolecule;
35 class vtkPeriodicTable;
36 class vtkPolyData;
37 class vtkPolyDataMapper;
38 class vtkRenderer;
39 class vtkSelection;
40 class vtkSphereSource;
41 class vtkTrivialProducer;
42 
43 class VTKDOMAINSCHEMISTRY_EXPORT vtkMoleculeMapper : public vtkMapper
44 {
45 public:
46  static vtkMoleculeMapper* New();
47  vtkTypeMacro(vtkMoleculeMapper, vtkMapper);
48  void PrintSelf(ostream& os, vtkIndent indent) override;
49 
51 
54  void SetInputData(vtkMolecule* in);
57 
69  void UseBallAndStickSettings();
70 
82  void UseVDWSpheresSettings();
83 
95  void UseLiquoriceStickSettings();
96 
111  void UseFastSettings();
112 
114 
117  vtkGetMacro(RenderAtoms, bool);
118  vtkSetMacro(RenderAtoms, bool);
119  vtkBooleanMacro(RenderAtoms, bool);
121 
123 
126  vtkGetMacro(RenderBonds, bool);
127  vtkSetMacro(RenderBonds, bool);
128  vtkBooleanMacro(RenderBonds, bool);
130 
132 
136  vtkGetMacro(RenderLattice, bool);
137  vtkSetMacro(RenderLattice, bool);
138  vtkBooleanMacro(RenderLattice, bool);
140 
141  enum
142  {
143  CovalentRadius = 0,
146  CustomArrayRadius
147  };
148 
150 
155  vtkGetMacro(AtomicRadiusType, int);
156  vtkSetMacro(AtomicRadiusType, int);
157  const char* GetAtomicRadiusTypeAsString();
158  void SetAtomicRadiusTypeToCovalentRadius() { this->SetAtomicRadiusType(CovalentRadius); }
159  void SetAtomicRadiusTypeToVDWRadius() { this->SetAtomicRadiusType(VDWRadius); }
160  void SetAtomicRadiusTypeToUnitRadius() { this->SetAtomicRadiusType(UnitRadius); }
161  void SetAtomicRadiusTypeToCustomArrayRadius() { this->SetAtomicRadiusType(CustomArrayRadius); }
163 
165 
170  vtkGetMacro(AtomicRadiusScaleFactor, float);
171  vtkSetMacro(AtomicRadiusScaleFactor, float);
173 
175 
179  vtkGetMacro(UseMultiCylindersForBonds, bool);
180  vtkSetMacro(UseMultiCylindersForBonds, bool);
181  vtkBooleanMacro(UseMultiCylindersForBonds, bool);
183 
184  enum
185  {
186  SingleColor = 0,
187  DiscreteByAtom
188  };
189 
191 
201  vtkGetMacro(BondColorMode, int);
202  vtkSetClampMacro(BondColorMode, int, SingleColor, DiscreteByAtom);
203  void SetBondColorModeToSingleColor() { this->SetBondColorMode(SingleColor); }
204  void SetBondColorModeToDiscreteByAtom() { this->SetBondColorMode(DiscreteByAtom); }
205  const char* GetBondColorModeAsString();
207 
209 
218  vtkGetMacro(AtomColorMode, int);
219  vtkSetClampMacro(AtomColorMode, int, SingleColor, DiscreteByAtom);
221 
223 
227  vtkGetVector3Macro(AtomColor, unsigned char);
228  vtkSetVector3Macro(AtomColor, unsigned char);
230 
232 
236  vtkGetVector3Macro(BondColor, unsigned char);
237  vtkSetVector3Macro(BondColor, unsigned char);
239 
241 
244  vtkGetMacro(BondRadius, float);
245  vtkSetMacro(BondRadius, float);
247 
249 
253  vtkGetVector3Macro(LatticeColor, unsigned char);
254  vtkSetVector3Macro(LatticeColor, unsigned char);
256 
258 
262  virtual void GetSelectedAtomsAndBonds(
263  vtkSelection* selection, vtkIdTypeArray* atomIds, vtkIdTypeArray* bondIds);
264  virtual void GetSelectedAtoms(vtkSelection* selection, vtkIdTypeArray* atomIds)
265  {
266  this->GetSelectedAtomsAndBonds(selection, atomIds, nullptr);
267  }
268  virtual void GetSelectedBonds(vtkSelection* selection, vtkIdTypeArray* bondIds)
269  {
270  this->GetSelectedAtomsAndBonds(selection, nullptr, bondIds);
271  }
273 
275 
278  void Render(vtkRenderer*, vtkActor*) override;
279  void ReleaseGraphicsResources(vtkWindow*) override;
280  double* GetBounds() override;
281  void GetBounds(double bounds[6]) override { vtkAbstractMapper3D::GetBounds(bounds); }
282  int FillInputPortInformation(int port, vtkInformation* info) override;
283  bool GetSupportsSelection() override { return true; }
285 
287 
291  vtkGetStringMacro(AtomicRadiusArrayName);
292  vtkSetStringMacro(AtomicRadiusArrayName);
294 
299  virtual void SetMapScalars(bool map);
300 
304  vtkPeriodicTable* GetPeriodicTable() { return this->PeriodicTable; }
305 
306 protected:
308  ~vtkMoleculeMapper() override;
309 
311 
319  unsigned char AtomColor[3];
321 
323 
329  float BondRadius;
330  unsigned char BondColor[3];
332 
334 
338  void GlyphRender(vtkRenderer* ren, vtkActor* act);
339 
341 
349  virtual void UpdateGlyphPolyData();
350  virtual void UpdateAtomGlyphPolyData();
351  virtual void UpdateBondGlyphPolyData();
353 
355 
361 
362  unsigned char LatticeColor[3];
365  virtual void UpdateLatticePolyData();
366 
371 
372 private:
373  vtkMoleculeMapper(const vtkMoleculeMapper&) = delete;
374  void operator=(const vtkMoleculeMapper&) = delete;
375 };
376 
377 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:36
vtkMoleculeMapper::SetAtomicRadiusTypeToCovalentRadius
void SetAtomicRadiusTypeToCovalentRadius()
Definition: vtkMoleculeMapper.h:158
vtkMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMoleculeMapper::RenderLattice
bool RenderLattice
Definition: vtkMoleculeMapper.h:333
vtkMoleculeMapper::GetSupportsSelection
bool GetSupportsSelection() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkMoleculeMapper.h:283
vtkMoleculeMapper::SetBondColorModeToSingleColor
void SetBondColorModeToSingleColor()
Definition: vtkMoleculeMapper.h:203
vtkAbstractMapper3D::GetBounds
virtual double * GetBounds()=0
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkMoleculeMapper::PeriodicTable
vtkNew< vtkPeriodicTable > PeriodicTable
Periodic table for lookups.
Definition: vtkMoleculeMapper.h:370
vtkAlgorithm::FillInputPortInformation
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
vtkMoleculeMapper::SetAtomicRadiusTypeToVDWRadius
void SetAtomicRadiusTypeToVDWRadius()
Definition: vtkMoleculeMapper.h:159
vtkMoleculeMapper::SetAtomicRadiusTypeToCustomArrayRadius
void SetAtomicRadiusTypeToCustomArrayRadius()
Definition: vtkMoleculeMapper.h:161
vtkMoleculeMapper::AtomicRadiusScaleFactor
float AtomicRadiusScaleFactor
Definition: vtkMoleculeMapper.h:316
vtkMoleculeMapper::GlyphDataInitialized
bool GlyphDataInitialized
Definition: vtkMoleculeMapper.h:348
vtkSelection
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:57
vtkMoleculeMapper::BondGlyphPolyData
vtkNew< vtkPolyData > BondGlyphPolyData
Definition: vtkMoleculeMapper.h:346
vtkMoleculeMapper::AtomicRadiusArrayName
char * AtomicRadiusArrayName
Definition: vtkMoleculeMapper.h:317
vtkMoleculeMapper::LatticePolyData
vtkNew< vtkPolyData > LatticePolyData
Definition: vtkMoleculeMapper.h:363
vtkTrivialProducer
Producer for stand-alone data objects.
Definition: vtkTrivialProducer.h:34
vtkMoleculeMapper::RenderAtoms
bool RenderAtoms
Customize atom rendering.
Definition: vtkMoleculeMapper.h:314
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkMoleculeMapper::UseMultiCylindersForBonds
bool UseMultiCylindersForBonds
Definition: vtkMoleculeMapper.h:328
vtkMoleculeMapper::GetSelectedBonds
virtual void GetSelectedBonds(vtkSelection *selection, vtkIdTypeArray *bondIds)
Definition: vtkMoleculeMapper.h:268
vtkMapper.h
vtkMoleculeMapper::AtomColorMode
int AtomColorMode
Definition: vtkMoleculeMapper.h:318
vtkMoleculeMapper::UnitRadius
@ UnitRadius
Definition: vtkMoleculeMapper.h:145
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkMapper::Render
virtual void Render(vtkRenderer *ren, vtkActor *a)=0
Method initiates the mapping process.
vtkMoleculeMapper::AtomGlyphPolyData
vtkNew< vtkPolyData > AtomGlyphPolyData
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:344
vtkMoleculeMapper::LatticeMapper
vtkNew< vtkPolyDataMapper > LatticeMapper
Definition: vtkMoleculeMapper.h:364
vtkMoleculeMapper::AtomGlyphPointOutput
vtkNew< vtkTrivialProducer > AtomGlyphPointOutput
Definition: vtkMoleculeMapper.h:345
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:40
vtkMapper
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:80
vtkGlyph3DMapper
vtkGlyph3D on the GPU.
Definition: vtkGlyph3DMapper.h:39
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
vtkMoleculeMapper::GetPeriodicTable
vtkPeriodicTable * GetPeriodicTable()
Accessor to internal structure.
Definition: vtkMoleculeMapper.h:304
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkMoleculeMapper::AtomicRadiusType
int AtomicRadiusType
Definition: vtkMoleculeMapper.h:315
vtkMoleculeMapper::SetAtomicRadiusTypeToUnitRadius
void SetAtomicRadiusTypeToUnitRadius()
Definition: vtkMoleculeMapper.h:160
vtkMoleculeMapper::BondRadius
float BondRadius
Definition: vtkMoleculeMapper.h:329
vtkNew< vtkPolyData >
vtkMapper::GetInput
vtkDataSet * GetInput()
Get the input as a vtkDataSet.
vtkMolecule
class describing a molecule
Definition: vtkMolecule.h:91
vtkMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
Definition: vtkMapper.h:108
vtkPeriodicTable
Access to information about the elements.
Definition: vtkPeriodicTable.h:38
vtkMoleculeMapper
Mapper that draws vtkMolecule objects.
Definition: vtkMoleculeMapper.h:43
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkMapper::GetBounds
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkMoleculeMapper::AtomGlyphMapper
vtkNew< vtkGlyph3DMapper > AtomGlyphMapper
Internal mappers.
Definition: vtkMoleculeMapper.h:358
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkAlgorithm::New
static vtkAlgorithm * New()
vtkMoleculeMapper::GetSelectedAtoms
virtual void GetSelectedAtoms(vtkSelection *selection, vtkIdTypeArray *atomIds)
Definition: vtkMoleculeMapper.h:264
vtkMoleculeMapper::VDWRadius
@ VDWRadius
Definition: vtkMoleculeMapper.h:144
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkNew.h
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:67
vtkMoleculeMapper::SetBondColorModeToDiscreteByAtom
void SetBondColorModeToDiscreteByAtom()
Definition: vtkMoleculeMapper.h:204
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkMoleculeMapper::BondGlyphPointOutput
vtkNew< vtkTrivialProducer > BondGlyphPointOutput
Definition: vtkMoleculeMapper.h:347
vtkMoleculeMapper::GetBounds
void GetBounds(double bounds[6]) override
Get the bounds for this mapper as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
Definition: vtkMoleculeMapper.h:281
vtkMoleculeMapper::BondColorMode
int BondColorMode
Definition: vtkMoleculeMapper.h:327
vtkMoleculeMapper::RenderBonds
bool RenderBonds
Customize bond rendering.
Definition: vtkMoleculeMapper.h:326
vtkMoleculeMapper::BondGlyphMapper
vtkNew< vtkGlyph3DMapper > BondGlyphMapper
Definition: vtkMoleculeMapper.h:359