/*========================================================================= Program: Visualization Toolkit Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkOpenGLMoleculeMapper * @brief An accelerated class for rendering molecules * * A vtkMoleculeMapper that uses imposters to do the rendering. It uses * vtkOpenGLSphereMapper and vtkOpenGLStickMapper to do the rendering. */ #ifndef vtkOpenGLMoleculeMapper_h #define vtkOpenGLMoleculeMapper_h #include "vtkDomainsChemistryOpenGL2Module.h" // For export macro #include "vtkMoleculeMapper.h" #include "vtkNew.h" // For vtkNew class vtkOpenGLSphereMapper; class vtkOpenGLStickMapper; class VTKDOMAINSCHEMISTRYOPENGL2_EXPORT vtkOpenGLMoleculeMapper : public vtkMoleculeMapper { public: static vtkOpenGLMoleculeMapper* New(); vtkTypeMacro(vtkOpenGLMoleculeMapper, vtkMoleculeMapper); void PrintSelf(ostream& os, vtkIndent indent) override; ///@{ /** * Reimplemented from base class */ void Render(vtkRenderer*, vtkActor*) override; void ReleaseGraphicsResources(vtkWindow*) override; ///@} /** * provide access to the underlying mappers */ vtkOpenGLSphereMapper* GetFastAtomMapper() { return this->FastAtomMapper; } /** * allows a mapper to update a selections color buffers * Called from a prop which in turn is called from the selector */ void ProcessSelectorPixelBuffers( vtkHardwareSelector* sel, std::vector& pixeloffsets, vtkProp* prop) override; /** * Helper method to set ScalarMode on both FastAtomMapper and FastBondMapper. * true means VTK_COLOR_MODE_MAP_SCALARS, false VTK_COLOR_MODE_DIRECT_SCALARS. */ void SetMapScalars(bool map) override; protected: vtkOpenGLMoleculeMapper(); ~vtkOpenGLMoleculeMapper() override; void UpdateAtomGlyphPolyData() override; void UpdateBondGlyphPolyData() override; ///@{ /** * Internal mappers */ vtkNew FastAtomMapper; vtkNew FastBondMapper; ///@} private: vtkOpenGLMoleculeMapper(const vtkOpenGLMoleculeMapper&) = delete; void operator=(const vtkOpenGLMoleculeMapper&) = delete; }; #endif