VTK  9.2.5
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=========================================================================*/
27#ifndef vtkMoleculeMapper_h
28#define vtkMoleculeMapper_h
29
30#include "vtkDomainsChemistryModule.h" // For export macro
31#include "vtkMapper.h"
32#include "vtkNew.h" // For vtkNew
33
34class vtkActor;
36class vtkIdTypeArray;
37class vtkMolecule;
39class vtkPolyData;
41class vtkRenderer;
42class vtkSelection;
43class vtkSphereSource;
45
46class VTKDOMAINSCHEMISTRY_EXPORT vtkMoleculeMapper : public vtkMapper
47{
48public:
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
54
60
73
86
99
115
117
120 vtkGetMacro(RenderAtoms, bool);
121 vtkSetMacro(RenderAtoms, bool);
122 vtkBooleanMacro(RenderAtoms, bool);
124
126
129 vtkGetMacro(RenderBonds, bool);
130 vtkSetMacro(RenderBonds, bool);
131 vtkBooleanMacro(RenderBonds, bool);
133
135
139 vtkGetMacro(RenderLattice, bool);
140 vtkSetMacro(RenderLattice, bool);
141 vtkBooleanMacro(RenderLattice, bool);
143
144 enum
145 {
146 CovalentRadius = 0,
149 CustomArrayRadius
150 };
151
153
158 vtkGetMacro(AtomicRadiusType, int);
159 vtkSetMacro(AtomicRadiusType, int);
161 void SetAtomicRadiusTypeToCovalentRadius() { this->SetAtomicRadiusType(CovalentRadius); }
162 void SetAtomicRadiusTypeToVDWRadius() { this->SetAtomicRadiusType(VDWRadius); }
163 void SetAtomicRadiusTypeToUnitRadius() { this->SetAtomicRadiusType(UnitRadius); }
164 void SetAtomicRadiusTypeToCustomArrayRadius() { this->SetAtomicRadiusType(CustomArrayRadius); }
166
168
173 vtkGetMacro(AtomicRadiusScaleFactor, float);
174 vtkSetMacro(AtomicRadiusScaleFactor, float);
176
178
182 vtkGetMacro(UseMultiCylindersForBonds, bool);
183 vtkSetMacro(UseMultiCylindersForBonds, bool);
184 vtkBooleanMacro(UseMultiCylindersForBonds, bool);
186
187 enum
188 {
189 SingleColor = 0,
190 DiscreteByAtom
191 };
192
194
204 vtkGetMacro(BondColorMode, int);
205 vtkSetClampMacro(BondColorMode, int, SingleColor, DiscreteByAtom);
206 void SetBondColorModeToSingleColor() { this->SetBondColorMode(SingleColor); }
207 void SetBondColorModeToDiscreteByAtom() { this->SetBondColorMode(DiscreteByAtom); }
210
212
221 vtkGetMacro(AtomColorMode, int);
222 vtkSetClampMacro(AtomColorMode, int, SingleColor, DiscreteByAtom);
224
226
230 vtkGetVector3Macro(AtomColor, unsigned char);
231 vtkSetVector3Macro(AtomColor, unsigned char);
233
235
239 vtkGetVector3Macro(BondColor, unsigned char);
240 vtkSetVector3Macro(BondColor, unsigned char);
242
244
247 vtkGetMacro(BondRadius, float);
248 vtkSetMacro(BondRadius, float);
250
252
256 vtkGetVector3Macro(LatticeColor, unsigned char);
257 vtkSetVector3Macro(LatticeColor, unsigned char);
259
261
266 vtkSelection* selection, vtkIdTypeArray* atomIds, vtkIdTypeArray* bondIds);
267 virtual void GetSelectedAtoms(vtkSelection* selection, vtkIdTypeArray* atomIds)
268 {
269 this->GetSelectedAtomsAndBonds(selection, atomIds, nullptr);
270 }
271 virtual void GetSelectedBonds(vtkSelection* selection, vtkIdTypeArray* bondIds)
272 {
273 this->GetSelectedAtomsAndBonds(selection, nullptr, bondIds);
274 }
276
278
281 void Render(vtkRenderer*, vtkActor*) override;
283 double* GetBounds() override;
284 void GetBounds(double bounds[6]) override { vtkAbstractMapper3D::GetBounds(bounds); }
285 int FillInputPortInformation(int port, vtkInformation* info) override;
286 bool GetSupportsSelection() override { return true; }
288
290
294 vtkGetStringMacro(AtomicRadiusArrayName);
295 vtkSetStringMacro(AtomicRadiusArrayName);
297
302 virtual void SetMapScalars(bool map);
303
307 vtkPeriodicTable* GetPeriodicTable() { return this->PeriodicTable; }
308
309protected:
312
314
322 unsigned char AtomColor[3];
324
326
333 unsigned char BondColor[3];
335
337
342
344
352 virtual void UpdateGlyphPolyData();
356
358
364
365 unsigned char LatticeColor[3];
368 virtual void UpdateLatticePolyData();
369
374
375private:
376 vtkMoleculeMapper(const vtkMoleculeMapper&) = delete;
377 void operator=(const vtkMoleculeMapper&) = delete;
378};
379
380#endif
virtual double * GetBounds()=0
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:52
vtkGlyph3D on the GPU.
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:40
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:88
Mapper that draws vtkMolecule objects.
virtual void GetSelectedBonds(vtkSelection *selection, vtkIdTypeArray *bondIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
const char * GetBondColorModeAsString()
Get/Set the method by which bonds are colored.
virtual void GetSelectedAtoms(vtkSelection *selection, vtkIdTypeArray *atomIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
virtual void SetMapScalars(bool map)
Helper method to set ScalarMode on both AtomGlyphMapper and BondGlyphMapper.
void SetBondColorModeToDiscreteByAtom()
Get/Set the method by which bonds are colored.
void SetAtomicRadiusTypeToUnitRadius()
Get/Set the type of radius used to generate the atoms.
bool GlyphDataInitialized
Cached variables and update methods.
vtkNew< vtkGlyph3DMapper > AtomGlyphMapper
Internal mappers.
bool RenderAtoms
Customize atom rendering.
vtkPeriodicTable * GetPeriodicTable()
Accessor to internal structure.
void SetAtomicRadiusTypeToVDWRadius()
Get/Set the type of radius used to generate the atoms.
void UseLiquoriceStickSettings()
Set ivars to default liquorice stick settings.
vtkNew< vtkPeriodicTable > PeriodicTable
Periodic table for lookups.
float AtomicRadiusScaleFactor
Customize atom rendering.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void GetSelectedAtomsAndBonds(vtkSelection *selection, vtkIdTypeArray *atomIds, vtkIdTypeArray *bondIds)
Extract the ids atoms and/or bonds rendered by this molecule from a vtkSelection object.
float BondRadius
Customize bond rendering.
~vtkMoleculeMapper() override
int AtomicRadiusType
Customize atom rendering.
bool RenderBonds
Customize bond rendering.
void Render(vtkRenderer *, vtkActor *) override
Reimplemented from base class.
void SetAtomicRadiusTypeToCustomArrayRadius()
Get/Set the type of radius used to generate the atoms.
void SetAtomicRadiusTypeToCovalentRadius()
Get/Set the type of radius used to generate the atoms.
char * AtomicRadiusArrayName
Customize atom rendering.
int FillInputPortInformation(int port, vtkInformation *info) override
Reimplemented from base class.
static vtkMoleculeMapper * New()
virtual void UpdateAtomGlyphPolyData()
Cached variables and update methods.
int AtomColorMode
Customize atom rendering.
double * GetBounds() override
Reimplemented from base class.
virtual void UpdateGlyphPolyData()
Cached variables and update methods.
vtkNew< vtkPolyData > BondGlyphPolyData
Cached variables and update methods.
vtkNew< vtkTrivialProducer > BondGlyphPointOutput
Cached variables and update methods.
void UseFastSettings()
Set ivars to use fast settings that may be useful for rendering extremely large molecules where the o...
void SetBondColorModeToSingleColor()
Get/Set the method by which bonds are colored.
bool UseMultiCylindersForBonds
Customize bond rendering.
bool GetSupportsSelection() override
Reimplemented from base class.
const char * GetAtomicRadiusTypeAsString()
Get/Set the type of radius used to generate the atoms.
vtkNew< vtkGlyph3DMapper > BondGlyphMapper
Internal mappers.
vtkMolecule * GetInput()
Get/Set the input vtkMolecule.
void SetInputData(vtkMolecule *in)
Get/Set the input vtkMolecule.
virtual void UpdateLatticePolyData()
void UseBallAndStickSettings()
Set ivars to default ball-and-stick settings.
void GlyphRender(vtkRenderer *ren, vtkActor *act)
Internal render methods.
int BondColorMode
Customize bond rendering.
void ReleaseGraphicsResources(vtkWindow *) override
Reimplemented from base class.
void UseVDWSpheresSettings()
Set ivars to default van der Waals spheres settings.
vtkNew< vtkTrivialProducer > AtomGlyphPointOutput
Cached variables and update methods.
void GetBounds(double bounds[6]) override
Reimplemented from base class.
virtual void UpdateBondGlyphPolyData()
Cached variables and update methods.
vtkNew< vtkPolyDataMapper > LatticeMapper
vtkNew< vtkPolyData > LatticePolyData
vtkNew< vtkPolyData > AtomGlyphPolyData
Cached variables and update methods.
class describing a molecule
Definition: vtkMolecule.h:95
Allocate and hold a VTK object.
Definition: vtkNew.h:62
Access to information about the elements.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:91
abstract specification for renderers
Definition: vtkRenderer.h:73
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:60
create a polygonal sphere centered at the origin
Producer for stand-alone data objects.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39