VTK  9.1.0
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 =========================================================================*/
43 #ifndef vtkMoleculeMapper_h
44 #define vtkMoleculeMapper_h
45 
46 #include "vtkDomainsChemistryModule.h" // For export macro
47 #include "vtkMapper.h"
48 #include "vtkNew.h" // For vtkNew
49 
50 class vtkActor;
51 class vtkGlyph3DMapper;
52 class vtkIdTypeArray;
53 class vtkMolecule;
54 class vtkPeriodicTable;
55 class vtkPolyData;
56 class vtkPolyDataMapper;
57 class vtkRenderer;
58 class vtkSelection;
59 class vtkSphereSource;
60 class vtkTrivialProducer;
61 
62 class VTKDOMAINSCHEMISTRY_EXPORT vtkMoleculeMapper : public vtkMapper
63 {
64 public:
66  vtkTypeMacro(vtkMoleculeMapper, vtkMapper);
67  void PrintSelf(ostream& os, vtkIndent indent) override;
68 
70 
76 
89 
102 
115 
131 
133 
136  vtkGetMacro(RenderAtoms, bool);
137  vtkSetMacro(RenderAtoms, bool);
138  vtkBooleanMacro(RenderAtoms, bool);
140 
142 
145  vtkGetMacro(RenderBonds, bool);
146  vtkSetMacro(RenderBonds, bool);
147  vtkBooleanMacro(RenderBonds, bool);
149 
151 
155  vtkGetMacro(RenderLattice, bool);
156  vtkSetMacro(RenderLattice, bool);
157  vtkBooleanMacro(RenderLattice, bool);
159 
160  enum
161  {
162  CovalentRadius = 0,
165  CustomArrayRadius
166  };
167 
169 
174  vtkGetMacro(AtomicRadiusType, int);
175  vtkSetMacro(AtomicRadiusType, int);
177  void SetAtomicRadiusTypeToCovalentRadius() { this->SetAtomicRadiusType(CovalentRadius); }
178  void SetAtomicRadiusTypeToVDWRadius() { this->SetAtomicRadiusType(VDWRadius); }
179  void SetAtomicRadiusTypeToUnitRadius() { this->SetAtomicRadiusType(UnitRadius); }
180  void SetAtomicRadiusTypeToCustomArrayRadius() { this->SetAtomicRadiusType(CustomArrayRadius); }
182 
184 
189  vtkGetMacro(AtomicRadiusScaleFactor, float);
190  vtkSetMacro(AtomicRadiusScaleFactor, float);
192 
194 
198  vtkGetMacro(UseMultiCylindersForBonds, bool);
199  vtkSetMacro(UseMultiCylindersForBonds, bool);
200  vtkBooleanMacro(UseMultiCylindersForBonds, bool);
202 
203  enum
204  {
205  SingleColor = 0,
206  DiscreteByAtom
207  };
208 
210 
220  vtkGetMacro(BondColorMode, int);
221  vtkSetClampMacro(BondColorMode, int, SingleColor, DiscreteByAtom);
222  void SetBondColorModeToSingleColor() { this->SetBondColorMode(SingleColor); }
223  void SetBondColorModeToDiscreteByAtom() { this->SetBondColorMode(DiscreteByAtom); }
226 
228 
237  vtkGetMacro(AtomColorMode, int);
238  vtkSetClampMacro(AtomColorMode, int, SingleColor, DiscreteByAtom);
240 
242 
246  vtkGetVector3Macro(AtomColor, unsigned char);
247  vtkSetVector3Macro(AtomColor, unsigned char);
249 
251 
255  vtkGetVector3Macro(BondColor, unsigned char);
256  vtkSetVector3Macro(BondColor, unsigned char);
258 
260 
263  vtkGetMacro(BondRadius, float);
264  vtkSetMacro(BondRadius, float);
266 
268 
272  vtkGetVector3Macro(LatticeColor, unsigned char);
273  vtkSetVector3Macro(LatticeColor, unsigned char);
275 
277 
282  vtkSelection* selection, vtkIdTypeArray* atomIds, vtkIdTypeArray* bondIds);
283  virtual void GetSelectedAtoms(vtkSelection* selection, vtkIdTypeArray* atomIds)
284  {
285  this->GetSelectedAtomsAndBonds(selection, atomIds, nullptr);
286  }
287  virtual void GetSelectedBonds(vtkSelection* selection, vtkIdTypeArray* bondIds)
288  {
289  this->GetSelectedAtomsAndBonds(selection, nullptr, bondIds);
290  }
292 
294 
297  void Render(vtkRenderer*, vtkActor*) override;
299  double* GetBounds() override;
300  void GetBounds(double bounds[6]) override { vtkAbstractMapper3D::GetBounds(bounds); }
302  bool GetSupportsSelection() override { return true; }
304 
306 
310  vtkGetStringMacro(AtomicRadiusArrayName);
311  vtkSetStringMacro(AtomicRadiusArrayName);
313 
318  virtual void SetMapScalars(bool map);
319 
323  vtkPeriodicTable* GetPeriodicTable() { return this->PeriodicTable; }
324 
325 protected:
327  ~vtkMoleculeMapper() override;
328 
330 
338  unsigned char AtomColor[3];
340 
342 
348  float BondRadius;
349  unsigned char BondColor[3];
351 
353 
357  void GlyphRender(vtkRenderer* ren, vtkActor* act);
358 
360 
368  virtual void UpdateGlyphPolyData();
369  virtual void UpdateAtomGlyphPolyData();
370  virtual void UpdateBondGlyphPolyData();
372 
374 
380 
381  unsigned char LatticeColor[3];
384  virtual void UpdateLatticePolyData();
385 
390 
391 private:
392  vtkMoleculeMapper(const vtkMoleculeMapper&) = delete;
393  void operator=(const vtkMoleculeMapper&) = delete;
394 };
395 
396 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:146
vtkMoleculeMapper::SetAtomicRadiusTypeToCovalentRadius
void SetAtomicRadiusTypeToCovalentRadius()
Get/Set the type of radius used to generate the atoms.
Definition: vtkMoleculeMapper.h:177
vtkMoleculeMapper::RenderLattice
bool RenderLattice
Definition: vtkMoleculeMapper.h:352
vtkMoleculeMapper::GetSupportsSelection
bool GetSupportsSelection() override
Reimplemented from base class.
Definition: vtkMoleculeMapper.h:302
vtkMoleculeMapper::SetBondColorModeToSingleColor
void SetBondColorModeToSingleColor()
Get/Set the method by which bonds are colored.
Definition: vtkMoleculeMapper.h:222
vtkAbstractMapper3D::GetBounds
virtual double * GetBounds()=0
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkMoleculeMapper::UpdateLatticePolyData
virtual void UpdateLatticePolyData()
vtkMoleculeMapper::GlyphRender
void GlyphRender(vtkRenderer *ren, vtkActor *act)
Internal render methods.
vtkMoleculeMapper::PeriodicTable
vtkNew< vtkPeriodicTable > PeriodicTable
Periodic table for lookups.
Definition: vtkMoleculeMapper.h:389
vtkMoleculeMapper::SetAtomicRadiusTypeToVDWRadius
void SetAtomicRadiusTypeToVDWRadius()
Get/Set the type of radius used to generate the atoms.
Definition: vtkMoleculeMapper.h:178
vtkMoleculeMapper::SetAtomicRadiusTypeToCustomArrayRadius
void SetAtomicRadiusTypeToCustomArrayRadius()
Get/Set the type of radius used to generate the atoms.
Definition: vtkMoleculeMapper.h:180
vtkMoleculeMapper::UnitRadius
@ UnitRadius
Definition: vtkMoleculeMapper.h:164
vtkMoleculeMapper::AtomicRadiusScaleFactor
float AtomicRadiusScaleFactor
Customize atom rendering.
Definition: vtkMoleculeMapper.h:335
vtkMoleculeMapper::GlyphDataInitialized
bool GlyphDataInitialized
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:367
vtkMoleculeMapper::vtkMoleculeMapper
vtkMoleculeMapper()
vtkSelection
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:163
vtkMoleculeMapper::BondGlyphPolyData
vtkNew< vtkPolyData > BondGlyphPolyData
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:365
vtkMoleculeMapper::UpdateBondGlyphPolyData
virtual void UpdateBondGlyphPolyData()
Cached variables and update methods.
vtkMoleculeMapper::AtomicRadiusArrayName
char * AtomicRadiusArrayName
Customize atom rendering.
Definition: vtkMoleculeMapper.h:336
vtkMoleculeMapper::Render
void Render(vtkRenderer *, vtkActor *) override
Reimplemented from base class.
vtkMoleculeMapper::LatticePolyData
vtkNew< vtkPolyData > LatticePolyData
Definition: vtkMoleculeMapper.h:382
vtkMoleculeMapper::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Reimplemented from base class.
vtkMoleculeMapper::GetInput
vtkMolecule * GetInput()
Get/Set the input vtkMolecule.
vtkTrivialProducer
Producer for stand-alone data objects.
Definition: vtkTrivialProducer.h:35
vtkMoleculeMapper::UpdateGlyphPolyData
virtual void UpdateGlyphPolyData()
Cached variables and update methods.
vtkMoleculeMapper::RenderAtoms
bool RenderAtoms
Customize atom rendering.
Definition: vtkMoleculeMapper.h:333
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
vtkMoleculeMapper::UpdateAtomGlyphPolyData
virtual void UpdateAtomGlyphPolyData()
Cached variables and update methods.
vtkMoleculeMapper::UseMultiCylindersForBonds
bool UseMultiCylindersForBonds
Customize bond rendering.
Definition: vtkMoleculeMapper.h:347
vtkMoleculeMapper::GetSelectedBonds
virtual void GetSelectedBonds(vtkSelection *selection, vtkIdTypeArray *bondIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
Definition: vtkMoleculeMapper.h:287
vtkMapper.h
vtkMoleculeMapper::AtomColorMode
int AtomColorMode
Customize atom rendering.
Definition: vtkMoleculeMapper.h:337
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkMoleculeMapper::AtomGlyphPolyData
vtkNew< vtkPolyData > AtomGlyphPolyData
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:363
vtkMoleculeMapper::LatticeMapper
vtkNew< vtkPolyDataMapper > LatticeMapper
Definition: vtkMoleculeMapper.h:383
vtkMoleculeMapper::VDWRadius
@ VDWRadius
Definition: vtkMoleculeMapper.h:163
vtkMoleculeMapper::UseLiquoriceStickSettings
void UseLiquoriceStickSettings()
Set ivars to default liquorice stick settings.
vtkMoleculeMapper::AtomGlyphPointOutput
vtkNew< vtkTrivialProducer > AtomGlyphPointOutput
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:364
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:149
vtkMapper
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:171
vtkGlyph3DMapper
vtkGlyph3D on the GPU.
Definition: vtkGlyph3DMapper.h:149
vtkMoleculeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
Reimplemented from base class.
vtkMoleculeMapper::GetBounds
double * GetBounds() override
Reimplemented from base class.
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
vtkMoleculeMapper::GetPeriodicTable
vtkPeriodicTable * GetPeriodicTable()
Accessor to internal structure.
Definition: vtkMoleculeMapper.h:323
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkMoleculeMapper::AtomicRadiusType
int AtomicRadiusType
Customize atom rendering.
Definition: vtkMoleculeMapper.h:334
vtkMoleculeMapper::SetAtomicRadiusTypeToUnitRadius
void SetAtomicRadiusTypeToUnitRadius()
Get/Set the type of radius used to generate the atoms.
Definition: vtkMoleculeMapper.h:179
vtkMoleculeMapper::BondRadius
float BondRadius
Customize bond rendering.
Definition: vtkMoleculeMapper.h:348
vtkNew< vtkPolyData >
vtkMoleculeMapper::~vtkMoleculeMapper
~vtkMoleculeMapper() override
vtkMolecule
class describing a molecule
Definition: vtkMolecule.h:111
vtkPeriodicTable
Access to information about the elements.
Definition: vtkPeriodicTable.h:39
vtkMoleculeMapper
Mapper that draws vtkMolecule objects.
Definition: vtkMoleculeMapper.h:63
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkMoleculeMapper::AtomGlyphMapper
vtkNew< vtkGlyph3DMapper > AtomGlyphMapper
Internal mappers.
Definition: vtkMoleculeMapper.h:377
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkMoleculeMapper::GetSelectedAtoms
virtual void GetSelectedAtoms(vtkSelection *selection, vtkIdTypeArray *atomIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
Definition: vtkMoleculeMapper.h:283
vtkMoleculeMapper::GetSelectedAtomsAndBonds
virtual void GetSelectedAtomsAndBonds(vtkSelection *selection, vtkIdTypeArray *atomIds, vtkIdTypeArray *bondIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:145
vtkNew.h
vtkMoleculeMapper::GetBondColorModeAsString
const char * GetBondColorModeAsString()
Get/Set the method by which bonds are colored.
vtkMoleculeMapper::UseFastSettings
void UseFastSettings()
Set ivars to use fast settings that may be useful for rendering extremely large molecules where the o...
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:182
vtkMoleculeMapper::SetBondColorModeToDiscreteByAtom
void SetBondColorModeToDiscreteByAtom()
Get/Set the method by which bonds are colored.
Definition: vtkMoleculeMapper.h:223
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
vtkMoleculeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMoleculeMapper::BondGlyphPointOutput
vtkNew< vtkTrivialProducer > BondGlyphPointOutput
Cached variables and update methods.
Definition: vtkMoleculeMapper.h:366
vtkMoleculeMapper::SetMapScalars
virtual void SetMapScalars(bool map)
Helper method to set ScalarMode on both AtomGlyphMapper and BondGlyphMapper.
vtkMoleculeMapper::New
static vtkMoleculeMapper * New()
vtkMoleculeMapper::GetBounds
void GetBounds(double bounds[6]) override
Reimplemented from base class.
Definition: vtkMoleculeMapper.h:300
vtkMoleculeMapper::GetAtomicRadiusTypeAsString
const char * GetAtomicRadiusTypeAsString()
Get/Set the type of radius used to generate the atoms.
vtkMoleculeMapper::BondColorMode
int BondColorMode
Customize bond rendering.
Definition: vtkMoleculeMapper.h:346
vtkMoleculeMapper::UseBallAndStickSettings
void UseBallAndStickSettings()
Set ivars to default ball-and-stick settings.
vtkMoleculeMapper::RenderBonds
bool RenderBonds
Customize bond rendering.
Definition: vtkMoleculeMapper.h:345
vtkMoleculeMapper::BondGlyphMapper
vtkNew< vtkGlyph3DMapper > BondGlyphMapper
Internal mappers.
Definition: vtkMoleculeMapper.h:378
vtkMoleculeMapper::SetInputData
void SetInputData(vtkMolecule *in)
Get/Set the input vtkMolecule.
vtkMoleculeMapper::UseVDWSpheresSettings
void UseVDWSpheresSettings()
Set ivars to default van der Waals spheres settings.