Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 #include <pcl/apps/modeler/channel_actor_item.h>
00038 
00039 #include <vtkCamera.h>
00040 #include <vtkPolyData.h>
00041 #include <vtkRenderer.h>
00042 #include <vtkMatrix4x4.h>
00043 #include <vtkRenderWindow.h>
00044 #include <vtkRendererCollection.h>
00045 #include <pcl/point_cloud.h>
00046 #include <pcl/apps/modeler/cloud_mesh.h>
00047 
00049 pcl::modeler::ChannelActorItem::ChannelActorItem(QTreeWidgetItem* parent,
00050   const boost::shared_ptr<CloudMesh>& cloud_mesh,
00051   const vtkSmartPointer<vtkRenderWindow>& render_window,
00052   const vtkSmartPointer<vtkActor>& actor,
00053   const std::string& channel_name)
00054   :QTreeWidgetItem(parent),
00055   AbstractItem(),
00056   cloud_mesh_(cloud_mesh),
00057   poly_data_(vtkSmartPointer<vtkPolyData>::New()),
00058   render_window_(render_window),
00059   color_scheme_("rgb"),
00060   actor_(actor)
00061 {
00062   setFlags(flags()&(~Qt::ItemIsDragEnabled));
00063   setFlags(flags()&(~Qt::ItemIsDropEnabled));
00064 
00065   setText(0, QString(channel_name.c_str()));
00066 }
00067 
00069 pcl::modeler::ChannelActorItem::~ChannelActorItem ()
00070 {
00071   detachActor();
00072 }
00073 
00075 void
00076 pcl::modeler::ChannelActorItem::init()
00077 {
00078   initImpl();
00079 
00080   attachActor();
00081   render_window_->Render();
00082 }
00083 
00085 void
00086 pcl::modeler::ChannelActorItem::update()
00087 {
00088   updateImpl();
00089 
00090   render_window_->Render();
00091 }
00092 
00094 void
00095 pcl::modeler::ChannelActorItem::attachActor()
00096 {
00097   render_window_->GetRenderers()->GetFirstRenderer()->AddActor(actor_);
00098 }
00099 
00101 void
00102 pcl::modeler::ChannelActorItem::detachActor()
00103 {
00104   render_window_->GetRenderers()->GetFirstRenderer()->RemoveActor(actor_);
00105 }
00106 
00108 void
00109 pcl::modeler::ChannelActorItem::prepareContextMenu(QMenu*) const
00110 {
00111 
00112 }
00113 
00115 void
00116 pcl::modeler::ChannelActorItem::switchRenderWindow(vtkRenderWindow* render_window)
00117 {
00118   detachActor();
00119   render_window_ = vtkSmartPointer<vtkRenderWindow>(render_window);
00120   attachActor();
00121 
00122   return;
00123 }