experimental widget casting functionality
This commit is contained in:
parent
509a93c7ce
commit
e4c3416f58
@ -15,6 +15,8 @@ namespace temp_viz
|
|||||||
Widget& operator =(const Widget &other);
|
Widget& operator =(const Widget &other);
|
||||||
|
|
||||||
~Widget();
|
~Widget();
|
||||||
|
|
||||||
|
template<typename _W> _W cast();
|
||||||
private:
|
private:
|
||||||
class Impl;
|
class Impl;
|
||||||
Impl *impl_;
|
Impl *impl_;
|
||||||
@ -56,13 +58,10 @@ namespace temp_viz
|
|||||||
void setColor(const Color &color);
|
void setColor(const Color &color);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CV_EXPORTS LineWidget : public Widget3D
|
class CV_EXPORTS LineWidget : public Widget3D
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
|
LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
|
||||||
LineWidget(const Widget &other) : Widget3D(other) {}
|
|
||||||
LineWidget& operator=(const Widget &other);
|
|
||||||
|
|
||||||
void setLineWidth(float line_width);
|
void setLineWidth(float line_width);
|
||||||
float getLineWidth();
|
float getLineWidth();
|
||||||
@ -158,4 +157,10 @@ namespace temp_viz
|
|||||||
private:
|
private:
|
||||||
struct ApplyCloudNormals;
|
struct ApplyCloudNormals;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<> CV_EXPORTS Widget3D Widget::cast<Widget3D>();
|
||||||
|
template<> CV_EXPORTS LineWidget Widget::cast<LineWidget>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,12 +24,6 @@ temp_viz::LineWidget::LineWidget(const Point3f &pt1, const Point3f &pt2, const C
|
|||||||
setColor(color);
|
setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
temp_viz::LineWidget& temp_viz::LineWidget::operator=(const Widget &other)
|
|
||||||
{
|
|
||||||
Widget3D::operator=(other);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void temp_viz::LineWidget::setLineWidth(float line_width)
|
void temp_viz::LineWidget::setLineWidth(float line_width)
|
||||||
{
|
{
|
||||||
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||||
@ -44,6 +38,12 @@ float temp_viz::LineWidget::getLineWidth()
|
|||||||
return actor->GetProperty()->GetLineWidth();
|
return actor->GetProperty()->GetLineWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<> temp_viz::LineWidget temp_viz::Widget::cast<temp_viz::LineWidget>()
|
||||||
|
{
|
||||||
|
Widget3D widget = this->cast<Widget3D>();
|
||||||
|
return static_cast<LineWidget&>(widget);
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// plane widget implementation
|
/// plane widget implementation
|
||||||
|
|
||||||
|
@ -165,6 +165,16 @@ void temp_viz::Widget3D::setColor(const Color &color)
|
|||||||
actor->Modified ();
|
actor->Modified ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<> temp_viz::Widget3D temp_viz::Widget::cast<temp_viz::Widget3D>()
|
||||||
|
{
|
||||||
|
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||||
|
CV_Assert(actor);
|
||||||
|
|
||||||
|
Widget3D widget;
|
||||||
|
WidgetAccessor::setProp(widget, actor);
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// widget2D implementation
|
/// widget2D implementation
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user