]> Creatis software - bbtkGEditor.git/commitdiff
Changes to manage the events capturing in the vtkWorld. Some problems with that ....
authorcorredor <>
Sat, 27 Mar 2010 17:39:01 +0000 (17:39 +0000)
committercorredor <>
Sat, 27 Mar 2010 17:39:01 +0000 (17:39 +0000)
lib/EditorGraphicBBS/bbsKernelEditorGraphic/GObjectModel.cxx
lib/EditorGraphicBBS/bbsKernelEditorGraphic/GObjectModel.h
lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx
lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.h
lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.cxx
lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.h
lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBlackBoxView.h
lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGObjectView.cxx
lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGObjectView.h

index d871e06c0c2250eed76e9003952a0cc007a9ca9a..47008daac3513b2f9036f02ad3304fb1ae25cbe3 100644 (file)
@@ -50,6 +50,7 @@ namespace bbtk
                _xFin = 0;
                _yFin = 0;
                _zFin = 900;
+               _state = NOTHING_HAPPENS;
        }
 
        //=========================================================================
@@ -69,7 +70,7 @@ namespace bbtk
        void GObjectModel::getFinalPoint(double& x, double& y, double& z)
        {
                x = _xInic+BOX_SIDE;
-               y = _yInic+BOX_SIDE;
+               y = _yInic-BOX_SIDE;
                z = _zFin;
        }
        //=========================================================================
@@ -91,7 +92,29 @@ namespace bbtk
        }
        //=========================================================================
 
+       void GObjectModel::setState(int state)
+       {
+               _state = state;
+       }
+
+       //=========================================================================
+
+       int GObjectModel::getState()
+       {
+               return _state;
+       }
 
+       //=========================================================================
+
+       bool GObjectModel::isPointInside(double x,double y, double z)//virtual
+       {
+               if(x>=_xInic && x<=_xFin && y<=_yInic && y>=_yFin)
+                       return true;
+               else
+                       return false;
+       }
+
+       //=========================================================================
 
 }  // EO namespace bbtk
 
index 9f7a265a50629e3a177fc5120b43518b43614d5a..ed0a3e230c642cb904636ac68f705ddfa31a2698 100644 (file)
@@ -69,6 +69,9 @@ namespace bbtk
                void getFinalPoint(double& x, double& y, double& z);
                void setInicPoint(double& x, double& y, double& z);
                void setFinalPoint(double& x, double& y, double& z);
+               void setState(int state);
+               int getState();
+               virtual bool isPointInside(double x,double y, double z);
 
        private:
 
@@ -87,8 +90,10 @@ namespace bbtk
                double _yFin;
                double _zFin;
 
-               //Protected methods
+               int  _state;
 
+               //Protected methods
+               
        };
 
 
index e476c03cf225682f21c2d718023058d3a18dedd0..659856bce77884fec566bb328ca0998f0ec2e303 100644 (file)
@@ -122,11 +122,12 @@ namespace bbtk
        {
                vtkInteractorStyleImage *temp = vtkInteractorStyleImage::New();
                _baseView->GetWxVTKRenderWindowInteractor()->SetInteractorStyle(temp);
-               _baseView->GetRenderer()->SetActiveCamera(_baseView->GetCamera());
-           _baseView->GetRenderer()->ResetCamera ();
-               _baseView->GetCamera()->SetParallelProjection(true);
+               //_baseView->GetRenderer()->SetActiveCamera(_baseView->GetCamera());
+           //_baseView->GetRenderer()->ResetCamera ();
+               //_baseView->GetCamera()->SetParallelProjection(true);
+               
+               _baseView->GetRenderer()->SetBackground(1,1,1);
                _baseView->Refresh();
-
        }
 
        //=========================================================================
@@ -141,9 +142,10 @@ namespace bbtk
                GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type);
                
                //Prepares the initial model
+               cout<<"RaC Size:"<<_baseView->GetRenWin()->GetSize()[1]<<endl;
                double xx = x;
-               double yy = y;
-               double zz = 900;
+               double yy =  _baseView->GetRenWin()->GetSize()[1]-y;
+               double zz = 0;
 
                _baseView->TransCoordScreenToWorld(xx,yy,zz);
 
