comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk/include/vtkHyperTreeGridMapper.h

137 lines
4.7 KiB
C
Raw Normal View History

2024-11-21 11:50:43 +08:00
/*=========================================================================
Program: Visualization Toolkit
Module: vtkHyperTreeGridMapper.h
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 vtkHyperTreeGridMapper
* @brief map vtkHyperTreeGrid to graphics primitives
* vtkHyperTreeGridMapper is a class that maps polygonal data (i.e., vtkHyperTreeGrid)
* to graphics primitives. vtkHyperTreeGridMapper serves as a superclass for
* device-specific poly data mappers, that actually do the mapping to the
* rendering/graphics hardware/software.
* By default, this class use an Adaptive GeometryFilter that extract only
* the part of the geometry to render. Be careful as this implies that new
* render my trigger an update of the pipeline to get the new part of the
* geometry to render.
* Note: this class has its own module to avoid cyclic dependency between Rendering Core
* and Filters Hybrid
* * It need Filters Hybrid for Adaptive2DGeometryFilter
* * Filters Hybrid need Rendering Core because of Adaptive2DGeometryFilter
*/
#ifndef vtkHyperTreeGridMapper_h
#define vtkHyperTreeGridMapper_h
#include "vtkMapper.h"
#include "vtkSetGet.h" // Get macro
#include "vtkSmartPointer.h" // For vtkSmartPointer
#include "vtkRenderingHyperTreeGridModule.h" // For export macro
class vtkHyperTreeGrid;
class vtkCompositeDataSet;
class vtkPolyData;
class vtkPolyDataMapper;
class vtkRenderWindow;
class vtkRenderer;
class VTKRENDERINGHYPERTREEGRID_EXPORT vtkHyperTreeGridMapper : public vtkMapper
{
public:
static vtkHyperTreeGridMapper* New();
vtkTypeMacro(vtkHyperTreeGridMapper, vtkMapper);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Set the connection for the given input port index. Each input
* port of a filter has a specific purpose. A port may have zero or
* more connections and the required number is specified by each
* filter. Setting the connection with this method removes all
* other connections from the port. To add more than one connection
* use AddInputConnection().
* The input for the connection is the output port of another
* filter, which is obtained with GetOutputPort(). Typical usage is
* filter2->SetInputConnection(0, filter1->GetOutputPort(0)).
*/
using Superclass::SetInputConnection;
void SetInputDataObject(int port, vtkDataObject* input) override;
void SetInputDataObject(vtkDataObject* input) override;
//@}
//@{
/**
* For this mapper, the bounds correspond to the output for the
* internal surface filter which may be restricted to the Camera frustum
* if UseCameraFrustum is on.
*/
double* GetBounds() override;
void GetBounds(double bounds[6]) override;
//@}
//@{
/**
* This boolean control whether or not the mapping should adapt
* to the Camera frustum during the rendering. Setting this variable
* to true (default) should provide increased performances.
*/
vtkGetMacro(UseAdaptiveDecimation, bool);
vtkSetMacro(UseAdaptiveDecimation, bool);
vtkBooleanMacro(UseAdaptiveDecimation, bool);
//@}
/**
* Use the internal PolyData Mapper to do the rendering
* of the HTG transformed by the current SurfaceFilter:
* * Adaptive2DGeometryFilter if UseCameraFrustum
* * GeometryFilter otherwise
*/
void Render(vtkRenderer* ren, vtkActor* act) override;
/**
* Fill the input port information objects for this algorithm. This
* is invoked by the first call to GetInputPortInformation for each
* port so subclasses can specify what they can handle.
*/
int FillInputPortInformation(int port, vtkInformation* info) override;
protected:
vtkHyperTreeGridMapper();
~vtkHyperTreeGridMapper() override;
/**
* Generate a new composite were each leave is decimated if required
*/
vtkSmartPointer<vtkCompositeDataSet> UpdateWithDecimation(
vtkCompositeDataSet* htg, vtkRenderer* ren);
// In 2D mode, these variables control the mapper oprimisations
bool UseAdaptiveDecimation = false;
// render the extracted surface,
// need to be created in device specific subclass
vtkSmartPointer<vtkPolyDataMapper> Mapper;
// Internal object to render
vtkSmartPointer<vtkCompositeDataSet> Input;
private:
vtkHyperTreeGridMapper(const vtkHyperTreeGridMapper&) = delete;
void operator=(const vtkHyperTreeGridMapper&) = delete;
};
#endif