mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-10-05 01:49:02 +00:00
use unique_ptr for PIMPL Actor
This commit is contained in:
parent
fe211adfd8
commit
6b0d2e369c
@ -55,7 +55,7 @@ int main(int argc, char* argv[])
|
||||
tangleData.GetField(fieldName),
|
||||
colorTable);
|
||||
vtkm::rendering::Scene scene;
|
||||
scene.AddActor(actor);
|
||||
scene.AddActor(std::move(actor));
|
||||
// 2048x2048 pixels in the canvas:
|
||||
CanvasRayTracer canvas(2048, 2048);
|
||||
// Create a view and use it to render the input data using OS Mesa
|
||||
@ -78,7 +78,7 @@ int main(int argc, char* argv[])
|
||||
// from, so we want the scalar range to match that of the previous image.
|
||||
isoActor.SetScalarRange(actor.GetScalarRange());
|
||||
vtkm::rendering::Scene isoScene;
|
||||
isoScene.AddActor(isoActor);
|
||||
isoScene.AddActor(std::move(isoActor));
|
||||
|
||||
// Wireframe surface:
|
||||
vtkm::rendering::View3D isoView(isoScene, MapperWireframer(), canvas, camera, bg);
|
||||
|
@ -10,10 +10,11 @@
|
||||
|
||||
#include <vtkm/rendering/Actor.h>
|
||||
|
||||
#include <vtkm/Assert.h>
|
||||
#include <vtkm/cont/TryExecute.h>
|
||||
#include <vtkm/cont/UnknownCellSet.h>
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace vtkm
|
||||
{
|
||||
namespace rendering
|
||||
@ -30,25 +31,25 @@ struct Actor::InternalsType
|
||||
vtkm::Bounds SpatialBounds;
|
||||
|
||||
VTKM_CONT
|
||||
InternalsType(const vtkm::cont::UnknownCellSet& cells,
|
||||
const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField,
|
||||
InternalsType(vtkm::cont::UnknownCellSet cells,
|
||||
vtkm::cont::CoordinateSystem coordinates,
|
||||
vtkm::cont::Field scalarField,
|
||||
const vtkm::rendering::Color& color)
|
||||
: Cells(cells)
|
||||
, Coordinates(coordinates)
|
||||
, ScalarField(scalarField)
|
||||
: Cells(std::move(cells))
|
||||
, Coordinates(std::move(coordinates))
|
||||
, ScalarField(std::move(scalarField))
|
||||
, ColorTable(vtkm::Range{ 0, 1 }, color.Components, color.Components)
|
||||
{
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
InternalsType(const vtkm::cont::UnknownCellSet& cells,
|
||||
const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField,
|
||||
InternalsType(vtkm::cont::UnknownCellSet cells,
|
||||
vtkm::cont::CoordinateSystem coordinates,
|
||||
vtkm::cont::Field scalarField,
|
||||
const vtkm::cont::ColorTable& colorTable = vtkm::cont::ColorTable::Preset::Default)
|
||||
: Cells(cells)
|
||||
, Coordinates(coordinates)
|
||||
, ScalarField(scalarField)
|
||||
: Cells(std::move(cells))
|
||||
, Coordinates(std::move(coordinates))
|
||||
, ScalarField(std::move(scalarField))
|
||||
, ColorTable(colorTable)
|
||||
{
|
||||
}
|
||||
@ -57,7 +58,7 @@ struct Actor::InternalsType
|
||||
Actor::Actor(const vtkm::cont::UnknownCellSet& cells,
|
||||
const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField)
|
||||
: Internals(new InternalsType(cells, coordinates, scalarField))
|
||||
: Internals(std::make_unique<InternalsType>(cells, coordinates, scalarField))
|
||||
{
|
||||
this->Init(coordinates, scalarField);
|
||||
}
|
||||
@ -66,7 +67,7 @@ Actor::Actor(const vtkm::cont::UnknownCellSet& cells,
|
||||
const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField,
|
||||
const vtkm::rendering::Color& color)
|
||||
: Internals(new InternalsType(cells, coordinates, scalarField, color))
|
||||
: Internals(std::make_unique<InternalsType>(cells, coordinates, scalarField, color))
|
||||
{
|
||||
this->Init(coordinates, scalarField);
|
||||
}
|
||||
@ -75,11 +76,15 @@ Actor::Actor(const vtkm::cont::UnknownCellSet& cells,
|
||||
const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField,
|
||||
const vtkm::cont::ColorTable& colorTable)
|
||||
: Internals(new InternalsType(cells, coordinates, scalarField, colorTable))
|
||||
: Internals(std::make_unique<InternalsType>(cells, coordinates, scalarField, colorTable))
|
||||
{
|
||||
this->Init(coordinates, scalarField);
|
||||
}
|
||||
|
||||
Actor::~Actor() = default;
|
||||
Actor::Actor(vtkm::rendering::Actor&&) noexcept = default;
|
||||
Actor& Actor::operator=(Actor&&) noexcept = default;
|
||||
|
||||
void Actor::Init(const vtkm::cont::CoordinateSystem& coordinates,
|
||||
const vtkm::cont::Field& scalarField)
|
||||
{
|
||||
|
@ -40,6 +40,14 @@ public:
|
||||
const vtkm::cont::Field& scalarField,
|
||||
const vtkm::rendering::Color& color);
|
||||
|
||||
// Disable copying due to unique_ptr;
|
||||
Actor(const Actor&) = delete;
|
||||
Actor& operator=(const Actor&) = delete;
|
||||
|
||||
Actor(Actor&&) noexcept;
|
||||
Actor& operator=(Actor&&) noexcept;
|
||||
~Actor();
|
||||
|
||||
void Render(vtkm::rendering::Mapper& mapper,
|
||||
vtkm::rendering::Canvas& canvas,
|
||||
const vtkm::rendering::Camera& camera) const;
|
||||
@ -60,9 +68,7 @@ public:
|
||||
|
||||
private:
|
||||
struct InternalsType;
|
||||
std::shared_ptr<InternalsType> Internals;
|
||||
|
||||
struct RangeFunctor;
|
||||
std::unique_ptr<InternalsType> Internals;
|
||||
|
||||
void Init(const vtkm::cont::CoordinateSystem& coordinates, const vtkm::cont::Field& scalarField);
|
||||
};
|
||||
|
@ -27,9 +27,9 @@ Scene::Scene()
|
||||
{
|
||||
}
|
||||
|
||||
void Scene::AddActor(const vtkm::rendering::Actor& actor)
|
||||
void Scene::AddActor(vtkm::rendering::Actor&& actor)
|
||||
{
|
||||
this->Internals->Actors.push_back(actor);
|
||||
this->Internals->Actors.push_back(std::move(actor));
|
||||
}
|
||||
|
||||
const vtkm::rendering::Actor& Scene::GetActor(vtkm::IdComponent index) const
|
||||
|
@ -29,7 +29,7 @@ class VTKM_RENDERING_EXPORT Scene
|
||||
public:
|
||||
Scene();
|
||||
|
||||
void AddActor(const vtkm::rendering::Actor& actor);
|
||||
void AddActor(vtkm::rendering::Actor&& actor);
|
||||
|
||||
const vtkm::rendering::Actor& GetActor(vtkm::IdComponent index) const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user