@@ -151,7 +153,7 @@ namespace bbtk
                //(NOTE: Refresh is only made by the view)
                model->setInicPoint(xx,yy,zz);
                view->setModel(model);
-               view->setRenderer(_baseView->GetRenderer());
+               view->setBaseView(_baseView);
                view->initVtkObjects();
                
                //Refresh renderwindow with new objects
@@ -167,6 +169,7 @@ namespace bbtk
 
        void wxVtkSceneManager::registerController(InteractorStyleMaracas *param)
        {
+               cout<<"RaC wxVtkSceneManager::registerController param:"<<param<<endl;
                vtkInteractorStyleBaseView* baseViewControlManager = (vtkInteractorStyleBaseView*)_baseView->GetInteractorStyleBaseView();
                baseViewControlManager->AddInteractorStyleMaracas( param );
        }
@@ -192,6 +195,11 @@ namespace bbtk
        }
        //=========================================================================
 
+       bool wxVtkSceneManager::OnMouseMove()
+       {
+               cout<<"RaC wxVtkSceneManager::OnMouseMove "<<endl;
+               return true;
+       }
        //=========================================================================
 }  // EO namespace bbtk
 
index 92f4a60aec3b0d8f34e9be398e39f315a46e318d..7d1c7d0b9c55cb1c7fadf90510cb056f061c3404 100644 (file)
@@ -75,6 +75,7 @@ namespace bbtk
                vtkRenderWindow* getRenderWindow();
                vtkRenderer* getRenderer();
                void disconnectDrop();
+               virtual bool OnMouseMove();
 
                
        private:
index f00541cc38624a249b5b7d4008233d6f849dc905..fba50c45ef59811a2b094e1db6af6f881e34bd65 100644 (file)
@@ -59,6 +59,126 @@ namespace bbtk
        }
        //=========================================================================
 
