mirror of
https://github.com/OpenCMT/uLib.git
synced 2025-12-06 07:21:31 +01:00
Removed Pimpl in Vtk
This commit is contained in:
@@ -31,15 +31,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <vtkSmartPointer.h>
|
#include <vtkSmartPointer.h>
|
||||||
#include <vtkRenderWindow.h>
|
|
||||||
#include <vtkRenderer.h>
|
|
||||||
#include <vtkRendererCollection.h>
|
#include <vtkRendererCollection.h>
|
||||||
#include <vtkRenderWindowInteractor.h>
|
#include <vtkRenderWindowInteractor.h>
|
||||||
|
|
||||||
#include <vtkCornerAnnotation.h>
|
|
||||||
#include <vtkTextProperty.h>
|
#include <vtkTextProperty.h>
|
||||||
#include <vtkAxesActor.h>
|
#include <vtkAxesActor.h>
|
||||||
#include <vtkOrientationMarkerWidget.h>
|
|
||||||
#include <vtkCamera.h>
|
#include <vtkCamera.h>
|
||||||
|
|
||||||
#include "uLibVtkViewer.h"
|
#include "uLibVtkViewer.h"
|
||||||
@@ -47,141 +43,114 @@
|
|||||||
namespace uLib {
|
namespace uLib {
|
||||||
namespace Vtk {
|
namespace Vtk {
|
||||||
|
|
||||||
template <>
|
|
||||||
class Tie<Viewer> {
|
|
||||||
public:
|
|
||||||
void DoAction() {
|
|
||||||
std::cout << " VIEWER TIE !!! \n";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//// PIMPL /////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class ViewerPimpl {
|
|
||||||
public:
|
|
||||||
ViewerPimpl() :
|
|
||||||
m_RenderWindow(vtkRenderWindow::New()),
|
|
||||||
m_Renderer(vtkRenderer::New()),
|
|
||||||
m_Annotation(vtkCornerAnnotation::New()),
|
|
||||||
m_Marker(vtkOrientationMarkerWidget::New())
|
|
||||||
{
|
|
||||||
this->InstallPipe();
|
|
||||||
}
|
|
||||||
|
|
||||||
~ViewerPimpl() {
|
|
||||||
this->UninstallPipe();
|
|
||||||
|
|
||||||
m_Annotation->Delete();
|
|
||||||
m_Marker->Delete();
|
|
||||||
m_Renderer->Delete();
|
|
||||||
m_RenderWindow->Delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
// members //
|
|
||||||
vtkRenderer *m_Renderer;
|
|
||||||
vtkRenderWindow *m_RenderWindow;
|
|
||||||
vtkCornerAnnotation *m_Annotation;
|
|
||||||
vtkOrientationMarkerWidget *m_Marker;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void InstallPipe()
|
|
||||||
{
|
|
||||||
m_RenderWindow->AddRenderer(m_Renderer);
|
|
||||||
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
|
|
||||||
vtkSmartPointer<vtkRenderWindowInteractor>::New();
|
|
||||||
renderWindowInteractor->SetRenderWindow(m_RenderWindow);
|
|
||||||
|
|
||||||
// annotation //
|
|
||||||
m_Annotation->GetTextProperty()->SetColor(1,1,1);
|
|
||||||
m_Annotation->GetTextProperty()->SetFontFamilyToArial();
|
|
||||||
m_Annotation->GetTextProperty()->SetOpacity(0.5);
|
|
||||||
m_Annotation->SetMaximumFontSize(10);
|
|
||||||
m_Annotation->SetText(0,"uLib VTK Viewer - OpenCMT all right reserved.");
|
|
||||||
m_Renderer->AddViewProp(m_Annotation);
|
|
||||||
|
|
||||||
// orientation marker //
|
|
||||||
vtkSmartPointer<vtkAxesActor> axes =
|
|
||||||
vtkSmartPointer<vtkAxesActor>::New();
|
|
||||||
m_Marker->SetInteractor(renderWindowInteractor);
|
|
||||||
m_Marker->SetOrientationMarker(axes);
|
|
||||||
m_Marker->SetViewport(0.0,0.0,0.2,0.2);
|
|
||||||
m_Marker->SetEnabled(true);
|
|
||||||
m_Marker->InteractiveOff();
|
|
||||||
|
|
||||||
// Must be rendered here in Vtk-6.0 or seg-fault //
|
|
||||||
m_RenderWindow->Render();
|
|
||||||
}
|
|
||||||
|
|
||||||
void UninstallPipe() {
|
|
||||||
m_Renderer->RemoveAllViewProps();
|
|
||||||
m_Renderer->Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
///// VTK VIEWER //////////////////////////////////////////////////////////////
|
///// VTK VIEWER //////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
Viewer::Viewer() : d(new ViewerPimpl) {}
|
Viewer::Viewer() :
|
||||||
|
m_RenderWindow(vtkRenderWindow::New()),
|
||||||
|
m_Renderer(vtkRenderer::New()),
|
||||||
|
m_Annotation(vtkCornerAnnotation::New()),
|
||||||
|
m_Marker(vtkOrientationMarkerWidget::New())
|
||||||
|
{
|
||||||
|
InstallPipe();
|
||||||
|
}
|
||||||
|
|
||||||
Viewer::~Viewer() { delete d; }
|
Viewer::~Viewer()
|
||||||
|
{
|
||||||
|
UninstallPipe();
|
||||||
|
|
||||||
|
m_Annotation->Delete();
|
||||||
|
m_Marker->Delete();
|
||||||
|
m_Renderer->Delete();
|
||||||
|
m_RenderWindow->Delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Viewer::InstallPipe()
|
||||||
|
{
|
||||||
|
m_RenderWindow->AddRenderer(m_Renderer);
|
||||||
|
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
|
||||||
|
vtkSmartPointer<vtkRenderWindowInteractor>::New();
|
||||||
|
renderWindowInteractor->SetRenderWindow(m_RenderWindow);
|
||||||
|
|
||||||
|
// annotation //
|
||||||
|
m_Annotation->GetTextProperty()->SetColor(1,1,1);
|
||||||
|
m_Annotation->GetTextProperty()->SetFontFamilyToArial();
|
||||||
|
m_Annotation->GetTextProperty()->SetOpacity(0.5);
|
||||||
|
m_Annotation->SetMaximumFontSize(10);
|
||||||
|
m_Annotation->SetText(0,"uLib VTK Viewer - OpenCMT all right reserved.");
|
||||||
|
m_Renderer->AddViewProp(m_Annotation);
|
||||||
|
|
||||||
|
// orientation marker //
|
||||||
|
vtkSmartPointer<vtkAxesActor> axes =
|
||||||
|
vtkSmartPointer<vtkAxesActor>::New();
|
||||||
|
m_Marker->SetInteractor(renderWindowInteractor);
|
||||||
|
m_Marker->SetOrientationMarker(axes);
|
||||||
|
m_Marker->SetViewport(0.0,0.0,0.2,0.2);
|
||||||
|
m_Marker->SetEnabled(true);
|
||||||
|
m_Marker->InteractiveOff();
|
||||||
|
|
||||||
|
// Must be rendered here in Vtk-6.0 or seg-fault //
|
||||||
|
m_RenderWindow->Render();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Viewer::UninstallPipe()
|
||||||
|
{
|
||||||
|
m_Renderer->RemoveAllViewProps();
|
||||||
|
m_Renderer->Clear();
|
||||||
|
}
|
||||||
|
|
||||||
void Viewer::addProp(vtkProp *prop)
|
void Viewer::addProp(vtkProp *prop)
|
||||||
{
|
{
|
||||||
d->m_Renderer->AddActor(prop);
|
m_Renderer->AddActor(prop);
|
||||||
d->m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewer::RemoveProp(vtkProp *prop)
|
void Viewer::RemoveProp(vtkProp *prop)
|
||||||
{
|
{
|
||||||
d->m_Renderer->RemoveViewProp(prop);
|
m_Renderer->RemoveViewProp(prop);
|
||||||
d->m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewer::AddPuppet(Puppet &prop)
|
void Viewer::AddPuppet(Puppet &prop)
|
||||||
{
|
{
|
||||||
prop.ConnectRenderer(d->m_Renderer);
|
prop.ConnectRenderer(m_Renderer);
|
||||||
d->m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewer::RemovePuppet(Puppet &prop)
|
void Viewer::RemovePuppet(Puppet &prop)
|
||||||
{
|
{
|
||||||
prop.DisconnectRenderer(d->m_Renderer);
|
prop.DisconnectRenderer(m_Renderer);
|
||||||
d->m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewer::Start()
|
void Viewer::Start()
|
||||||
{
|
{
|
||||||
d->m_RenderWindow->GetInteractor()->Start();
|
m_RenderWindow->GetInteractor()->Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkCornerAnnotation *Viewer::GetAnnotation()
|
vtkCornerAnnotation *Viewer::GetAnnotation()
|
||||||
{
|
{
|
||||||
return d->m_Annotation;
|
return m_Annotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkRenderer *Viewer::GetRenderer()
|
vtkRenderer *Viewer::GetRenderer()
|
||||||
{
|
{
|
||||||
return d->m_Renderer;
|
return m_Renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkRenderWindowInteractor *Viewer::GetInteractor()
|
vtkRenderWindowInteractor *Viewer::GetInteractor()
|
||||||
{
|
{
|
||||||
return d->m_RenderWindow->GetInteractor();
|
return m_RenderWindow->GetInteractor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewer::Reset()
|
void Viewer::Reset()
|
||||||
{
|
{
|
||||||
d->m_Renderer->ResetCameraClippingRange();
|
m_Renderer->ResetCameraClippingRange();
|
||||||
d->m_Renderer->ResetCamera();
|
m_Renderer->ResetCamera();
|
||||||
d->m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,10 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "uLibVtkInterface.h"
|
#include "uLibVtkInterface.h"
|
||||||
|
|
||||||
|
#include <vtkRenderer.h>
|
||||||
|
#include <vtkRenderWindow.h>
|
||||||
|
#include <vtkCornerAnnotation.h>
|
||||||
|
#include <vtkOrientationMarkerWidget.h>
|
||||||
|
|
||||||
class vtkProp;
|
class vtkProp;
|
||||||
class vtk3DWidget;
|
class vtk3DWidget;
|
||||||
@@ -79,10 +83,22 @@ public:
|
|||||||
void RemoveProp(vtkProp *prop);
|
void RemoveProp(vtkProp *prop);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class ViewerPimpl *d;
|
void InstallPipe();
|
||||||
|
void UninstallPipe();
|
||||||
|
|
||||||
|
vtkRenderer *m_Renderer;
|
||||||
|
vtkRenderWindow *m_RenderWindow;
|
||||||
|
vtkCornerAnnotation *m_Annotation;
|
||||||
|
vtkOrientationMarkerWidget *m_Marker;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <> class Tie<Viewer>;
|
template <>
|
||||||
|
class Tie<Viewer> {
|
||||||
|
public:
|
||||||
|
void DoAction() {
|
||||||
|
std::cout << " VIEWER TIE !!! \n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
} // vtk
|
} // vtk
|
||||||
|
|||||||
@@ -46,46 +46,20 @@ namespace uLib {
|
|||||||
namespace Vtk {
|
namespace Vtk {
|
||||||
|
|
||||||
|
|
||||||
// PIMPL -------------------------------------------------------------------- //
|
|
||||||
|
|
||||||
class vtkContainerBoxPimpl {
|
|
||||||
public:
|
|
||||||
vtkContainerBoxPimpl() :
|
|
||||||
m_Cube(vtkActor::New()),
|
|
||||||
m_Axes(vtkActor::New()),
|
|
||||||
m_Pivot(vtkActor::New()),
|
|
||||||
m_Content(NULL)
|
|
||||||
{}
|
|
||||||
|
|
||||||
~vtkContainerBoxPimpl()
|
|
||||||
{
|
|
||||||
m_Cube->Delete();
|
|
||||||
m_Axes->Delete();
|
|
||||||
m_Pivot->Delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
// MEMBERS //
|
|
||||||
vtkActor *m_Cube;
|
|
||||||
vtkActor *m_Axes;
|
|
||||||
vtkActor *m_Pivot;
|
|
||||||
vtkContainerBox::Content *m_Content;
|
|
||||||
};
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------------- //
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vtkContainerBox::vtkContainerBox(vtkContainerBox::Content &content) :
|
vtkContainerBox::vtkContainerBox(vtkContainerBox::Content &content) :
|
||||||
d( new vtkContainerBoxPimpl)
|
m_Cube(vtkActor::New()),
|
||||||
|
m_Axes(vtkActor::New()),
|
||||||
|
m_Pivot(vtkActor::New()),
|
||||||
|
m_Content(&content)
|
||||||
{
|
{
|
||||||
d->m_Content = &content;
|
|
||||||
this->InstallPipe();
|
this->InstallPipe();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkContainerBox::~vtkContainerBox()
|
vtkContainerBox::~vtkContainerBox()
|
||||||
{
|
{
|
||||||
delete d;
|
m_Cube->Delete();
|
||||||
|
m_Axes->Delete();
|
||||||
|
m_Pivot->Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkPolyData *vtkContainerBox::GetPolyData() const
|
vtkPolyData *vtkContainerBox::GetPolyData() const
|
||||||
@@ -95,8 +69,8 @@ vtkPolyData *vtkContainerBox::GetPolyData() const
|
|||||||
|
|
||||||
void vtkContainerBox::InstallPipe()
|
void vtkContainerBox::InstallPipe()
|
||||||
{
|
{
|
||||||
if(!d->m_Content) return;
|
if(!m_Content) return;
|
||||||
Content *c = d->m_Content;
|
Content *c = m_Content;
|
||||||
|
|
||||||
// CUBE
|
// CUBE
|
||||||
vtkSmartPointer<vtkCubeSource> cube = vtkSmartPointer<vtkCubeSource>::New();
|
vtkSmartPointer<vtkCubeSource> cube = vtkSmartPointer<vtkCubeSource>::New();
|
||||||
@@ -113,9 +87,9 @@ void vtkContainerBox::InstallPipe()
|
|||||||
vtkSmartPointer<vtkPolyDataMapper>::New();
|
vtkSmartPointer<vtkPolyDataMapper>::New();
|
||||||
mapper->SetInputConnection(cube->GetOutputPort());
|
mapper->SetInputConnection(cube->GetOutputPort());
|
||||||
mapper->Update();
|
mapper->Update();
|
||||||
d->m_Cube->SetMapper(mapper);
|
m_Cube->SetMapper(mapper);
|
||||||
d->m_Cube->GetProperty()->SetRepresentationToWireframe();
|
m_Cube->GetProperty()->SetRepresentationToWireframe();
|
||||||
d->m_Cube->GetProperty()->SetAmbient(0.7);
|
m_Cube->GetProperty()->SetAmbient(0.7);
|
||||||
|
|
||||||
// AXES //
|
// AXES //
|
||||||
vtkSmartPointer<vtkAxes> axes = vtkSmartPointer<vtkAxes>::New();
|
vtkSmartPointer<vtkAxes> axes = vtkSmartPointer<vtkAxes>::New();
|
||||||
@@ -123,12 +97,12 @@ void vtkContainerBox::InstallPipe()
|
|||||||
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
||||||
mapper->SetInputConnection(axes->GetOutputPort());
|
mapper->SetInputConnection(axes->GetOutputPort());
|
||||||
mapper->Update();
|
mapper->Update();
|
||||||
d->m_Axes->SetMapper(mapper);
|
m_Axes->SetMapper(mapper);
|
||||||
Vector3f s = c->GetSize();
|
Vector3f s = c->GetSize();
|
||||||
// d->m_Axes->SetScale(s(0),s(1),s(2));
|
// m_Axes->SetScale(s(0),s(1),s(2));
|
||||||
d->m_Axes->GetProperty()->SetLineWidth(3);
|
m_Axes->GetProperty()->SetLineWidth(3);
|
||||||
d->m_Axes->GetProperty()->SetAmbient(0.4);
|
m_Axes->GetProperty()->SetAmbient(0.4);
|
||||||
d->m_Axes->GetProperty()->SetSpecular(0);
|
m_Axes->GetProperty()->SetSpecular(0);
|
||||||
|
|
||||||
// PIVOT //
|
// PIVOT //
|
||||||
axes = vtkSmartPointer<vtkAxes>::New();
|
axes = vtkSmartPointer<vtkAxes>::New();
|
||||||
@@ -136,16 +110,16 @@ void vtkContainerBox::InstallPipe()
|
|||||||
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
||||||
mapper->SetInputConnection(axes->GetOutputPort());
|
mapper->SetInputConnection(axes->GetOutputPort());
|
||||||
mapper->Update();
|
mapper->Update();
|
||||||
d->m_Pivot->SetMapper(mapper);
|
m_Pivot->SetMapper(mapper);
|
||||||
s = c->GetScale();
|
s = c->GetScale();
|
||||||
// d->m_Pivot->SetScale(s(0),s(1),s(2));
|
// m_Pivot->SetScale(s(0),s(1),s(2));
|
||||||
d->m_Pivot->GetProperty()->SetLineWidth(3);
|
m_Pivot->GetProperty()->SetLineWidth(3);
|
||||||
d->m_Pivot->GetProperty()->SetAmbient(0.4);
|
m_Pivot->GetProperty()->SetAmbient(0.4);
|
||||||
d->m_Pivot->GetProperty()->SetSpecular(0);
|
m_Pivot->GetProperty()->SetSpecular(0);
|
||||||
|
|
||||||
this->SetProp(d->m_Cube);
|
this->SetProp(m_Cube);
|
||||||
this->SetProp(d->m_Axes);
|
this->SetProp(m_Axes);
|
||||||
this->SetProp(d->m_Pivot);
|
this->SetProp(m_Pivot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,10 @@ public:
|
|||||||
private:
|
private:
|
||||||
void InstallPipe();
|
void InstallPipe();
|
||||||
|
|
||||||
friend class vtkContainerBoxPimpl;
|
vtkActor *m_Cube;
|
||||||
class vtkContainerBoxPimpl *d;
|
vtkActor *m_Axes;
|
||||||
|
vtkActor *m_Pivot;
|
||||||
|
vtkContainerBox::Content *m_Content;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // vtk
|
} // vtk
|
||||||
|
|||||||
@@ -48,36 +48,7 @@
|
|||||||
namespace uLib {
|
namespace uLib {
|
||||||
|
|
||||||
|
|
||||||
class vtkTriangleMeshPimpl {
|
void vtkTriangleMesh::vtk2uLib_update()
|
||||||
public:
|
|
||||||
vtkTriangleMeshPimpl(vtkTriangleMesh::Content &content) :
|
|
||||||
m_content(content),
|
|
||||||
m_Poly(vtkPolyData::New()),
|
|
||||||
m_Actor(vtkActor::New())
|
|
||||||
{
|
|
||||||
vtkSmartPointer<vtkPolyDataMapper> mapper =
|
|
||||||
vtkSmartPointer<vtkPolyDataMapper>::New();
|
|
||||||
mapper->SetInputConnection(m_Poly->GetProducerPort());
|
|
||||||
m_Actor->SetMapper(mapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
~vtkTriangleMeshPimpl() {
|
|
||||||
m_Poly->Delete();
|
|
||||||
m_Actor->Delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void vtk2uLib_update();
|
|
||||||
void uLib2vtk_update();
|
|
||||||
|
|
||||||
// members //
|
|
||||||
TriangleMesh &m_content;
|
|
||||||
vtkPolyData *m_Poly;
|
|
||||||
vtkActor *m_Actor;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void vtkTriangleMeshPimpl::vtk2uLib_update()
|
|
||||||
{
|
{
|
||||||
// Assumes that Polys are Triangles !!! //
|
// Assumes that Polys are Triangles !!! //
|
||||||
vtkIdType number_of_points = m_Poly->GetNumberOfPoints();
|
vtkIdType number_of_points = m_Poly->GetNumberOfPoints();
|
||||||
@@ -116,7 +87,7 @@ void vtkTriangleMeshPimpl::vtk2uLib_update()
|
|||||||
m_Actor->GetMapper()->Update();
|
m_Actor->GetMapper()->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMeshPimpl::uLib2vtk_update()
|
void vtkTriangleMesh::uLib2vtk_update()
|
||||||
{
|
{
|
||||||
vtkIdType number_of_points = m_content.Points().size();
|
vtkIdType number_of_points = m_content.Points().size();
|
||||||
vtkIdType number_of_triangles = m_content.Triangles().size();
|
vtkIdType number_of_triangles = m_content.Triangles().size();
|
||||||
@@ -161,12 +132,20 @@ void vtkTriangleMeshPimpl::uLib2vtk_update()
|
|||||||
|
|
||||||
|
|
||||||
vtkTriangleMesh::vtkTriangleMesh(vtkTriangleMesh::Content &content) :
|
vtkTriangleMesh::vtkTriangleMesh(vtkTriangleMesh::Content &content) :
|
||||||
d(new vtkTriangleMeshPimpl(content))
|
m_content(content),
|
||||||
{}
|
m_Poly(vtkPolyData::New()),
|
||||||
|
m_Actor(vtkActor::New())
|
||||||
|
{
|
||||||
|
vtkSmartPointer<vtkPolyDataMapper> mapper =
|
||||||
|
vtkSmartPointer<vtkPolyDataMapper>::New();
|
||||||
|
mapper->SetInputConnection(m_Poly->GetProducerPort());
|
||||||
|
m_Actor->SetMapper(mapper);
|
||||||
|
}
|
||||||
|
|
||||||
vtkTriangleMesh::~vtkTriangleMesh()
|
vtkTriangleMesh::~vtkTriangleMesh()
|
||||||
{
|
{
|
||||||
delete d;
|
m_Poly->Delete();
|
||||||
|
m_Actor->Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMesh::ReadFromFile(const char *filename)
|
void vtkTriangleMesh::ReadFromFile(const char *filename)
|
||||||
@@ -175,8 +154,8 @@ void vtkTriangleMesh::ReadFromFile(const char *filename)
|
|||||||
vtkSmartPointer<vtkPolyDataReader>::New();
|
vtkSmartPointer<vtkPolyDataReader>::New();
|
||||||
reader->SetFileName(filename);
|
reader->SetFileName(filename);
|
||||||
reader->Update();
|
reader->Update();
|
||||||
d->m_Poly->DeepCopy(reader->GetOutput());
|
m_Poly->DeepCopy(reader->GetOutput());
|
||||||
d->vtk2uLib_update();
|
vtk2uLib_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMesh::ReadFromXMLFile(const char *filename)
|
void vtkTriangleMesh::ReadFromXMLFile(const char *filename)
|
||||||
@@ -185,8 +164,8 @@ void vtkTriangleMesh::ReadFromXMLFile(const char *filename)
|
|||||||
vtkSmartPointer<vtkXMLPolyDataReader>::New();
|
vtkSmartPointer<vtkXMLPolyDataReader>::New();
|
||||||
reader->SetFileName(filename);
|
reader->SetFileName(filename);
|
||||||
reader->Update();
|
reader->Update();
|
||||||
d->m_Poly->DeepCopy(reader->GetOutput());
|
m_Poly->DeepCopy(reader->GetOutput());
|
||||||
d->vtk2uLib_update();
|
vtk2uLib_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMesh::ReadFromObjFile(const char *filename)
|
void vtkTriangleMesh::ReadFromObjFile(const char *filename)
|
||||||
@@ -195,8 +174,8 @@ void vtkTriangleMesh::ReadFromObjFile(const char *filename)
|
|||||||
vtkSmartPointer<vtkOBJReader>::New();
|
vtkSmartPointer<vtkOBJReader>::New();
|
||||||
reader->SetFileName(filename);
|
reader->SetFileName(filename);
|
||||||
reader->Update();
|
reader->Update();
|
||||||
d->m_Poly->DeepCopy(reader->GetOutput());
|
m_Poly->DeepCopy(reader->GetOutput());
|
||||||
d->vtk2uLib_update();
|
vtk2uLib_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMesh::ReadFromStlFile(const char *filename)
|
void vtkTriangleMesh::ReadFromStlFile(const char *filename)
|
||||||
@@ -205,23 +184,23 @@ void vtkTriangleMesh::ReadFromStlFile(const char *filename)
|
|||||||
vtkSmartPointer<vtkSTLReader>::New();
|
vtkSmartPointer<vtkSTLReader>::New();
|
||||||
reader->SetFileName(filename);
|
reader->SetFileName(filename);
|
||||||
reader->Update();
|
reader->Update();
|
||||||
d->m_Poly->DeepCopy(reader->GetOutput());
|
m_Poly->DeepCopy(reader->GetOutput());
|
||||||
d->vtk2uLib_update();
|
vtk2uLib_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkProp *vtkTriangleMesh::GetProp()
|
vtkProp *vtkTriangleMesh::GetProp()
|
||||||
{
|
{
|
||||||
return d->m_Actor;
|
return m_Actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkPolyData *vtkTriangleMesh::GetPolyData() const
|
vtkPolyData *vtkTriangleMesh::GetPolyData() const
|
||||||
{
|
{
|
||||||
return d->m_Poly;
|
return m_Poly;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtkTriangleMesh::Update()
|
void vtkTriangleMesh::Update()
|
||||||
{
|
{
|
||||||
d->uLib2vtk_update();
|
uLib2vtk_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,8 +58,12 @@ public:
|
|||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class vtkTriangleMeshPimpl;
|
void vtk2uLib_update();
|
||||||
class vtkTriangleMeshPimpl *d;
|
void uLib2vtk_update();
|
||||||
|
|
||||||
|
TriangleMesh &m_content;
|
||||||
|
vtkPolyData *m_Poly;
|
||||||
|
vtkActor *m_Actor;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,16 +31,12 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <vtkSmartPointer.h>
|
#include <vtkSmartPointer.h>
|
||||||
#include <vtkVolume.h>
|
|
||||||
#include <vtkImageData.h>
|
|
||||||
#include <vtkImageImport.h>
|
#include <vtkImageImport.h>
|
||||||
#include <vtkImageExport.h>
|
#include <vtkImageExport.h>
|
||||||
|
|
||||||
#include <vtkFloatArray.h>
|
#include <vtkFloatArray.h>
|
||||||
#include <vtkPointData.h>
|
#include <vtkPointData.h>
|
||||||
|
|
||||||
#include <vtkXMLImageDataReader.h>
|
|
||||||
#include <vtkXMLImageDataWriter.h>
|
|
||||||
#include <vtkGenericDataObjectReader.h>
|
#include <vtkGenericDataObjectReader.h>
|
||||||
#include <vtkImageShiftScale.h>
|
#include <vtkImageShiftScale.h>
|
||||||
|
|
||||||
@@ -51,7 +47,6 @@
|
|||||||
|
|
||||||
#include <vtkActor.h>
|
#include <vtkActor.h>
|
||||||
#include <vtkProperty.h>
|
#include <vtkProperty.h>
|
||||||
#include <vtkCubeSource.h>
|
|
||||||
#include <vtkPolyDataMapper.h>
|
#include <vtkPolyDataMapper.h>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user