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 =========================================================================*/
26 #ifndef vtkMoleculeMapper_h
27 #define vtkMoleculeMapper_h
28 
29 #include "vtkDomainsChemistryModule.h" // For export macro
30 #include "vtkMapper.h"
31 #include "vtkNew.h" // For vtkNew
32 
33 class vtkActor;
34 class vtkGlyph3DMapper;
35 class vtkIdTypeArray;
36 class vtkMolecule;
37 class vtkPeriodicTable;
38 class vtkPolyData;
39 class vtkRenderer;
40 class vtkSelection;
41 class vtkSphereSource;
42 class vtkTrivialProducer;
43 
45 {
46 public:
49  void PrintSelf(ostream& os, vtkIndent indent);
50 
52 
56 
63 
70 
77 
86 
88 
89  vtkGetMacro(RenderAtoms, bool);
90  vtkSetMacro(RenderAtoms, bool);
91  vtkBooleanMacro(RenderAtoms, bool);
93 
95 
96  vtkGetMacro(RenderBonds, bool);
97  vtkSetMacro(RenderBonds, bool);
98  vtkBooleanMacro(RenderBonds, bool);
100 
101  enum {
102  CovalentRadius = 0,
104  UnitRadius
105  };
106 
108 
110  vtkGetMacro(AtomicRadiusType, int);
111  vtkSetMacro(AtomicRadiusType, int);
114  {
115  this->SetAtomicRadiusType(CovalentRadius);
116  }
118  {
119  this->SetAtomicRadiusType(VDWRadius);
120  }
122  {
123  this->SetAtomicRadiusType(UnitRadius);
124  }
126 
128 
130  vtkGetMacro(AtomicRadiusScaleFactor, float);
131  vtkSetMacro(AtomicRadiusScaleFactor, float);
133 
135 
137  vtkGetMacro(UseMultiCylindersForBonds, bool);
138  vtkSetMacro(UseMultiCylindersForBonds, bool);
139  vtkBooleanMacro(UseMultiCylindersForBonds, bool);
141 
142  enum {
143  SingleColor = 0,
144  DiscreteByAtom
145  };
146 
148 
153  vtkGetMacro(BondColorMode, int);
154  vtkSetMacro(BondColorMode, int);
155  const char * GetBondColorModeAsString();
157  {
158  this->SetBondColorMode(SingleColor);
159  }
161  {
162  this->SetBondColorMode(DiscreteByAtom);
163  }
165 
167 
169  vtkGetVector3Macro(BondColor, unsigned char);
170  vtkSetVector3Macro(BondColor, unsigned char);
172 
174 
175  vtkGetMacro(BondRadius, float);
176  vtkSetMacro(BondRadius, float);
178 
180 
182  virtual void GetSelectedAtomsAndBonds(vtkSelection *selection,
183  vtkIdTypeArray *atomIds,
184  vtkIdTypeArray *bondIds);
185  virtual void GetSelectedAtoms(vtkSelection *selection,
186  vtkIdTypeArray *atomIds)
187  {
188  this->GetSelectedAtomsAndBonds(selection, atomIds, NULL);
189  }
190  virtual void GetSelectedBonds(vtkSelection *selection,
191  vtkIdTypeArray *bondIds)
192  {
193  this->GetSelectedAtomsAndBonds(selection, NULL, bondIds);
194  }
196 
198 
199  virtual void Render(vtkRenderer *, vtkActor *);
201  double * GetBounds();
202  void GetBounds(double bounds[6]) { vtkAbstractMapper3D::GetBounds(bounds); }
204  virtual bool GetSupportsSelection() {return true;}
206 
207 protected:
210 
212 
217 
219 
223  float BondRadius;
224  unsigned char BondColor[3];
226 
228  void GlyphRender(vtkRenderer *ren, vtkActor *act);
229 
231 
237  virtual void UpdateGlyphPolyData();
238  virtual void UpdateAtomGlyphPolyData();
239  virtual void UpdateBondGlyphPolyData();
241 
243 
247 
250 
251 private:
252  vtkMoleculeMapper(const vtkMoleculeMapper&); // Not implemented.
253  void operator=(const vtkMoleculeMapper&); // Not implemented.
254 };
255 
256 #endif
vtkMoleculeMapper::SetAtomicRadiusTypeToCovalentRadius
void SetAtomicRadiusTypeToCovalentRadius()
Definition: vtkMoleculeMapper.h:113
vtkMoleculeMapper::Render
virtual void Render(vtkRenderer *, vtkActor *)
vtkMoleculeMapper::SetBondColorModeToSingleColor
void SetBondColorModeToSingleColor()
Definition: vtkMoleculeMapper.h:156
vtkAbstractMapper3D::GetBounds
virtual double * GetBounds()=0
vtkMoleculeMapper::GlyphRender
void GlyphRender(vtkRenderer *ren, vtkActor *act)
vtkSetVector3Macro
#define vtkSetVector3Macro(name, type)
Definition: vtkSetGet.h:287
vtkMoleculeMapper::GetBounds
double * GetBounds()
vtkMoleculeMapper::PeriodicTable
vtkNew< vtkPeriodicTable > PeriodicTable
Definition: vtkMoleculeMapper.h:249
vtkMoleculeMapper::SetAtomicRadiusTypeToVDWRadius
void SetAtomicRadiusTypeToVDWRadius()
Definition: vtkMoleculeMapper.h:117
vtkMoleculeMapper::AtomicRadiusScaleFactor
float AtomicRadiusScaleFactor
Definition: vtkMoleculeMapper.h:215
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkMoleculeMapper::GlyphDataInitialized
bool GlyphDataInitialized
Definition: vtkMoleculeMapper.h:236
vtkMoleculeMapper::vtkMoleculeMapper
vtkMoleculeMapper()
vtkMoleculeMapper::FillInputPortInformation
virtual int FillInputPortInformation(int port, vtkInformation *info)
vtkSelection
A node in a selection tree. Used to store selection results.
Definition: vtkSelection.h:45
vtkMoleculeMapper::BondGlyphPolyData
vtkNew< vtkPolyData > BondGlyphPolyData
Definition: vtkMoleculeMapper.h:234
vtkMoleculeMapper::UpdateBondGlyphPolyData
virtual void UpdateBondGlyphPolyData()
vtkMoleculeMapper::GetSupportsSelection
virtual bool GetSupportsSelection()
Definition: vtkMoleculeMapper.h:204
vtkgl::in
GLuint in
Definition: vtkgl.h:16905
vtkMoleculeMapper::GetInput
vtkMolecule * GetInput()
vtkTrivialProducer
Producer for stand-alone data objects.
Definition: vtkTrivialProducer.h:37
vtkMoleculeMapper::GetBounds
void GetBounds(double bounds[6])
Definition: vtkMoleculeMapper.h:202
vtkMoleculeMapper::UpdateGlyphPolyData
virtual void UpdateGlyphPolyData()
vtkMoleculeMapper::RenderAtoms
bool RenderAtoms
Definition: vtkMoleculeMapper.h:213
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
vtkMoleculeMapper::UpdateAtomGlyphPolyData
virtual void UpdateAtomGlyphPolyData()
vtkMoleculeMapper::UseMultiCylindersForBonds
bool UseMultiCylindersForBonds
Definition: vtkMoleculeMapper.h:222
vtkMoleculeMapper::GetSelectedBonds
virtual void GetSelectedBonds(vtkSelection *selection, vtkIdTypeArray *bondIds)
Definition: vtkMoleculeMapper.h:190
vtkMapper.h
vtkX3D::port
@ port
Definition: vtkX3D.h:447
vtkMoleculeMapper::AtomGlyphPolyData
vtkNew< vtkPolyData > AtomGlyphPolyData
Definition: vtkMoleculeMapper.h:232
vtkDomainsChemistryModule.h
vtkGetVector3Macro
#define vtkGetVector3Macro(name, type)
Definition: vtkSetGet.h:304
vtkMoleculeMapper::VDWRadius
@ VDWRadius
Definition: vtkMoleculeMapper.h:103
vtkMoleculeMapper::UseLiquoriceStickSettings
void UseLiquoriceStickSettings()
vtkMoleculeMapper::AtomGlyphPointOutput
vtkNew< vtkTrivialProducer > AtomGlyphPointOutput
Definition: vtkMoleculeMapper.h:233
VTKDOMAINSCHEMISTRY_EXPORT
#define VTKDOMAINSCHEMISTRY_EXPORT
Definition: vtkDomainsChemistryModule.h:15
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:46
vtkMapper
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:90
vtkMoleculeMapper::ReleaseGraphicsResources
virtual void ReleaseGraphicsResources(vtkWindow *)
vtkGlyph3DMapper
vtkGlyph3D on the GPU.
Definition: vtkGlyph3DMapper.h:39
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMoleculeMapper::AtomicRadiusType
int AtomicRadiusType
Definition: vtkMoleculeMapper.h:214
vtkMoleculeMapper::SetAtomicRadiusTypeToUnitRadius
void SetAtomicRadiusTypeToUnitRadius()
Definition: vtkMoleculeMapper.h:121
vtkMoleculeMapper::BondRadius
float BondRadius
Definition: vtkMoleculeMapper.h:223
vtkNew< vtkPolyData >
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkMolecule
class describing a molecule
Definition: vtkMolecule.h:89
vtkPeriodicTable
Access to information about the elements.
Definition: vtkPeriodicTable.h:41
vtkMoleculeMapper
Mapper that draws vtkMolecule objects.
Definition: vtkMoleculeMapper.h:45
vtkMoleculeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkMoleculeMapper::AtomGlyphMapper
vtkNew< vtkGlyph3DMapper > AtomGlyphMapper
Definition: vtkMoleculeMapper.h:244
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkMoleculeMapper::GetSelectedAtoms
virtual void GetSelectedAtoms(vtkSelection *selection, vtkIdTypeArray *atomIds)
Definition: vtkMoleculeMapper.h:185
vtkMoleculeMapper::GetSelectedAtomsAndBonds
virtual void GetSelectedAtomsAndBonds(vtkSelection *selection, vtkIdTypeArray *atomIds, vtkIdTypeArray *bondIds)
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:49
vtkNew.h
vtkMoleculeMapper::GetBondColorModeAsString
const char * GetBondColorModeAsString()
vtkMoleculeMapper::UseFastSettings
void UseFastSettings()
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkMoleculeMapper::SetBondColorModeToDiscreteByAtom
void SetBondColorModeToDiscreteByAtom()
Definition: vtkMoleculeMapper.h:160
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkMoleculeMapper::BondGlyphPointOutput
vtkNew< vtkTrivialProducer > BondGlyphPointOutput
Definition: vtkMoleculeMapper.h:235
vtkMoleculeMapper::New
static vtkMoleculeMapper * New()
vtkMoleculeMapper::GetAtomicRadiusTypeAsString
const char * GetAtomicRadiusTypeAsString()
vtkMoleculeMapper::BondColorMode
int BondColorMode
Definition: vtkMoleculeMapper.h:221
vtkMoleculeMapper::UseBallAndStickSettings
void UseBallAndStickSettings()
vtkMoleculeMapper::RenderBonds
bool RenderBonds
Definition: vtkMoleculeMapper.h:220
vtkMoleculeMapper::BondGlyphMapper
vtkNew< vtkGlyph3DMapper > BondGlyphMapper
Definition: vtkMoleculeMapper.h:245
vtkMoleculeMapper::SetInputData
void SetInputData(vtkMolecule *in)
vtkMoleculeMapper::UseVDWSpheresSettings
void UseVDWSpheresSettings()
vtkMoleculeMapper::~vtkMoleculeMapper
~vtkMoleculeMapper()