{
public:
LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
-
- void setLineWidth(float line_width);
- float getLineWidth();
};
class CV_EXPORTS PlaneWidget : public Widget3D
}
vtkPolyData *data = vtkPolyData::SafeDownCast(mapper->GetInput());
- CV_Assert(data);
+ CV_Assert("Cloud Widget without data" && data);
vtkSmartPointer<vtkAppendPolyData> appendFilter = vtkSmartPointer<vtkAppendPolyData>::New();
appendFilter->AddInputConnection(mapper->GetInput()->GetProducerPort());
transform_filter->Update();
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Incompatible widget type." && actor);
Vec3d minmax(scalars->GetRange());
CreateCloudWidget::createMapper(actor, transform_filter->GetOutput(), minmax);
transform_filter->Update();
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Incompatible widget type." && actor);
Vec3d minmax(scalars->GetRange());
CreateCloudWidget::createMapper(actor, transform_filter->GetOutput(), minmax);
void
cv::viz::InteractorStyle::OnKeyDown ()
{
- if (!init_)
- {
- std::cout << "Interactor style not initialized. Please call Initialize () before continuing" << std::endl;
- return;
- }
-
- if (!renderer_)
- {
- std::cout << "No renderer given! Use SetRendererCollection () before continuing." << std::endl;
- return;
- }
+
+ CV_Assert("Interactor style not initialized. Please call Initialize () before continuing" && init_);
+ CV_Assert("No renderer given! Use SetRendererCollection () before continuing." && renderer_);
FindPokedRenderer (Interactor->GetEventPosition ()[0], Interactor->GetEventPosition ()[1]);
setColor(color);
}
-void cv::viz::LineWidget::setLineWidth(float line_width)
-{
- vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
- actor->GetProperty()->SetLineWidth(line_width);
-}
-
-float cv::viz::LineWidget::getLineWidth()
-{
- vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
- return actor->GetProperty()->GetLineWidth();
-}
-
template<> cv::viz::LineWidget cv::viz::Widget::cast<cv::viz::LineWidget>()
{
Widget3D widget = this->cast<Widget3D>();
void cv::viz::Text3DWidget::setText(const String &text)
{
vtkFollower *actor = vtkFollower::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support text." && actor);
// Update text source
vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer());
- CV_Assert(textSource);
+ CV_Assert("This widget does not support text." && textSource);
textSource->SetText(text.c_str());
textSource->Update();
cv::String cv::viz::Text3DWidget::getText() const
{
vtkFollower *actor = vtkFollower::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support text." && actor);
vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer());
- CV_Assert(textSource);
+ CV_Assert("This widget does not support text." && textSource);
return textSource->GetText();
}
void cv::viz::TextWidget::setText(const String &text)
{
vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support text." && actor);
actor->SetInput(text.c_str());
}
cv::String cv::viz::TextWidget::getText() const
{
vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support text." && actor);
return actor->GetInput();
}
CV_Assert(!image.empty() && image.depth() == CV_8U);
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support overlay image." && actor);
vtkImageMapper *mapper = vtkImageMapper::SafeDownCast(actor->GetMapper());
- CV_Assert(mapper);
+ CV_Assert("This widget does not support overlay image." && mapper);
// Create the vtk image and set its parameters based on input image
vtkSmartPointer<vtkImageData> vtk_image = vtkSmartPointer<vtkImageData>::New();
CV_Assert(!image.empty() && image.depth() == CV_8U);
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("This widget does not support 3D image." && actor);
// Create the vtk image and set its parameters based on input image
vtkSmartPointer<vtkImageData> vtk_image = vtkSmartPointer<vtkImageData>::New();
reader->Update();
vtkSmartPointer<vtkPolyData> poly_data = reader->GetOutput ();
- CV_Assert(poly_data);
+ CV_Assert("File does not exist or file format is not supported." && poly_data);
vtkSmartPointer<vtkPoints> mesh_points = poly_data->GetPoints ();
vtkIdType nr_points = mesh_points->GetNumberOfPoints ();
/////////////////////////////////////////////////
interactor_ = vtkSmartPointer <vtkRenderWindowInteractor>::Take (vtkRenderWindowInteractorFixNew ());
- //win_->PointSmoothingOn ();
- //win_->LineSmoothingOn ();
- //win_->PolygonSmoothingOn ();
window_->AlphaBitPlanesOff ();
window_->PointSmoothingOff ();
window_->LineSmoothingOff ();
interactor_->SetRenderWindow (window_);
interactor_->SetInteractorStyle (style_);
- //interactor_->SetStillUpdateRate (30.0);
interactor_->SetDesiredUpdateRate (30.0);
// Initialize and create timer, also create window
{
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
bool exists = wam_itr != widget_actor_map_->end();
- CV_Assert(exists);
- CV_Assert(removeActorFromRenderer (wam_itr->second));
+ CV_Assert("Widget does not exist." && exists);
+ CV_Assert("Widget could not be removed." && removeActorFromRenderer (wam_itr->second));
widget_actor_map_->erase(wam_itr);
}
{
WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id);
bool exists = wam_itr != widget_actor_map_->end();
- CV_Assert(exists);
+ CV_Assert("Widget does not exist." && exists);
Widget widget;
WidgetAccessor::setProp(widget, wam_itr->second);
{
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
bool exists = wam_itr != widget_actor_map_->end();
- CV_Assert(exists);
+ CV_Assert("Widget does not exist." && exists);
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = convertToVtkMatrix(pose.matrix);
actor->SetUserMatrix (matrix);
{
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
bool exists = wam_itr != widget_actor_map_->end();
- CV_Assert(exists);
+ CV_Assert("Widget does not exist." && exists);
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
if (!matrix)
{
WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id);
bool exists = wam_itr != widget_actor_map_->end();
- CV_Assert(exists);
+ CV_Assert("Widget does not exist." && exists);
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
Matx44f matrix_cv = convertToMatx(matrix);
renderer_->RemoveAllViewProps();
}
-//////////////////////////////////////////////////////////////////////////////////////////
-bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor)
-{
- vtkLODActor* actor_to_remove = vtkLODActor::SafeDownCast (actor);
-
-
-
- // Iterate over all actors in this renderer
- vtkPropCollection* actors = renderer_->GetViewProps ();
- actors->InitTraversal ();
-
- vtkProp* current_actor = NULL;
- while ((current_actor = actors->GetNextProp ()) != NULL)
- {
- if (current_actor != actor_to_remove)
- continue;
- renderer_->RemoveActor (actor);
- // renderer->Render ();
- // Found the correct viewport and removed the actor
- return (true);
- }
-
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkActor> &actor)
-{
- vtkActor* actor_to_remove = vtkActor::SafeDownCast (actor);
-
- // Add it to all renderers
- //rens_->InitTraversal ();
-
-
- // Iterate over all actors in this renderer
- vtkPropCollection* actors = renderer_->GetViewProps ();
- actors->InitTraversal ();
- vtkProp* current_actor = NULL;
- while ((current_actor = actors->GetNextProp ()) != NULL)
- {
- if (current_actor != actor_to_remove)
- continue;
- renderer_->RemoveActor (actor);
- // renderer->Render ();
- // Found the correct viewport and removed the actor
- return (true);
- }
- return false;
-}
-
/////////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkProp> &actor)
{
if (event_id == vtkCommand::ExitEvent)
{
viz_->stopped_ = true;
+ viz_->interactor_->GetRenderWindow()->Finalize();
viz_->interactor_->TerminateApp ();
}
}
/** \brief The render window interactor style. */
vtkSmartPointer<InteractorStyle> style_;
-
- /** \brief Internal list with actor pointers and name IDs for point clouds. */
-// cv::Ptr<CloudActorMap> cloud_actor_map_;
-
- /** \brief Internal list with actor pointers and name IDs for shapes. */
-// cv::Ptr<ShapeActorMap> shape_actor_map_;
/** \brief Internal list with actor pointers and name IDs for all widget actors */
cv::Ptr<WidgetActorMap> widget_actor_map_;
/** \brief Boolean that holds whether or not the camera parameters were manually initialized*/
bool camera_set_;
- bool removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor);
- bool removeActorFromRenderer (const vtkSmartPointer<vtkActor> &actor);
bool removeActorFromRenderer (const vtkSmartPointer<vtkProp> &actor);
- //void addActorToRenderer (const vtkSmartPointer<vtkProp> &actor);
-
-
/** \brief Internal method. Creates a vtk actor from a vtk polydata object.
* \param[in] data the vtk polydata object to create an actor for
* \param[out] actor the resultant vtk actor object
reader->SetFileName (file_name.c_str ());
vtkSmartPointer<vtkDataSet> data = reader->GetOutput();
- CV_Assert(data);
+ CV_Assert("File does not exist or file format is not supported." && data);
vtkSmartPointer<vtkLODActor> actor = vtkSmartPointer<vtkLODActor>::New();
void cv::viz::Widget::setRenderingProperty(int property, double value)
{
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget type is not supported." && actor);
switch (property)
{
double cv::viz::Widget::getRenderingProperty(int property) const
{
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget type is not supported." && actor);
double value = 0.0;
switch (property)
void cv::viz::Widget3D::setPose(const Affine3f &pose)
{
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = convertToVtkMatrix(pose.matrix);
actor->SetUserMatrix (matrix);
void cv::viz::Widget3D::updatePose(const Affine3f &pose)
{
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
if (!matrix)
cv::Affine3f cv::viz::Widget3D::getPose() const
{
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget is not 3D." && actor);
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
Matx44f matrix_cv = MatrixConverter::convertToMatx(matrix);
{
// Cast to actor instead of prop3d since prop3d doesn't provide getproperty
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget type is not supported." && actor);
Color c = vtkcolor(color);
actor->GetMapper ()->ScalarVisibilityOff ();
template<> cv::viz::Widget3D cv::viz::Widget::cast<cv::viz::Widget3D>()
{
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget cannot be cast." && actor);
Widget3D widget;
WidgetAccessor::setProp(widget, actor);
void cv::viz::Widget2D::setColor(const Color &color)
{
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget type is not supported." && actor);
Color c = vtkcolor(color);
actor->GetProperty ()->SetColor (c.val);
actor->Modified ();
template<> cv::viz::Widget2D cv::viz::Widget::cast<cv::viz::Widget2D>()
{
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
- CV_Assert(actor);
+ CV_Assert("Widget cannot be cast." && actor);
Widget2D widget;
WidgetAccessor::setProp(widget, actor);