+bool GObjectController::OnMouseMove()
+{
+       cout<<"RaC GObjectController::OnMouseMove "<<endl;
+       if ( _vtkInteractorStyleBaseView!=NULL)
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *_wxVTKiren;
+               _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               _wxVTKiren->GetEventPosition( X , Y );
+
+               int state  = _model->getState();
+               
+               //Evaluate new state
+               if(state == CLICKED)
+               {
+                       _model->setState(DRAG);
+                       //MoveObject(X,Y);
+                       
+               }
+               if(state == DRAG)
+               {
+                       //MoveObject(X,Y);
+                       
+               }
+               if(state == NOTHING_HAPPENS)
+               {
+                       if(_view->isPointInside(X,Y))
+                       {
+                               _model->setState(HIGHLIGHTED);                          
+                       }
+               }
+               
+               _view->refresh();
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnLeftButtonDown()
+{
+       
+       if ( _vtkInteractorStyleBaseView!=NULL )
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *wxVTKiren;
+               wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               wxVTKiren->GetEventPosition(X,Y);
+
+               //MouseClickLeft(X,Y);
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnLeftButtonUp()
+{
+       if ( _vtkInteractorStyleBaseView!=NULL )
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *wxVTKiren;
+               wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               wxVTKiren->GetEventPosition(X,Y);
+               //MouseReleaseLeft(X,Y);
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnLeftDClick()
+{
+       if ( _vtkInteractorStyleBaseView!=NULL )
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *wxVTKiren;
+               wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               wxVTKiren->GetEventPosition(X,Y);
+
+               //this->MouseDLeft(X,Y);
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnMiddleButtonDown()
+{
+       if ( _vtkInteractorStyleBaseView!=NULL )
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *wxVTKiren;
+               wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               wxVTKiren->GetEventPosition(X,Y);
+               //GetManualViewBaseContour()->InitMove( X, Y,GetZ());
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnMiddleButtonUp()
+{
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnRightButtonDown()
+{
+       if( _vtkInteractorStyleBaseView!= NULL )
+       {
+               int X,Y;
+               wxVTKRenderWindowInteractor *wxVTKiren;
+               wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
+               wxVTKiren->GetEventPosition(X, Y);
+
+               //SetCompleteCreation( true );
+               //SetKeyBoardMoving( false );
+               //this->GetManualContourModel()->SetCloseContour(true);
+               //MouseClickRight(X,Y);
+       }
+       return true;
+}
+//=========================================================================
+bool GObjectController::OnRightButtonUp()
+{
+       return true;
+}
+//=========================================================================
+
 }  // EO namespace bbtk
 
 // EOF
index aea9ab9fb0c59e4d9d4f5d5543488128c94439f5..9c5403b4c4e979a75d3ad59049ed46b62f45b87f 100644 (file)
@@ -81,6 +81,19 @@ namespace bbtk
 
        protected:
 
+               //Protected Attributes 
+
+
+               //Protected Methods
+               virtual bool  OnMouseMove();
+               virtual bool  OnLeftButtonDown(); 
+               virtual bool  OnLeftButtonUp();
+               virtual bool  OnLeftDClick();
+               virtual bool  OnMiddleButtonDown(); 
+               virtual bool  OnMiddleButtonUp();
+               virtual bool  OnRightButtonDown();
+               virtual bool  OnRightButtonUp();
+
        };
 
 
index 35a8c5115f3d872d5576cebd2ee64e2d675b4f85..72e6819a1332e11eda78531cbab1422afb551932 100644 (file)
@@ -48,10 +48,8 @@ Version:   $Revision$
 #include "vtkGObjectView.h"
 
 //Includes creaMaracasVisu
-#include <wxVtk3DBaseView.h>
 
 //Includes vtk
-#include <vtkRenderer.h>
 
 #include "vtkPolyDataMapper.h"
 #include "vtkActor.h"
index 0f748b84285bbd570f084bd5e3bf63a3e6b03513..7e4d139bf5146c0badb86b7d431e99dabc44ef45 100644 (file)
@@ -43,7 +43,7 @@ namespace bbtk
        //=========================================================================
        vtkGObjectView::vtkGObjectView()
        {
-               _renderer=NULL;
+               _baseView=NULL;
                _objectActor=NULL;
        }
 
@@ -55,6 +55,16 @@ namespace bbtk
 
        void vtkGObjectView::refresh()
        {
+               if(_model->getState()==NOTHING_HAPPENS)
+               {
+                       _objectActor->GetProperty()->SetColor(0,0,0);
+               }
+
+               if(_model->getState()==HIGHLIGHTED)
+               {
+                       _objectActor->GetProperty()->SetColor(1,0,0);
+               }
+
                //paint();
        }
 
@@ -67,9 +77,9 @@ namespace bbtk
 
        //=========================================================================
        
-       void vtkGObjectView::setRenderer(vtkRenderer* renderer)
+       void vtkGObjectView::setBaseView(wxVtkBaseView* baseView)
        {
-               _renderer=renderer;
+               _baseView=baseView;
        }
 
        //=========================================================================
@@ -91,8 +101,17 @@ namespace bbtk
 
        void vtkGObjectView::addVtkActors()//virtual
        {
-               _renderer->AddActor(_objectActor);
-               _renderer->Render();
+               _baseView->GetRenderer()->AddActor(_objectActor);
+               _baseView->GetRenderer()->Render();
+       }
+
+       //=========================================================================
+
+       bool vtkGObjectView::isPointInside(int X,int Y) 
+       {
+               double xx=X,yy=Y,zz=0;
+               _baseView->TransCoordScreenToWorld(xx,yy,zz);
+               return _model->isPointInside(xx,yy,zz);
        }
 
        //=========================================================================
index d314081f5e723b1c6457c0eca4ed3bf9d33f66e3..5c15592c3bc160911387dda6fa2527f933a3335c 100644 (file)
@@ -48,7 +48,7 @@ Version:   $Revision$
 #include "GObjectModel.h"
 
 //Includes creaMaracasVisu
-#include <wxVtk3DBaseView.h>
+#include <wxVtkBaseView.h>
 
 //Includes vtk
 #include <vtkRenderer.h>
@@ -76,8 +76,10 @@ namespace bbtk
                
                //Public methods
                void setModel(GObjectModel *model);
-               void setRenderer(vtkRenderer* renderer);
+               void setBaseView(wxVtkBaseView* baseView);
                void initVtkObjects();
+               
+               bool isPointInside(int X,int Y);
 
                virtual void refresh();
 
@@ -90,7 +92,7 @@ namespace bbtk
        protected:
 
                //Protected Attributes
-               vtkRenderer *_renderer;
+               wxVtkBaseView *_baseView;
                GObjectModel *_model;
                vtkActor *_objectActor;