fixed errors

This commit is contained in:
AndreaRigoni
2026-03-25 20:30:46 +00:00
parent 6a65fe94c8
commit e4a8499104
17 changed files with 344 additions and 269 deletions

View File

@@ -198,7 +198,7 @@ public:
Puppet::Puppet() : Object(), d(new PuppetData) {
Puppet::Puppet() : Object(), pd(new PuppetData) {
ULIB_ACTIVATE_DISPLAY_PROPERTIES;
for (auto* p : this->GetDisplayProperties()) {
uLib::Object::connect(p, &uLib::PropertyBase::Updated, this, &Puppet::Update);
@@ -207,25 +207,25 @@ Puppet::Puppet() : Object(), d(new PuppetData) {
Puppet::~Puppet()
{
delete d;
delete pd;
}
vtkProp *Puppet::GetProp()
{
if (d->m_Assembly->GetParts()->GetNumberOfItems() == 1)
return d->m_Assembly->GetParts()->GetLastProp();
if (pd->m_Assembly->GetParts()->GetNumberOfItems() == 1)
return pd->m_Assembly->GetParts()->GetLastProp();
else
return d->m_Assembly;
return pd->m_Assembly;
}
void Puppet::SetProp(vtkProp *prop)
{
if(prop) {
prop->SetPickable(d->m_Selectable);
prop->SetPickable(pd->m_Selectable);
if (auto* p3d = vtkProp3D::SafeDownCast(prop)) {
d->m_Assembly->AddPart(p3d);
pd->m_Assembly->AddPart(p3d);
}
d->ApplyAppearance(prop);
pd->ApplyAppearance(prop);
}
}
@@ -237,12 +237,12 @@ void Puppet::RemoveProp(vtkProp *prop)
vtkPropCollection *Puppet::GetParts()
{
return d->m_Assembly->GetParts();
return pd->m_Assembly->GetParts();
}
vtkPropCollection *Puppet::GetProps()
{
return d->m_Assembly->GetParts();
return pd->m_Assembly->GetParts();
}
void Puppet::ConnectRenderer(vtkRenderer *renderer)
@@ -253,14 +253,14 @@ void Puppet::ConnectRenderer(vtkRenderer *renderer)
renderer->AddViewProp(prop);
}
if (d->m_ShowBoundingBox && d->m_OutlineActor) renderer->AddActor(d->m_OutlineActor);
if (d->m_ShowScaleMeasures && d->m_CubeAxesActor) {
d->m_CubeAxesActor->SetCamera(renderer->GetActiveCamera());
renderer->AddActor(d->m_CubeAxesActor);
if (pd->m_ShowBoundingBox && pd->m_OutlineActor) renderer->AddActor(pd->m_OutlineActor);
if (pd->m_ShowScaleMeasures && pd->m_CubeAxesActor) {
pd->m_CubeAxesActor->SetCamera(renderer->GetActiveCamera());
renderer->AddActor(pd->m_CubeAxesActor);
}
if (d->m_Selected && d->m_HighlightActor) {
renderer->AddActor(d->m_HighlightActor);
if (pd->m_Selected && pd->m_HighlightActor) {
renderer->AddActor(pd->m_HighlightActor);
}
}
}
@@ -271,8 +271,8 @@ void Puppet::DisconnectRenderer(vtkRenderer *renderer)
if(vtkProp* prop = this->GetProp())
renderer->RemoveViewProp(prop);
if (d->m_ShowBoundingBox && d->m_OutlineActor) renderer->RemoveActor(d->m_OutlineActor);
if (d->m_ShowScaleMeasures && d->m_CubeAxesActor) renderer->RemoveActor(d->m_CubeAxesActor);
if (pd->m_ShowBoundingBox && pd->m_OutlineActor) renderer->RemoveActor(pd->m_OutlineActor);
if (pd->m_ShowScaleMeasures && pd->m_CubeAxesActor) renderer->RemoveActor(pd->m_CubeAxesActor);
this->GetRenderers()->RemoveItem(renderer);
}
@@ -290,47 +290,47 @@ void Puppet::DisonnectViewer(Viewer *viewer)
vtkRendererCollection *Puppet::GetRenderers() const
{
return d->m_Renderers;
return pd->m_Renderers;
}
void Puppet::PrintSelf(std::ostream &o) const
{
o << "Props Assembly: \n";
d->m_Assembly->PrintSelf(o,vtkIndent(1));
pd->m_Assembly->PrintSelf(o,vtkIndent(1));
o << "Connected Renderers: \n";
d->m_Renderers->PrintSelf(o,vtkIndent(1));
pd->m_Renderers->PrintSelf(o,vtkIndent(1));
}
void Puppet::ShowBoundingBox(bool show)
{
if (d->m_ShowBoundingBox == show) return;
d->m_ShowBoundingBox = show;
if (pd->m_ShowBoundingBox == show) return;
pd->m_ShowBoundingBox = show;
if (show) {
if (!d->m_OutlineActor) {
d->m_OutlineSource = vtkSmartPointer<vtkOutlineSource>::New();
d->m_OutlineActor = vtkSmartPointer<vtkActor>::New();
if (!pd->m_OutlineActor) {
pd->m_OutlineSource = vtkSmartPointer<vtkOutlineSource>::New();
pd->m_OutlineActor = vtkSmartPointer<vtkActor>::New();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(d->m_OutlineSource->GetOutputPort());
d->m_OutlineActor->SetMapper(mapper);
d->m_OutlineActor->GetProperty()->SetColor(1.0, 1.0, 1.0);
mapper->SetInputConnection(pd->m_OutlineSource->GetOutputPort());
pd->m_OutlineActor->SetMapper(mapper);
pd->m_OutlineActor->GetProperty()->SetColor(1.0, 1.0, 1.0);
}
double* bounds = d->m_Assembly->GetBounds();
d->m_OutlineSource->SetBounds(bounds);
d->m_OutlineSource->Update();
double* bounds = pd->m_Assembly->GetBounds();
pd->m_OutlineSource->SetBounds(bounds);
pd->m_OutlineSource->Update();
d->m_Renderers->InitTraversal();
for (int i = 0; i < d->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = d->m_Renderers->GetNextItem();
renderer->AddActor(d->m_OutlineActor);
pd->m_Renderers->InitTraversal();
for (int i = 0; i < pd->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = pd->m_Renderers->GetNextItem();
renderer->AddActor(pd->m_OutlineActor);
}
} else {
if (d->m_OutlineActor) {
d->m_Renderers->InitTraversal();
for (int i = 0; i < d->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = d->m_Renderers->GetNextItem();
renderer->RemoveActor(d->m_OutlineActor);
if (pd->m_OutlineActor) {
pd->m_Renderers->InitTraversal();
for (int i = 0; i < pd->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = pd->m_Renderers->GetNextItem();
renderer->RemoveActor(pd->m_OutlineActor);
}
}
}
@@ -338,31 +338,31 @@ void Puppet::ShowBoundingBox(bool show)
void Puppet::ShowScaleMeasures(bool show)
{
if (d->m_ShowScaleMeasures == show) return;
d->m_ShowScaleMeasures = show;
if (pd->m_ShowScaleMeasures == show) return;
pd->m_ShowScaleMeasures = show;
if (show) {
if (!d->m_CubeAxesActor) {
d->m_CubeAxesActor = vtkSmartPointer<vtkCubeAxesActor>::New();
d->m_CubeAxesActor->SetFlyModeToOuterEdges();
d->m_CubeAxesActor->SetUseTextActor3D(1);
d->m_CubeAxesActor->GetProperty()->SetColor(1.0, 1.0, 1.0);
if (!pd->m_CubeAxesActor) {
pd->m_CubeAxesActor = vtkSmartPointer<vtkCubeAxesActor>::New();
pd->m_CubeAxesActor->SetFlyModeToOuterEdges();
pd->m_CubeAxesActor->SetUseTextActor3D(1);
pd->m_CubeAxesActor->GetProperty()->SetColor(1.0, 1.0, 1.0);
}
double* bounds = d->m_Assembly->GetBounds();
d->m_CubeAxesActor->SetBounds(bounds);
double* bounds = pd->m_Assembly->GetBounds();
pd->m_CubeAxesActor->SetBounds(bounds);
d->m_Renderers->InitTraversal();
for (int i = 0; i < d->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = d->m_Renderers->GetNextItem();
d->m_CubeAxesActor->SetCamera(renderer->GetActiveCamera());
renderer->AddActor(d->m_CubeAxesActor);
pd->m_Renderers->InitTraversal();
for (int i = 0; i < pd->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = pd->m_Renderers->GetNextItem();
pd->m_CubeAxesActor->SetCamera(renderer->GetActiveCamera());
renderer->AddActor(pd->m_CubeAxesActor);
}
} else {
if (d->m_CubeAxesActor) {
d->m_Renderers->InitTraversal();
for (int i = 0; i < d->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = d->m_Renderers->GetNextItem();
renderer->RemoveActor(d->m_CubeAxesActor);
if (pd->m_CubeAxesActor) {
pd->m_Renderers->InitTraversal();
for (int i = 0; i < pd->m_Renderers->GetNumberOfItems(); ++i) {
vtkRenderer *renderer = pd->m_Renderers->GetNextItem();
renderer->RemoveActor(pd->m_CubeAxesActor);
}
}
}
@@ -376,12 +376,12 @@ void Puppet::SetRepresentation(Representation mode)
case Wireframe: rep = VTK_WIREFRAME; break;
case Surface: rep = VTK_SURFACE; break;
}
d->m_Representation = rep;
pd->m_Representation = rep;
vtkProp3DCollection *props = d->m_Assembly->GetParts();
vtkProp3DCollection *props = pd->m_Assembly->GetParts();
props->InitTraversal();
for (int i = 0; i < props->GetNumberOfItems(); ++i) {
d->ApplyAppearance(props->GetNextProp3D());
pd->ApplyAppearance(props->GetNextProp3D());
}
}
@@ -395,25 +395,25 @@ void Puppet::SetRepresentation(const char *mode)
void Puppet::SetColor(double r, double g, double b)
{
d->m_Color[0] = r;
d->m_Color[1] = g;
d->m_Color[2] = b;
pd->m_Color[0] = r;
pd->m_Color[1] = g;
pd->m_Color[2] = b;
vtkProp3DCollection *props = d->m_Assembly->GetParts();
vtkProp3DCollection *props = pd->m_Assembly->GetParts();
props->InitTraversal();
for (int i = 0; i < props->GetNumberOfItems(); ++i) {
d->ApplyAppearance(props->GetNextProp3D());
pd->ApplyAppearance(props->GetNextProp3D());
}
}
void Puppet::SetOpacity(double alpha)
{
d->m_Opacity = alpha;
pd->m_Opacity = alpha;
vtkProp3DCollection *props = d->m_Assembly->GetParts();
vtkProp3DCollection *props = pd->m_Assembly->GetParts();
props->InitTraversal();
for (int i = 0; i < props->GetNumberOfItems(); ++i) {
d->ApplyAppearance(props->GetNextProp3D());
pd->ApplyAppearance(props->GetNextProp3D());
}
}
@@ -425,8 +425,8 @@ void Puppet::SetOpacity(double alpha)
void Puppet::SetSelectable(bool selectable)
{
d->m_Selectable = selectable;
vtkProp3DCollection *props = d->m_Assembly->GetParts();
pd->m_Selectable = selectable;
vtkProp3DCollection *props = pd->m_Assembly->GetParts();
props->InitTraversal();
for (int i = 0; i < props->GetNumberOfItems(); ++i) {
props->GetNextProp3D()->SetPickable(selectable);
@@ -435,43 +435,43 @@ void Puppet::SetSelectable(bool selectable)
bool Puppet::IsSelectable() const
{
return d->m_Selectable;
return pd->m_Selectable;
}
void Puppet::SetSelected(bool selected)
{
if (!d->m_Selectable) return;
if (d->m_Selected == selected) return;
d->m_Selected = selected;
d->UpdateHighlight();
if (!pd->m_Selectable) return;
if (pd->m_Selected == selected) return;
pd->m_Selected = selected;
pd->UpdateHighlight();
}
bool Puppet::IsSelected() const
{
return d->m_Selected;
return pd->m_Selected;
}
void Puppet::Update()
{
vtkProp3DCollection *props = d->m_Assembly->GetParts();
vtkProp3DCollection *props = pd->m_Assembly->GetParts();
props->InitTraversal();
for (int i = 0; i < props->GetNumberOfItems(); ++i) {
d->ApplyAppearance(props->GetNextProp3D());
pd->ApplyAppearance(props->GetNextProp3D());
}
if (d->m_Selected) {
d->UpdateHighlight();
if (pd->m_Selected) {
pd->UpdateHighlight();
}
if (d->m_ShowBoundingBox) {
double* bounds = d->m_Assembly->GetBounds();
d->m_OutlineSource->SetBounds(bounds);
d->m_OutlineSource->Update();
if (pd->m_ShowBoundingBox) {
double* bounds = pd->m_Assembly->GetBounds();
pd->m_OutlineSource->SetBounds(bounds);
pd->m_OutlineSource->Update();
}
if (d->m_ShowScaleMeasures) {
double* bounds = d->m_Assembly->GetBounds();
d->m_CubeAxesActor->SetBounds(bounds);
if (pd->m_ShowScaleMeasures) {
double* bounds = pd->m_Assembly->GetBounds();
pd->m_CubeAxesActor->SetBounds(bounds);
}
}
@@ -480,11 +480,11 @@ void Puppet::ConnectInteractor(vtkRenderWindowInteractor *interactor)
}
void Puppet::serialize_display(Archive::display_properties_archive & ar, const unsigned int version) {
ar & boost::serialization::make_hrp("ColorR", d->m_Color[0]);
ar & boost::serialization::make_hrp("ColorG", d->m_Color[1]);
ar & boost::serialization::make_hrp("ColorB", d->m_Color[2]);
ar & boost::serialization::make_hrp("Opacity", d->m_Opacity);
ar & boost::serialization::make_hrp("Representation", d->m_Representation);
ar & boost::serialization::make_hrp("ColorR", pd->m_Color[0]);
ar & boost::serialization::make_hrp("ColorG", pd->m_Color[1]);
ar & boost::serialization::make_hrp("ColorB", pd->m_Color[2]);
ar & boost::serialization::make_hrp("Opacity", pd->m_Opacity);
ar & boost::serialization::make_hrp("Representation", pd->m_Representation);
}
void Puppet::serialize(Archive::xml_oarchive & ar, const unsigned int v) { }