VTK
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);
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 CovalentRadius = 0,
148 CustomArrayRadius
149 };
150
152
157 vtkGetMacro(AtomicRadiusType, int);
158 vtkSetMacro(AtomicRadiusType, int);
161 {
162 this->SetAtomicRadiusType(CovalentRadius);
163 }
165 {
166 this->SetAtomicRadiusType(VDWRadius);
167 }
169 {
170 this->SetAtomicRadiusType(UnitRadius);
171 }
173 {
174 this->SetAtomicRadiusType(CustomArrayRadius);
175 }
177
179
184 vtkGetMacro(AtomicRadiusScaleFactor, float);
185 vtkSetMacro(AtomicRadiusScaleFactor, float);
187
189
193 vtkGetMacro(UseMultiCylindersForBonds, bool);
194 vtkSetMacro(UseMultiCylindersForBonds, bool);
195 vtkBooleanMacro(UseMultiCylindersForBonds, bool);
197
198 enum {
199 SingleColor = 0,
200 DiscreteByAtom
201 };
202
204
214 vtkGetMacro(BondColorMode, int);
215 vtkSetMacro(BondColorMode, int);
218 {
219 this->SetBondColorMode(SingleColor);
220 }
222 {
223 this->SetBondColorMode(DiscreteByAtom);
224 }
226
228
232 vtkGetVector3Macro(BondColor, unsigned char);
233 vtkSetVector3Macro(BondColor, unsigned char);
235
237
240 vtkGetMacro(BondRadius, float);
241 vtkSetMacro(BondRadius, float);
243
245
249 vtkGetVector3Macro(LatticeColor, unsigned char)
250 vtkSetVector3Macro(LatticeColor, unsigned char)
252
254
258 virtual void GetSelectedAtomsAndBonds(vtkSelection *selection,
259 vtkIdTypeArray *atomIds,
260 vtkIdTypeArray *bondIds);
261 virtual void GetSelectedAtoms(vtkSelection *selection,
262 vtkIdTypeArray *atomIds)
263 {
264 this->GetSelectedAtomsAndBonds(selection, atomIds, NULL);
265 }
266 virtual void GetSelectedBonds(vtkSelection *selection,
267 vtkIdTypeArray *bondIds)
268 {
269 this->GetSelectedAtomsAndBonds(selection, NULL, bondIds);
270 }
272
274
277 virtual void Render(vtkRenderer *, vtkActor *);
279 double * GetBounds();
280 void GetBounds(double bounds[6]) { vtkAbstractMapper3D::GetBounds(bounds); }
282 virtual bool GetSupportsSelection() {return true;}
284
285protected:
288
290
297
299
306 unsigned char BondColor[3];
308
310
315
317
325 virtual void UpdateGlyphPolyData();
329
331
337
338 unsigned char LatticeColor[3];
341 virtual void UpdateLatticePolyData();
342
347
348private:
349 vtkMoleculeMapper(const vtkMoleculeMapper&) VTK_DELETE_FUNCTION;
350 void operator=(const vtkMoleculeMapper&) VTK_DELETE_FUNCTION;
351};
352
353#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:92
Mapper that draws vtkMolecule objects.
virtual void GetSelectedBonds(vtkSelection *selection, vtkIdTypeArray *bondIds)
const char * GetBondColorModeAsString()
void SetBondColorModeToDiscreteByAtom()
void SetAtomicRadiusTypeToUnitRadius()
vtkNew< vtkGlyph3DMapper > AtomGlyphMapper
Internal mappers.
bool RenderAtoms
Customize atom rendering.
void SetAtomicRadiusTypeToVDWRadius()
void UseLiquoriceStickSettings()
Set ivars to default liquorice stick settings.
vtkNew< vtkPeriodicTable > PeriodicTable
Periodic table for lookups.
bool RenderBonds
Customize bond rendering.
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
void SetAtomicRadiusTypeToCustomArrayRadius()
void SetAtomicRadiusTypeToCovalentRadius()
void GetBounds(double bounds[6])
Get the bounds for this mapper as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
static vtkMoleculeMapper * New()
virtual void UpdateAtomGlyphPolyData()
virtual void ReleaseGraphicsResources(vtkWindow *)
Release any graphics resources that are being consumed by this mapper.
virtual void UpdateGlyphPolyData()
double * GetBounds()
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkNew< vtkPolyData > BondGlyphPolyData
vtkNew< vtkTrivialProducer > BondGlyphPointOutput
void UseFastSettings()
Set ivars to use fast settings that may be useful for rendering extremely large molecules where the o...
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void SetBondColorModeToSingleColor()
const char * GetAtomicRadiusTypeAsString()
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkNew< vtkGlyph3DMapper > BondGlyphMapper
vtkMolecule * GetInput()
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.
void UseVDWSpheresSettings()
Set ivars to default van der Waals spheres settings.
vtkNew< vtkTrivialProducer > AtomGlyphPointOutput
virtual void UpdateBondGlyphPolyData()
vtkNew< vtkPolyDataMapper > LatticeMapper
virtual void Render(vtkRenderer *, vtkActor *)
Reimplemented from base class.
vtkNew< vtkPolyData > LatticePolyData
vtkNew< vtkPolyData > AtomGlyphPolyData
Cached variables and update methods.
class describing a molecule
Definition: vtkMolecule.h:91
Access to information about the elements.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
abstract specification for renderers
Definition: vtkRenderer.h:64
A node in a selection tree.
Definition: vtkSelection.h:44
create a polygonal sphere centered at the origin
Producer for stand-alone data objects.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.