]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx
It works !! Basic D&D and creation of VTK rectangle... Good work
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsKernelEditorGraphic / wxVtkSceneManager.cxx
index 1b87e2c766746a852a77ba18d83867761bc8e5b5..e476c03cf225682f21c2d718023058d3a18dedd0 100644 (file)
@@ -35,12 +35,6 @@ Version:   $Revision$
 
 
 #include "wxVtkSceneManager.h"
-#include <vtkInteractorStyleBaseView2D.h>
-
-#include "vtkConeSource.h"
-#include "vtkPolyDataMapper.h"
-#include "vtkActor.h"
-#include "vtkRenderer.h"
 
 namespace bbtk
 {
@@ -55,14 +49,13 @@ namespace bbtk
                {
                        
                        _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(parent);
+                       registerController(this);
 
-                       registerController(this);                       
                        configureBaseView();
 
-                       vtkRenderer *ren1 =_baseView->GetRenderer();
                        vtkConeSource *cone = vtkConeSource::New();
        
-                  cone->SetResolution(8);
+                  cone->SetResolution(10);
                        
                   vtkPolyDataMapper *map = vtkPolyDataMapper::New();
                   map->SetInput(cone->GetOutput());
@@ -71,31 +64,103 @@ namespace bbtk
                        
                   act->SetMapper(map);
                        
-                  ren1->AddActor(act);
+                       /////////////////////
+
+
+                  vtkPoints *_pts = vtkPoints::New();
+                       _pts->SetNumberOfPoints(4);
+
+                       _pts->SetPoint(0, -1    , -1    , 0 );
+                       _pts->SetPoint(1,  1    , -1    , 0 );
+                       _pts->SetPoint(2,  1    ,  1    , 0 );
+                       _pts->SetPoint(3, -1    ,  1    , 0 );
+       
+                       vtkCellArray *lines = vtkCellArray::New();
+                       lines->InsertNextCell(5);
+                       lines->InsertCellPoint(0);
+                       lines->InsertCellPoint(1);
+                       lines->InsertCellPoint(2);
+                       lines->InsertCellPoint(3);
+                       lines->InsertCellPoint(0);
+
+                       vtkPolyData *_pd = vtkPolyData::New();
+                       _pd->SetPoints( _pts );
+                       _pd->SetLines( lines );
+
+                       vtkActor *_pointVtkActor        =       vtkActor::New();
+                       vtkPolyDataMapper* _bboxMapper          =       vtkPolyDataMapper::New();
+
+                       _bboxMapper->SetInput(_pd);
+                       _pointVtkActor->SetMapper(_bboxMapper);
+
+                       getRenderer()->AddActor(_pointVtkActor);
+
+
+
+                       /////////////////////
+
+                  //getRenderer()->AddActor(act);
                
-                  ren1->Render();
+                  //getRenderer()->Render();
+
+
                }
        }
 
+       //=========================================================================
+       void wxVtkSceneManager::disconnectDrop()
+       {
+               _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL);
+       }
        //=========================================================================
        wxVtkSceneManager::~wxVtkSceneManager()
        {
-               //_baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL);
        }
        //=========================================================================
 
        void wxVtkSceneManager::configureBaseView()
        {
-               vtkInteractorStyleBaseView2D   *temp  = new vtkInteractorStyleBaseView2D();
-               _baseView->SetInteractorStyleBaseView(temp);
+               vtkInteractorStyleImage *temp = vtkInteractorStyleImage::New();
+               _baseView->GetWxVTKRenderWindowInteractor()->SetInteractorStyle(temp);
+               _baseView->GetRenderer()->SetActiveCamera(_baseView->GetCamera());
+           _baseView->GetRenderer()->ResetCamera ();
+               _baseView->GetCamera()->SetParallelProjection(true);
+               _baseView->Refresh();
+
        }
 
        //=========================================================================
 
-       void wxVtkSceneManager::createGBlackBox()
+       void wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, std::string boxName)
        {
-               InteractorStyleMaracas *toAdd = VTKGObjectsFactory::getInstance()->createGBlackBox(_baseView);
-               registerController(toAdd);
+               int type = GBLACKBOX;
+
+               //Create the MVC Objects
+               GObjectModel *model = GObjectsMVCFactory::getInstance()->createGObjectModel(type);
+               vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type);
+               GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type);
+               
+               //Prepares the initial model
+               double xx = x;
+               double yy = y;
+               double zz = 900;
+
+               _baseView->TransCoordScreenToWorld(xx,yy,zz);
+
+               //Associates the view with the correspondent renderer and the  model.
+               //(NOTE: Refresh is only made by the view)
+               model->setInicPoint(xx,yy,zz);
+               view->setModel(model);
+               view->setRenderer(_baseView->GetRenderer());
+               view->initVtkObjects();
+               
+               //Refresh renderwindow with new objects
+               refreshRenderWindow();
+
+               //Associates the controller with the correspondent model and view
+               controller->setModelAndView(model,view);
+               
+               registerController((InteractorStyleMaracas*) controller);
        }
 
        //=========================================================================
@@ -120,7 +185,12 @@ namespace bbtk
                return _baseView->GetRenWin();
        }
        //=========================================================================
-
+       
+       void wxVtkSceneManager::refreshRenderWindow()
+       {
+               _baseView->GetRenWin()->Render();
+       }
+       //=========================================================================
 
        //=========================================================================
 }  // EO namespace bbtk