/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::GObjectModel : abstract black-box interface.
-*/
+ * \file
+ * \brief Class bbtk::GObjectModel : abstract black-box interface.
+ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#ifndef __GObjectModel_h__
#define __GObjectModel_h__
//Includes bbtk
#include <bbtkBlackBoxDescriptor.h>
-namespace bbtk
-{
+namespace bbtk {
- class GObjectModel : public Observable
- {
+ class GObjectModel : public Observable {
+ public:
- public:
+ //Constructors
+ GObjectModel( );
+ ~ GObjectModel( );
- //Constructors
- GObjectModel();
- ~GObjectModel();
-
- //Public methods
-
- // Method to get the values of Inic or Final point passed as references in the parameters
- void getInicPoint(double& x, double& y, double& z);
- void getFinalPoint(double& x, double& y, double& z);
+ //Public methods
- // Returns the center of the enclosing rectangle
- void getCenter(double& x, double& y, double& z);
+ // Method to get the values of Inic or Final point passed as references in the parameters
+ void getInicPoint( double& x, double& y, double& z );
+ void getFinalPoint( double& x, double& y, double& z );
- // Method to set the values of Inic or Final point
- virtual void setInicPoint(double& x, double& y, double& z);
- virtual void setFinalPoint(double& x, double& y, double& z);
-
- // Changes the inic(top-left point) point of the rectangle
- virtual void move(double xx,double yy,double zz);
+ // Returns the center of the enclosing rectangle
+ void getCenter( double& x, double& y, double& z );
- // Returns true if (x,y,z) is inside the rectangle
- virtual bool isPointInside(double x,double y, double z);
+ // Method to set the values of Inic or Final point
+ virtual void setInicPoint( double& x, double& y, double& z );
+ virtual void setFinalPoint( double& x, double& y, double& z );
- // Get the type of the graphical objects (See the GlobalConstants.h file)
- int getGObjectType();
- void setGObjectType(int obtype);
+ // Changes the inic(top-left point) point of the rectangle
+ virtual void move( double xx, double yy, double zz );
- // The type in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), LoadHola is the type
- std::string getBBTKType();
- void setBBTKType(std::string obtype);
+ // Returns true if (x,y,z) is inside the rectangle
+ virtual bool isPointInside( double x, double y, double z );
- // The name in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), abcd is the name
- std::string getBBTKName();
- void setBBTKName(std::string obname);
+ // Get the type of the graphical objects (See the GlobalConstants.h file)
+ int getGObjectType( );
+ void setGObjectType( int obtype );
- // Object ID
- int getObjectId();
- void setObjectId(int id);
+ // The type in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), LoadHola is the type
+ std::string getBBTKType( );
+ void setBBTKType( std::string obtype );
- // Status bar message
- virtual std::string getStatusText();
+ // The name in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), abcd is the name
+ std::string getBBTKName( );
+ void setBBTKName( std::string obname );
- virtual void save(std::string &content);
-
- private:
+ // Object ID
+ int getObjectId( );
+ void setObjectId( int id );
- //Private Attributes
+ // Status bar message
+ virtual std::string getStatusText( );
- //Private Methods
+ virtual void save( std::string &content );
- protected:
-
- //Protected Attributes
-
- double _xInic;
- double _yInic;
- double _zInic;
- double _xFin;
- double _yFin;
- double _zFin;
+ private:
- int _objectId;
+ //Private Attributes
- // The type of the graphical objects (See the GlobalConstants.h file)
- int _gObjectType;
+ //Private Methods
- // The type in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), LoadHola is the type
- std::string _bbtkType;
+ protected:
- // The name in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), abcd is the name
- std::string _bbtkName;
+ //Protected Attributes
- //Protected methods
-
- };
+ double _xInic;
+ double _yInic;
+ double _zInic;
+ double _xFin;
+ double _yFin;
+ double _zFin;
+
+ int _objectId;
+
+ // The type of the graphical objects (See the GlobalConstants.h file)
+ int _gObjectType;
+
+ // The type in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), LoadHola is the type
+ std::string _bbtkType;
+
+ // The name in BBTK, for boxes for example in a BBS line like (new LoadHola abcd), abcd is the name
+ std::string _bbtkName;
+
+ //Protected methods
+
+ };
}
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::GPortModel
-*/
+ * \file
+ * \brief Class bbtk::GPortModel
+ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#include "GPortModel.h"
-namespace bbtk
-{
+namespace bbtk {
- //=========================================================================
- GPortModel::GPortModel()
- {
- _parentBox = NULL;
- _portType=-1;
- _posInBox=0;
- _isConnected=false;
- _value="";
- _isValueSet=false;
- }
+ //=========================================================================
- //=========================================================================
- GPortModel::~GPortModel()
- {
- }
- //=========================================================================
+ GPortModel::GPortModel( ) {
+ _parentBox = NULL ;
+ _portType = -1 ;
+ _posInBox = 0 ;
+ _isConnected = false ;
+ _value = "" ;
+ _isValueSet = false ;
+ }
- void GPortModel::registerInBox(GBoxModel *blackBox,int portType, int pos)
- {
- _parentBox = blackBox;
- _portType = portType;
- _posInBox = pos;
-
- updatePortPosition();
-
- }
-
- //=========================================================================
-
- void GPortModel::updatePortPosition()
- {
- double xInic, yInic,zInic,xFin,yFin,zFin;
- _parentBox->getInicPoint(xInic,yInic,zInic);
- _parentBox->getFinalPoint(xFin, yFin,zFin);
-
- double posX=xInic,posY=yInic,posZ=zInic;
- if(_portType==GOUTPUTPORT)
- {
- posY = yFin;
- }
- else if(_portType==GINPUTPORT)
- {
- posY = yInic+PORT_HEIGHT;
- }
+ //=========================================================================
- //Attribute '_posInBox' starts with value 0 and it represents the position of the port in the box from left to right
- posX = xInic + (PORT_WIDTH/2) + _posInBox*1.1*PORT_WIDTH;
+ GPortModel::~GPortModel( ) {
+ }
+ //=========================================================================
- setInicPoint(posX,posY,posZ);
+ void GPortModel::registerInBox( GBoxModel *blackBox , int portType , int pos ) {
+ _parentBox = blackBox ;
+ _portType = portType ;
+ _posInBox = pos ;
- posX=posX+PORT_WIDTH;
- posY=posY-PORT_HEIGHT;
-
- setFinalPoint(posX,posY,posZ);
-
- }
+ updatePortPosition( ) ;
- //=========================================================================
+ }
- int GPortModel::getPortType()
- {
- return _portType;
- }
+ //=========================================================================
- //=========================================================================
+ void GPortModel::updatePortPosition( ) {
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
+ _parentBox->getInicPoint( xInic , yInic , zInic ) ;
+ _parentBox->getFinalPoint( xFin , yFin , zFin ) ;
- int GPortModel::getPosInBox()
- {
- return _posInBox;
- }
+ double posX = xInic , posY = yInic , posZ = zInic ;
+ if ( _portType == GOUTPUTPORT ) {
+ posY = yFin ;
+ } else if ( _portType == GINPUTPORT ) {
+ posY = yInic + PORT_HEIGHT ;
+ }
- //=========================================================================
+ //Attribute '_posInBox' starts with value 0 and it represents the position of the port in the box from left to right
+ posX = xInic + ( PORT_WIDTH / 2 ) + _posInBox * 1.1 * PORT_WIDTH ;
- std::string GPortModel::getStatusText()
- {
- std::string temp = "";
+ setInicPoint( posX , posY , posZ ) ;
- temp+=_bbtkName;
- if(isValueSet())
- {
- temp+="(";
- temp+=_value;
- temp+=")";
- }
- temp+=" ";
- temp+=_bbtkType;
+ posX = posX + PORT_WIDTH ;
+ posY = posY - PORT_HEIGHT ;
- return temp;
- }
+ setFinalPoint( posX , posY , posZ ) ;
- //=========================================================================
+ }
- GBoxModel* GPortModel::getParentBox()
- {
- return _parentBox;
- }
-
- //=========================================================================
-
- bool GPortModel::isConnected()
- {
- return _isConnected;
- }
-
- //=========================================================================
-
- void GPortModel::setConnected(bool value)
- {
- _isConnected=value;
- notifyObservers(_objectId);
- }
+ //=========================================================================
- //=========================================================================
+ int GPortModel::getPortType( ) {
+ return _portType ;
+ }
- void GPortModel::setValue(std::string value)
- {
- _value = value;
- if(_value=="")
- {
- _isValueSet=false;
- }
- else
- {
- _isValueSet=true;
- }
- notifyObservers(_objectId);
- }
+ //=========================================================================
- //=========================================================================
-
- std::string GPortModel::getValue()
- {
- return _value;
- }
+ int GPortModel::getPosInBox( ) {
+ return _posInBox ;
+ }
- //=========================================================================
+ //=========================================================================
- bool GPortModel::isValueSet()
- {
- return _isValueSet;
- }
+ std::string GPortModel::getStatusText( ) {
+ std::string temp = "" ;
- //=========================================================================
+ temp += _bbtkName ;
+ if ( isValueSet( ) ) {
+ temp += "(" ;
+ temp += _value ;
+ temp += ")" ;
+ }
+ temp += " " ;
+ temp += _bbtkType ;
- void GPortModel::save(std::string &content)
- {
- content+="PORT\n";
+ return temp ;
+ }
- // Port value info
- content+=_bbtkName;
- content+=":";
- content+=_value;
- content+="\n";
- }
+ //=========================================================================
- //=========================================================================
+ GBoxModel* GPortModel::getParentBox( ) {
+ return _parentBox ;
+ }
-} // EO namespace bbtk
+ //=========================================================================
+
+ bool GPortModel::isConnected( ) {
+ return _isConnected ;
+ }
+
+ //=========================================================================
+
+ void GPortModel::setConnected( bool value ) {
+ _isConnected = value ;
+ notifyObservers( _objectId ) ;
+ }
+
+ //=========================================================================
+
+ void GPortModel::setValue( std::string value ) {
+ _value = value ;
+ if ( _value == "" ) {
+ _isValueSet = false ;
+ } else {
+ _isValueSet = true ;
+ }
+ notifyObservers( _objectId ) ;
+ }
+
+ //=========================================================================
+
+ std::string GPortModel::getValue( ) {
+ return _value ;
+ }
+
+ //=========================================================================
+
+ bool GPortModel::isValueSet( ) {
+ return _isValueSet ;
+ }
+
+ //=========================================================================
+
+ void GPortModel::save( std::string &content ) {
+ content += "PORT\n" ;
+
+ // Port value info
+ content += _bbtkName ;
+ content += ":" ;
+ content += _value ;
+ content += "\n" ;
+ }
+
+ //=========================================================================
+
+} // EO namespace bbtk
// EOF
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#ifndef __GlobalConstants_h__
#define __GlobalConstants_h__
-namespace bbtk
-{
+namespace bbtk {
// Object types
const int GBLACKBOX = 1;
const int GCOMPLEXOUTPUTPORT = 7;
// Object states
+
+ // JGRR
+ const int POSSIBLE_CONNECTION = 107;
+ const int SELECTED_POSSIBLE_CONNECTION = 108;
+ // EO JGRR
+
const int NOTHING_HAPPENS = 101;
const int HIGHLIGHTED = 102;
const int CLICKED = 103;
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::GObjectController
-*/
+ * \file
+ * \brief Class bbtk::GObjectController
+ */
#include "GObjectController.h"
+
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
namespace bbtk
{
+ //=========================================================================
+
+ GObjectController::GObjectController( ) {
+
+ }
+
+ //=========================================================================
+
+ GObjectController::~GObjectController( ) {
+ }
+ //=========================================================================
- //=========================================================================
- GObjectController::GObjectController()
- {
+ void GObjectController::setModelAndView( GObjectModel* model , vtkGObjectView* view ) {
+ _model = model ;
+ _view = view ;
+ }
- }
+ //=========================================================================
- //=========================================================================
+ bool GObjectController::OnMouseMove( ) {
+ int X , Y ;
+ wxVTKRenderWindowInteractor *_wxVTKiren ;
+ _wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView( )->GetWxVTKRenderWindowInteractor( ) ;
+ _wxVTKiren->GetEventPosition( X , Y ) ;
+ int state = _view->getState( ) ;
- GObjectController::~GObjectController()
- {
- }
- //=========================================================================
+ //Evaluate new state
+ if ( state == NOTHING_HAPPENS ) {
+ if ( _view->isPointInside( X , Y ) ) {
+ _view->setState( HIGHLIGHTED ) ;
+ }
+ }
+ if ( state == HIGHLIGHTED ) {
+ if ( !_view->isPointInside( X , Y ) ) {
+ _view->setState( NOTHING_HAPPENS ) ;
+ }
+ }
- void GObjectController::setModelAndView(GObjectModel* model, vtkGObjectView* view)
- {
- _model = model;
- _view = view;
- }
+ // JGRR & CM WH
- //=========================================================================
+ if ( state == POSSIBLE_CONNECTION ) {
+ if ( _view->isPointInside( X , Y ) ) {
+ _view->setState( SELECTED_POSSIBLE_CONNECTION ) ;
+ }
+ }
- bool GObjectController::OnMouseMove()
- {
- int X,Y;
- wxVTKRenderWindowInteractor *_wxVTKiren;
- _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
- _wxVTKiren->GetEventPosition( X , Y );
- int state = _view->getState();
+ if ( state == SELECTED_POSSIBLE_CONNECTION ) {
+ if ( !_view->isPointInside( X , Y ) ) {
+ _view->setState( POSSIBLE_CONNECTION ) ;
+ }
+ }
- //Evaluate new state
- if( state == NOTHING_HAPPENS)
- {
- if(_view->isPointInside(X,Y))
- {
- _view->setState(HIGHLIGHTED);
- }
- }
- if( state==HIGHLIGHTED)
- {
- if(!_view->isPointInside(X,Y))
- {
- _view->setState(NOTHING_HAPPENS);
- }
- }
+ // EO JGRR & CM WH
- //_model->notifyObservers(getId());
+ _model->notifyObservers( getId( ) ) ;
- return true;
- }
+ return true ;
+ }
- //=========================================================================
+ //=========================================================================
- bool GObjectController::OnLeftButtonDown()//virtual
- {
- int state = _view->getState();
+ bool GObjectController::OnLeftButtonDown( )//virtual
+ {
+ int state = _view->getState( ) ;
- //Evaluate new state
- if(state == HIGHLIGHTED)
- {
- _isLeftClickDown=true;
- _view->setState(SELECTED);
- }
- return true;
- }
+ //Evaluate new state
+ if ( state == HIGHLIGHTED ) {
+ _isLeftClickDown = true ;
+ _view->setState( SELECTED ) ;
+ }
+ return true ;
+ }
- //=========================================================================
+ //=========================================================================
- bool GObjectController::OnLeftButtonUp()//virtual
- {
- return true;
- }
+ bool GObjectController::OnLeftButtonUp( )//virtual
+ {
+ return true ;
+ }
- //=========================================================================
+ //=========================================================================
- bool GObjectController::OnLeftDClick()//virtual
- {
+ bool GObjectController::OnLeftDClick( )//virtual
+ {
- return true;
- }
+ return true ;
+ }
- //=========================================================================
+ //=========================================================================
- bool GObjectController::OnMiddleButtonDown()//virtual
- {
- return true;
- }
+ bool GObjectController::OnMiddleButtonDown( )//virtual
+ {
+ return true ;
+ }
- //=========================================================================
+ //=========================================================================
- void GObjectController::moveObject(int X,int Y)
- {
- _view->moveObject(X,Y);
- }
+ void GObjectController::moveObject( int X , int Y ) {
+ _view->moveObject( X , Y ) ;
+ }
- //=========================================================================
+ //=========================================================================
- int GObjectController::getGObjectType()
- {
- return _model->getGObjectType();
- }
+ int GObjectController::getGObjectType( ) {
+ return _model->getGObjectType( ) ;
+ }
- //=========================================================================
+ //=========================================================================
- GObjectModel* GObjectController::getModel()
- {
- return _model;
- }
+ GObjectModel* GObjectController::getModel( ) {
+ return _model ;
+ }
- //=========================================================================
+ //=========================================================================
- vtkGObjectView* GObjectController::getView()
- {
- return _view;
- }
+ vtkGObjectView* GObjectController::getView( ) {
+ return _view ;
+ }
- //=========================================================================
+ //=========================================================================
- int GObjectController::getId()
- {
- return _model->getObjectId();
- }
+ int GObjectController::getId( ) {
+ return _model->getObjectId( ) ;
+ }
- //=========================================================================
+ //=========================================================================
- void GObjectController::setId(int id)
- {
- _model->setObjectId(id);
- }
+ void GObjectController::setId( int id ) {
+ _model->setObjectId( id ) ;
+ }
- //=========================================================================
+ //=========================================================================
- std::string GObjectController::getStatusText()
- {
- return _model->getStatusText();
- }
+ std::string GObjectController::getStatusText( ) {
+ return _model->getStatusText( ) ;
+ }
- //=========================================================================
+ //=========================================================================
- void GObjectController::removeFromScene()
- {
- _view->removeFromScene();
- }
+ void GObjectController::removeFromScene( ) {
+ _view->removeFromScene( ) ;
+ }
- //=========================================================================
+ //=========================================================================
-} // EO namespace bbtk
+} // EO namespace bbtk
// EOF
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::GObjectController :
-*/
+ * \file
+ * \brief Class bbtk::GObjectController :
+ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#ifndef __GObjectController_h__
#define __GObjectController_h__
//Includes std
#include <iostream>
-namespace bbtk
-{
+namespace bbtk {
- class GObjectController : public InteractorStyleMaracas
- {
+ class GObjectController : public InteractorStyleMaracas {
+ public:
- public:
+ //Constructors
+ GObjectController( );
+ ~ GObjectController( );
- //Constructors
- GObjectController();
- ~GObjectController();
+ //Public methods
- //Public methods
+ void setModelAndView( GObjectModel* model, vtkGObjectView* view );
- void setModelAndView(GObjectModel* model, vtkGObjectView* view);
+ // Same type of the saved in the model of the graphical objects
+ int getGObjectType( );
- // Same type of the saved in the model of the graphical objects
- int getGObjectType();
+ GObjectModel* getModel( );
+ vtkGObjectView* getView( );
- GObjectModel* getModel();
- vtkGObjectView* getView();
+ std::string getStatusText( );
- std::string getStatusText();
+ // Same ObjectID from the model
+ int getId( );
+ void setId( int id );
- // Same ObjectID from the model
- int getId();
- void setId(int id);
+ virtual void removeFromScene( );
- virtual void removeFromScene();
+ private:
- private:
+ //Attributes
- //Attributes
+ //Private Methods
- //Private Methods
+ protected:
- protected:
+ //Protected Attributes
- //Protected Attributes
+ GObjectModel *_model;
+ vtkGObjectView *_view;
- GObjectModel *_model;
- vtkGObjectView *_view;
+ bool _isLeftClickDown;
- bool _isLeftClickDown;
+ //Protected Methods
- //Protected Methods
+ // Methods from InteractorStyleMaracas
+ virtual bool OnMouseMove( );
+ virtual bool OnLeftButtonDown( );
+ virtual bool OnLeftButtonUp( );
+ virtual bool OnLeftDClick( );
+ virtual bool OnMiddleButtonDown( );
- // Methods from InteractorStyleMaracas
- virtual bool OnMouseMove();
- virtual bool OnLeftButtonDown();
- virtual bool OnLeftButtonUp();
- virtual bool OnLeftDClick();
- virtual bool OnMiddleButtonDown();
+ virtual void moveObject( int X, int Y );
- virtual void moveObject(int X,int Y);
-
- };
+ };
}
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::vtkGComplexBoxPortView
-*/
+ * \file
+ * \brief Class bbtk::vtkGComplexBoxPortView
+ */
#include "vtkGComplexBoxPortView.h"
-namespace bbtk
-{
-
-
- //=========================================================================
- vtkGComplexBoxPortView::vtkGComplexBoxPortView()
- {
- }
-
- //=========================================================================
- vtkGComplexBoxPortView::~vtkGComplexBoxPortView()
- {
- }
-
- //=========================================================================
- void vtkGComplexBoxPortView::update(int idController,int command)
- {
- updateColors();
-
- double xInic, yInic,zInic,xFin, yFin,zFin;
- _model->getInicPoint(xInic,yInic,zInic);
- _model->getFinalPoint(xFin, yFin,zFin);
-
- // RaC In the actual version, zInic=zFin=900
-
- _pts->SetPoint(0, xInic, yInic, zInic );
- _pts->SetPoint(1, xInic, yFin, zInic );
- _pts->SetPoint(2, xFin, yFin, zFin );
- _pts->SetPoint(3, xFin, yInic, zFin );
-
- updatePorts();
-
- _borderPolyMapper->Modified();
- _fillPolyMapper->Modified();
- //-----------
-
- //-----------
- setRefreshWaiting();
- }
-
- //=========================================================================
-
- void vtkGComplexBoxPortView::createVtkObjects() //virtual
- {
-
- //------------
- _pts = vtkPoints::New();
- vtkCellArray *lines = vtkCellArray::New();
- vtkPolyData *_pd = vtkPolyData::New();
- _borderPolyMapper=vtkPolyDataMapper::New();
- _borderObjectActor=vtkActor::New();
-
- _pts->SetNumberOfPoints(4);
-
- double xInic, yInic,zInic,xFin, yFin,zFin;
- _model->getInicPoint(xInic,yInic,zInic);
- _model->getFinalPoint(xFin, yFin,zFin);
-
- // RaC In the actual version, zInic=zFin=900
-
-//EED _pts->SetPoint(0, xInic, yInic, zInic );
-//EED _pts->SetPoint(1, xInic, yFin, zInic );
-//EED _pts->SetPoint(2, xFin, yFin, zFin );
-//EED _pts->SetPoint(3, xFin, yInic, zFin );
-
-
- _pts->SetPoint(0, -1000, -1000, -1000 );
- _pts->SetPoint(1, xInic, yFin, zInic );
- _pts->SetPoint(2, 1000, 1000, 1000 );
- _pts->SetPoint(3, xFin, yInic, zFin );
-
-
- lines->InsertNextCell(5);
- lines->InsertCellPoint(0);
- lines->InsertCellPoint(1);
- lines->InsertCellPoint(2);
- lines->InsertCellPoint(3);
- lines->InsertCellPoint(0);
-
- _pd->SetPoints( _pts );
- _pd->SetLines( lines );
-
- _borderPolyMapper->SetInput(_pd);
- _borderObjectActor->SetMapper(_borderPolyMapper);
- _borderPolyMapper->Modified();
-
-
- ///************************* FILL *************************
-
- vtkCellArray *strip = vtkCellArray::New();
- vtkPolyData *pdFill = vtkPolyData::New();
- _fillPolyMapper=vtkPolyDataMapper::New();
- _fillObjectActor=vtkActor::New();
-
- // RaC In the actual version, zInic=zFin=900
-
- strip->InsertNextCell(5);
- strip->InsertCellPoint(0);
- strip->InsertCellPoint(1);
- strip->InsertCellPoint(2);
- strip->InsertCellPoint(0);
- strip->InsertCellPoint(3);
-
- pdFill->SetPoints( _pts );
- pdFill->SetStrips( strip );
-
- _fillPolyMapper->SetInput(pdFill);
- _fillObjectActor->SetMapper(_fillPolyMapper);
- _fillPolyMapper->Modified();
-
- ///************************* FILL *************************
-
- }
-
- //=========================================================================
-
- void vtkGComplexBoxPortView::addVtkActors()//virtual
- {
- _baseView->GetRenderer()->AddActor(_borderObjectActor);
- vtkGObjectView::addVtkActors();
- }
-
- //=========================================================================
-
- void vtkGComplexBoxPortView::removeVtkActors()//virtual
- {
- _baseView->GetRenderer()->RemoveActor(_borderObjectActor);
- vtkGObjectView::removeVtkActors();
- }
-
- //=========================================================================
-
- void vtkGComplexBoxPortView::updateColors()
- {
- _fillObjectActor->GetProperty()->SetAmbient(0.6);
-
- if(_state==NOTHING_HAPPENS)
- {
- _borderObjectActor->GetProperty()->SetLineWidth(1);
-
-
- GComplexBoxPortModel *portModel = (GComplexBoxPortModel*)_model;
- if(portModel->getComplexPortType() == GCOMPLEXINPUTPORT)
- {
- _fillObjectActor->GetProperty()->SetColor(COMPLEXINPUTPORTFILL_NH_R,COMPLEXINPUTPORTFILL_NH_G,COMPLEXINPUTPORTFILL_NH_B);
- _borderObjectActor->GetProperty()->SetColor(COMPLEXINPUTPORTBORDER_NH_R,COMPLEXINPUTPORTBORDER_NH_G,COMPLEXINPUTPORTBORDER_NH_B);
- }
- else if (portModel->getComplexPortType() == GCOMPLEXOUTPUTPORT)
- {
- _fillObjectActor->GetProperty()->SetColor(COMPLEXOUTPUTPORTFILL_NH_R,COMPLEXOUTPUTPORTFILL_NH_G,COMPLEXOUTPUTPORTFILL_NH_B);
- _borderObjectActor->GetProperty()->SetColor(COMPLEXOUTPUTPORTBORDER_NH_R,COMPLEXOUTPUTPORTBORDER_NH_G,COMPLEXOUTPUTPORTBORDER_NH_B);
- }
-
- }
- else if(_state==HIGHLIGHTED)
- {
- _borderObjectActor->GetProperty()->SetLineWidth(2);
-
- _borderObjectActor->GetProperty()->SetColor(BOXBORDER_HIGHLIGHTED_R,BOXBORDER_HIGHLIGHTED_G,BOXBORDER_HIGHLIGHTED_B);
- _fillObjectActor->GetProperty()->SetColor(BOXFILL_HIGHLIGHTED_R,BOXFILL_HIGHLIGHTED_G,BOXFILL_HIGHLIGHTED_B);
- }
- else if(_state==DRAG)
- {
- _borderObjectActor->GetProperty()->SetLineWidth(1.2);
- _borderObjectActor->GetProperty()->SetColor(BOXBORDER_DRAG_R,BOXBORDER_DRAG_G,BOXBORDER_DRAG_B);
- _fillObjectActor->GetProperty()->SetColor(BOXFILL_DRAG_R,BOXFILL_DRAG_G,BOXFILL_DRAG_B);
- }
- else if(_state==SELECTED)
- {
- _borderObjectActor->GetProperty()->SetLineWidth(2);
- _borderObjectActor->GetProperty()->SetColor(BOXBORDER_SELECTED_R,BOXBORDER_SELECTED_G,BOXBORDER_SELECTED_B);
- _fillObjectActor->GetProperty()->SetColor(BOXFILL_SELECTED_R,BOXFILL_SELECTED_G,BOXFILL_SELECTED_B);
- }
- }
-
- //=========================================================================
-
-
-} // EO namespace bbtk
+namespace bbtk {
+
+
+ //=========================================================================
+
+ vtkGComplexBoxPortView::vtkGComplexBoxPortView( ) {
+ }
+
+ //=========================================================================
+
+ vtkGComplexBoxPortView::~vtkGComplexBoxPortView( ) {
+ }
+
+ //=========================================================================
+
+ void vtkGComplexBoxPortView::update( int idController , int command ) {
+ updateColors( ) ;
+
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
+ _model->getInicPoint( xInic , yInic , zInic ) ;
+ _model->getFinalPoint( xFin , yFin , zFin ) ;
+
+ // RaC In the actual version, zInic=zFin=900
+
+ _pts->SetPoint( 0 , xInic , yInic , zInic ) ;
+ _pts->SetPoint( 1 , xInic , yFin , zInic ) ;
+ _pts->SetPoint( 2 , xFin , yFin , zFin ) ;
+ _pts->SetPoint( 3 , xFin , yInic , zFin ) ;
+
+ updatePorts( ) ;
+
+ _borderPolyMapper->Modified( ) ;
+ _fillPolyMapper->Modified( ) ;
+ //-----------
+
+ //-----------
+ setRefreshWaiting( ) ;
+ }
+
+ //=========================================================================
+
+ void vtkGComplexBoxPortView::createVtkObjects( ) //virtual
+ {
+
+ //------------
+ _pts = vtkPoints::New( ) ;
+ vtkCellArray *lines = vtkCellArray::New( ) ;
+ vtkPolyData *_pd = vtkPolyData::New( ) ;
+ _borderPolyMapper = vtkPolyDataMapper::New( ) ;
+ _borderObjectActor = vtkActor::New( ) ;
+
+ _pts->SetNumberOfPoints( 4 ) ;
+
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
+ _model->getInicPoint( xInic , yInic , zInic ) ;
+ _model->getFinalPoint( xFin , yFin , zFin ) ;
+
+ // RaC In the actual version, zInic=zFin=900
+
+ //EED _pts->SetPoint(0, xInic, yInic, zInic );
+ //EED _pts->SetPoint(1, xInic, yFin, zInic );
+ //EED _pts->SetPoint(2, xFin, yFin, zFin );
+ //EED _pts->SetPoint(3, xFin, yInic, zFin );
+
+
+ _pts->SetPoint( 0 , -1000 , -1000 , -1000 ) ;
+ _pts->SetPoint( 1 , xInic , yFin , zInic ) ;
+ _pts->SetPoint( 2 , 1000 , 1000 , 1000 ) ;
+ _pts->SetPoint( 3 , xFin , yInic , zFin ) ;
+
+
+ lines->InsertNextCell( 5 ) ;
+ lines->InsertCellPoint( 0 ) ;
+ lines->InsertCellPoint( 1 ) ;
+ lines->InsertCellPoint( 2 ) ;
+ lines->InsertCellPoint( 3 ) ;
+ lines->InsertCellPoint( 0 ) ;
+
+ _pd->SetPoints( _pts ) ;
+ _pd->SetLines( lines ) ;
+
+ _borderPolyMapper->SetInput( _pd ) ;
+ _borderObjectActor->SetMapper( _borderPolyMapper ) ;
+ _borderPolyMapper->Modified( ) ;
+
+
+ ///************************* FILL *************************
+
+ vtkCellArray *strip = vtkCellArray::New( ) ;
+ vtkPolyData *pdFill = vtkPolyData::New( ) ;
+ _fillPolyMapper = vtkPolyDataMapper::New( ) ;
+ _fillObjectActor = vtkActor::New( ) ;
+
+ // RaC In the actual version, zInic=zFin=900
+
+ strip->InsertNextCell( 5 ) ;
+ strip->InsertCellPoint( 0 ) ;
+ strip->InsertCellPoint( 1 ) ;
+ strip->InsertCellPoint( 2 ) ;
+ strip->InsertCellPoint( 0 ) ;
+ strip->InsertCellPoint( 3 ) ;
+
+ pdFill->SetPoints( _pts ) ;
+ pdFill->SetStrips( strip ) ;
+
+ _fillPolyMapper->SetInput( pdFill ) ;
+ _fillObjectActor->SetMapper( _fillPolyMapper ) ;
+ _fillPolyMapper->Modified( ) ;
+
+ ///************************* FILL *************************
+
+ }
+
+ //=========================================================================
+
+ void vtkGComplexBoxPortView::addVtkActors( )//virtual
+ {
+ _baseView->GetRenderer( )->AddActor( _borderObjectActor ) ;
+ vtkGObjectView::addVtkActors( ) ;
+ }
+
+ //=========================================================================
+
+ void vtkGComplexBoxPortView::removeVtkActors( )//virtual
+ {
+ _baseView->GetRenderer( )->RemoveActor( _borderObjectActor ) ;
+ vtkGObjectView::removeVtkActors( ) ;
+ }
+
+ //=========================================================================
+
+ void vtkGComplexBoxPortView::updateColors( ) {
+ _fillObjectActor->GetProperty( )->SetAmbient( 0.6 ) ;
+
+ if ( _state == NOTHING_HAPPENS ) {
+ _borderObjectActor->GetProperty( )->SetLineWidth( 1 ) ;
+
+
+ GComplexBoxPortModel *portModel = ( GComplexBoxPortModel* ) _model ;
+ if ( portModel->getComplexPortType( ) == GCOMPLEXINPUTPORT ) {
+ _fillObjectActor->GetProperty( )->SetColor( COMPLEXINPUTPORTFILL_NH_R , COMPLEXINPUTPORTFILL_NH_G , COMPLEXINPUTPORTFILL_NH_B ) ;
+ _borderObjectActor->GetProperty( )->SetColor( COMPLEXINPUTPORTBORDER_NH_R , COMPLEXINPUTPORTBORDER_NH_G , COMPLEXINPUTPORTBORDER_NH_B ) ;
+ } else if ( portModel->getComplexPortType( ) == GCOMPLEXOUTPUTPORT ) {
+ _fillObjectActor->GetProperty( )->SetColor( COMPLEXOUTPUTPORTFILL_NH_R , COMPLEXOUTPUTPORTFILL_NH_G , COMPLEXOUTPUTPORTFILL_NH_B ) ;
+ _borderObjectActor->GetProperty( )->SetColor( COMPLEXOUTPUTPORTBORDER_NH_R , COMPLEXOUTPUTPORTBORDER_NH_G , COMPLEXOUTPUTPORTBORDER_NH_B ) ;
+ }
+
+ } else if ( _state == HIGHLIGHTED ) {
+ _borderObjectActor->GetProperty( )->SetLineWidth( 2 ) ;
+
+ _borderObjectActor->GetProperty( )->SetColor( BOXBORDER_HIGHLIGHTED_R , BOXBORDER_HIGHLIGHTED_G , BOXBORDER_HIGHLIGHTED_B ) ;
+ _fillObjectActor->GetProperty( )->SetColor( BOXFILL_HIGHLIGHTED_R , BOXFILL_HIGHLIGHTED_G , BOXFILL_HIGHLIGHTED_B ) ;
+ } else if ( _state == DRAG ) {
+ _borderObjectActor->GetProperty( )->SetLineWidth( 1.2 ) ;
+ _borderObjectActor->GetProperty( )->SetColor( BOXBORDER_DRAG_R , BOXBORDER_DRAG_G , BOXBORDER_DRAG_B ) ;
+ _fillObjectActor->GetProperty( )->SetColor( BOXFILL_DRAG_R , BOXFILL_DRAG_G , BOXFILL_DRAG_B ) ;
+ } else if ( _state == SELECTED ) {
+ _borderObjectActor->GetProperty( )->SetLineWidth( 2 ) ;
+ _borderObjectActor->GetProperty( )->SetColor( BOXBORDER_SELECTED_R , BOXBORDER_SELECTED_G , BOXBORDER_SELECTED_B ) ;
+ _fillObjectActor->GetProperty( )->SetColor( BOXFILL_SELECTED_R , BOXFILL_SELECTED_G , BOXFILL_SELECTED_B ) ;
+ }
+ }
+
+ //=========================================================================
+
+
+} // EO namespace bbtk
// EOF
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::vtkGPortView
-*/
+ * \file
+ * \brief Class bbtk::vtkGPortView
+ */
#include "vtkGPortView.h"
-namespace bbtk
-{
+namespace bbtk {
- //=========================================================================
- vtkGPortView::vtkGPortView()
- {
- }
+ //=========================================================================
- //=========================================================================
- vtkGPortView::~vtkGPortView()
- {
- }
+ vtkGPortView::vtkGPortView( ) {
+ }
- //=========================================================================
- void vtkGPortView::update(int idController,int command)
- {
- updateColors();
-
- double xInic, yInic,zInic,xFin, yFin,zFin;
+ //=========================================================================
- _model->getInicPoint(xInic,yInic,zInic);
- _model->getFinalPoint(xFin, yFin,zFin);
+ vtkGPortView::~vtkGPortView( ) {
+ }
- // RaC In the actual version, zInic=zFin=900
+ //=========================================================================
- double mid = (xInic+xFin)/2;
+ void vtkGPortView::update( int idController , int command ) {
- _pts->SetPoint(0, xInic, yInic, zInic );
- _pts->SetPoint(1, mid, yFin, zInic );
- _pts->SetPoint(2, xFin, yInic, zFin );
+ updateColors( ) ;
- _fillPolyMapper->Modified();
-
- //-----------
- setRefreshWaiting();
- }
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
- //=========================================================================
+ _model->getInicPoint( xInic , yInic , zInic ) ;
+ _model->getFinalPoint( xFin , yFin , zFin ) ;
- void vtkGPortView::createVtkObjects() //virtual
- {
- _pts = vtkPoints::New();
- _pts->SetNumberOfPoints(3);
+ // RaC In the actual version, zInic=zFin=900
- double xInic, yInic,zInic,xFin, yFin,zFin;
+ double mid = ( xInic + xFin ) / 2 ;
- _model->getInicPoint(xInic,yInic,zInic);
- _model->getFinalPoint(xFin, yFin,zFin);
+ _pts->SetPoint( 0 , xInic , yInic , zInic ) ;
+ _pts->SetPoint( 1 , mid , yFin , zInic ) ;
+ _pts->SetPoint( 2 , xFin , yInic , zFin ) ;
- // RaC In the actual version, zInic=zFin=900
+ _fillPolyMapper->Modified( ) ;
- double mid = (xInic+xFin)/2;
+ //-----------
+ setRefreshWaiting( ) ;
+ }
-//EED _pts->SetPoint(0, xInic, yInic, zInic );
-//EED _pts->SetPoint(1, mid, yFin, zInic );
-//EED _pts->SetPoint(2, xFin, yInic, zFin );
+ //=========================================================================
- _pts->SetPoint(0, -1000, -1000, -1000 );
- _pts->SetPoint(1, mid, yFin, zInic );
- _pts->SetPoint(2, 1000, 1000, 1000 );
-
-
- ///************************* FILL *************************
+ void vtkGPortView::createVtkObjects( ) //virtual
+ {
+ _pts = vtkPoints::New( ) ;
+ _pts->SetNumberOfPoints( 3 ) ;
- vtkCellArray *strip = vtkCellArray::New();
- vtkPolyData *pdFill = vtkPolyData::New();
- _fillPolyMapper=vtkPolyDataMapper::New();
- _fillObjectActor=vtkActor::New();
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
- // RaC In the actual version, zInic=zFin=900
+ _model->getInicPoint( xInic , yInic , zInic ) ;
+ _model->getFinalPoint( xFin , yFin , zFin ) ;
- strip->InsertNextCell(3);
- strip->InsertCellPoint(0);
- strip->InsertCellPoint(1);
- strip->InsertCellPoint(2);
-
- pdFill->SetPoints( _pts );
- pdFill->SetStrips( strip );
+ // RaC In the actual version, zInic=zFin=900
- _fillPolyMapper->SetInput(pdFill);
- _fillObjectActor->SetMapper(_fillPolyMapper);
- _fillPolyMapper->Modified();
+ double mid = ( xInic + xFin ) / 2 ;
- ///************************* FILL *************************
+ //EED _pts->SetPoint(0, xInic, yInic, zInic );
+ //EED _pts->SetPoint(1, mid, yFin, zInic );
+ //EED _pts->SetPoint(2, xFin, yInic, zFin );
- updateColors();
+ _pts->SetPoint( 0 , -1000 , -1000 , -1000 ) ;
+ _pts->SetPoint( 1 , mid , yFin , zInic ) ;
+ _pts->SetPoint( 2 , 1000 , 1000 , 1000 ) ;
- }
+ ///************************* FILL *************************
- //=========================================================================
+ vtkCellArray *strip = vtkCellArray::New( ) ;
+ vtkPolyData *pdFill = vtkPolyData::New( ) ;
+ _fillPolyMapper = vtkPolyDataMapper::New( ) ;
+ _fillObjectActor = vtkActor::New( ) ;
- void vtkGPortView::updateColors()
- {
- _fillObjectActor->GetProperty()->SetColor(0.45,0.45,0.45);
+ // RaC In the actual version, zInic=zFin=900
- if(_state==HIGHLIGHTED)
- {
- _fillObjectActor->GetProperty()->SetColor( 0 , 0 , 1 );
- } else {
- GPortModel* portm = (GPortModel*)_model;
- if(portm->isConnected())
- {
- _fillObjectActor->GetProperty()->SetColor(0.15,0.15,0.15);
- }
- else if(portm->isValueSet())
- {
- _fillObjectActor->GetProperty()->SetColor(0.55,0.25,0.25);
- } else {
- _fillObjectActor->GetProperty()->SetColor(0.45,0.45,0.45);
- }
- }
- }
+ strip->InsertNextCell( 3 ) ;
+ strip->InsertCellPoint( 0 ) ;
+ strip->InsertCellPoint( 1 ) ;
+ strip->InsertCellPoint( 2 ) ;
- //=========================================================================
+ pdFill->SetPoints( _pts ) ;
+ pdFill->SetStrips( strip ) ;
+ _fillPolyMapper->SetInput( pdFill ) ;
+ _fillObjectActor->SetMapper( _fillPolyMapper ) ;
+ _fillPolyMapper->Modified( ) ;
-} // EO namespace bbtk
+ ///************************* FILL *************************
+
+ updateColors( ) ;
+
+
+ }
+
+ //=========================================================================
+
+ void vtkGPortView::updateColors( ) {
+ _fillObjectActor->GetProperty( )->SetColor( 0.45 , 0.45 , 0.45 ) ;
+
+ if ( _state == POSSIBLE_CONNECTION ) {
+ _fillObjectActor->GetProperty( )->SetColor( 1 , 1 , 0 ) ;
+ } else if ( _state == SELECTED_POSSIBLE_CONNECTION ) {
+ _fillObjectActor->GetProperty( )->SetColor( 0 , 1 , 0 ) ;
+ } else if ( _state == HIGHLIGHTED ) {
+ _fillObjectActor->GetProperty( )->SetColor( 0 , 0 , 1 ) ;
+ } else {
+ GPortModel* portm = ( GPortModel* ) _model ;
+ if ( portm->isConnected( ) ) {
+ _fillObjectActor->GetProperty( )->SetColor( 0.15 , 0.15 , 0.15 ) ;
+ } else if ( portm->isValueSet( ) ) {
+ _fillObjectActor->GetProperty( )->SetColor( 0.55 , 0.25 , 0.25 ) ;
+ } else {
+ _fillObjectActor->GetProperty( )->SetColor( 0.45 , 0.45 , 0.45 ) ;
+ }
+ }
+ }
+
+ //=========================================================================
+
+
+} // EO namespace bbtk
// EOF
{
public:
-
//Constructors
vtkGPortView();
~vtkGPortView();
//Public methods
virtual void update(int idController,int command);
-
private:
-
//Private Attributes
-
//Private Methods
protected:
-
- //Protected Attributes
-
+ //Protected Attributes
//Protected Methods
virtual void createVtkObjects();
virtual void updateColors();
void OnChangeName(wxCommandEvent& event);
// Edit menu events
- void OnCopySelectedToComplexDiagram(wxCommandEvent& event);
+ void OnCopySelectedToComplexDiagram(wxCommandEvent& event);
+
// Tool menu events
void OnCreatePackage(wxCommandEvent& event);
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::wxBlackBoxEditionDialog .
-*/
+ * \file
+ * \brief Class bbtk::wxBlackBoxEditionDialog .
+ */
#include "wxBlackBoxEditionDialog.h"
#include "creaWx.h"
+
namespace bbtk
{
//=========================================================================
Close(true);
}
- //=========================================================================
-} // EO namespace bbtk
+ wxBlackBoxEditionDialog::wxBlackBoxEditionDialog( wxGUIEditorGraphicBBS *parent , GBlackBoxModel *model ) : wxDialog( parent , wxID_ANY , _T( "" ) , wxDefaultPosition , wxSize( 480 , 640 ) , wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ) {
+ _model = model ;
+ std::string title( "BlackBox Editing - " ) ;
+ title += _model->getBBTKPackage( ) ;
+ title += ":" ;
+ title += _model->getBBTKType( ) ;
+ title += ":" ;
+ title += _model->getBBTKName( ) ;
+ SetTitle( std2wx( title ) ) ;
+
+ constructBlackBoxEditionDialog( ) ;
+ }
+
+ //=========================================================================
+
+ wxBlackBoxEditionDialog::~wxBlackBoxEditionDialog( ) {
+
+ }
+
+ //=========================================================================
+
+ void wxBlackBoxEditionDialog::constructBlackBoxEditionDialog( ) {
+ wxBoxSizer *sizerDialog = new wxBoxSizer( wxVERTICAL ) ;
+
+ wxScrolledWindow *scrollWin = new wxScrolledWindow( this , -1 , wxDefaultPosition , wxSize( 200 , 200 ) , wxVSCROLL ) ;
+
+ wxStaticText *text = new wxStaticText( scrollWin , -1 , wxT( "Input Ports" ) ) ;
+ wxFont font( 11 , wxDEFAULT , wxNORMAL , wxBOLD ) ;
+ text->SetFont( font ) ;
+
+
+
+ std::vector<GPortModel*> lstInputs = _model->getInputPorts( ) ;
+ wxFlexGridSizer *sizer = new wxFlexGridSizer( lstInputs.size( ) , 3 , 5 , 5 ) ;
+ for ( int i = 0 ; i < ( int ) lstInputs.size( ) ; i++ ) {
+ GPortModel* port = lstInputs[i] ;
+ std::string type = port->getBBTKType( ) ;
+ wxStaticText *lblName = new wxStaticText( scrollWin , -1 , std2wx( port->getBBTKName( ) ) , wxDefaultPosition , wxSize( 100 , 25 ) ) ;
+ wxStaticText *lblType = new wxStaticText( scrollWin , -1 , std2wx( type ) , wxDefaultPosition , wxSize( 250 , 25 ) ) ;
+ wxTextCtrl *txtValue = new wxTextCtrl( scrollWin , -1 , _T( "" ) , wxDefaultPosition , wxSize( 90 , 25 ) ) ;
+
+ if ( port->getValue( ) != "" ) {
+ txtValue->SetValue( crea::std2wx( port->getValue( ) ) ) ;
+ }
+
+ if ( port->isConnected( ) ) {
+ std::string connected( "--CAN'T TOUCH THIS--" ) ;
+ txtValue->SetValue( crea::std2wx( connected ) ) ;
+ txtValue->SetEditable( false ) ;
+ }
+
+ char et = '*' ;
+ if ( type.find( et ) != -1 ) {
+ std::string noEditable( "--CAN'T TOUCH THIS--" ) ;
+ txtValue->SetValue( crea::std2wx( noEditable ) ) ;
+ txtValue->SetEditable( false ) ;
+ }
+
+ _lstNames.push_back( lblName ) ;
+ _lstValues.push_back( txtValue ) ;
+ _lstTypes.push_back( lblType ) ;
+
+ sizer->Add( lblName , 1 , wxEXPAND , 5 ) ;
+ sizer->Add( txtValue , 1 , wxEXPAND , 5 ) ;
+ sizer->Add( lblType , 1 , wxCENTRE | wxEXPAND , 5 ) ;
+ }
+
+
+ wxBoxSizer *buts = new wxBoxSizer( wxHORIZONTAL ) ;
+ wxButton *okButton = new wxButton( scrollWin , -1 , _T( "OK" ) , wxDefaultPosition , wxSize( 70 , 30 ) ) ;
+ wxButton *closeButton = new wxButton( scrollWin , -1 , _T( "CLOSE" ) , wxDefaultPosition , wxSize( 70 , 30 ) ) ;
+
+ // connect command event handlers
+ Connect( okButton->GetId( ) , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler( wxBlackBoxEditionDialog::onClickOk ) ) ;
+ Connect( closeButton->GetId( ) , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler( wxBlackBoxEditionDialog::onClickClose ) ) ;
+
+ buts->Add( okButton , 0 , wxCENTRE | wxEXPAND , 5 ) ;
+ buts->Add( closeButton , 0 , wxCENTRE | wxEXPAND , 5 ) ;
+
+ sizerDialog->AddSpacer( 10 ) ;
+ sizerDialog->Add( text , 0 , wxALIGN_TOP | wxALIGN_CENTER ) ;
+ sizerDialog->AddSpacer( 15 ) ;
+ sizerDialog->Add( sizer , 0 , wxALIGN_CENTER ) ;
+ sizerDialog->AddSpacer( 15 ) ;
+ sizerDialog->Add( buts , 0 , wxALIGN_CENTER | wxTOP | wxBOTTOM ) ;
+
+ scrollWin->SetSizer( sizerDialog ) ;
+ scrollWin->Centre( ) ;
+
+
+ scrollWin->SetVirtualSize( 400 , 400 ) ;
+ scrollWin->SetSize( 300 , 300 ) ;
+ scrollWin->SetScrollbars( 10 , 10 , 50 , 50 ) ;
+ // scrollWin->SetSizer(sizer);
+
+
+ ShowModal( ) ;
+ Destroy( ) ;
+ }
+
+ //=========================================================================
+
+ void wxBlackBoxEditionDialog::onClickOk( wxCommandEvent& event ) {
+ for ( int i = 0 ; i < ( int ) _lstValues.size( ) ; i++ ) {
+ std::string text = wx2std( _lstValues[i]->GetValue( ) ) ;
+ //TOFIX Search a better alternative
+ if ( text != "--No editable--" && text != "--Port Connected--" ) {
+ _model->setValueToInputPort( i , text ) ;
+ }
+ }
+
+ Close( true ) ;
+ }
+
+ //=========================================================================
+
+ void wxBlackBoxEditionDialog::onClickClose( wxCommandEvent& event ) {
+ printf( "EED wxBlackBoxEditionDialog::onClickClose JGRR AND CM WERE HERE!!!\n" ) ;
+ Close( true ) ;
+ }
+
+ //=========================================================================
+
+} // EO namespace bbtk
// EOF
/* // remove * from the name
std::string name = _tabsMgr->GetNameTabPanel();
if(name[name.length() - 1] != '*')
name = name.substr(0, name.length()-2);
- _tabsMgr->SetNameTabPanel(name);*/
\ No newline at end of file
+ _tabsMgr->SetNameTabPanel(name);*/
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::wxBlackBoxEditionDialog : abstract black-box interface.
-*/
+ * \file
+ * \brief Class bbtk::wxBlackBoxEditionDialog : abstract black-box interface.
+ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#ifndef __wxBlackBoxEditionDialog_h__
#define __wxBlackBoxEditionDialog_h__
#include <iostream>
+
namespace bbtk
{
-
//RaC: It is important if it exists a double relation
//e.g. wxBlackBoxEditionDialog includes wxGUIEditorGraphicBBS, and wxGUIEditorGraphicBBS includes wxBlackBoxEditionDialog
class wxGUIEditorGraphicBBS;
protected:
- };
+ class wxBlackBoxEditionDialog : public wxDialog {
+ public:
+ wxBlackBoxEditionDialog( wxGUIEditorGraphicBBS *parent, GBlackBoxModel *model );
+ ~ wxBlackBoxEditionDialog( );
+
+ void constructBlackBoxEditionDialog( );
+
+ void onClickOk( wxCommandEvent& event );
+ void onClickClose( wxCommandEvent& event );
+
+ private:
+ wxAuiManager *_dialogAUIMgr;
+ wxPanel *_panel;
+
+ std::vector<wxTextCtrl*> _lstValues;
+ std::vector<wxStaticText*> _lstTypes;
+ std::vector<wxStaticText*> _lstNames;
+
+ GBlackBoxModel *_model;
+
+ protected:
+
+ };
}
#include "wxVtkSceneManager.h"
+
#include <vtkPolygon.h>
#include <vtkUnstructuredGrid.h>
+
namespace bbtk {
+cvs
//=========================================================================
wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent,
wxVtk3DBaseView *baseView, int idManager) {
if (_baseView != NULL) {
//EED02JUIN2010
printf(
- "RaC-EED 21-06-2010 %p wxVtkSceneManager::wxVtkSceneManager If you comment this line, the drag and drop functionnality is not initialized.\n",
- this);
-#ifdef __APPLE__
+ "RaC-EED 21-06-2010 %p wxVtkSceneManager::wxVtkSceneManager If you comment this line, the drag and drop functionnality is not initialized.\n", this);
+
+ #ifdef __APPLE__
+
_baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget((wxDropTarget*)parent);
-#endif
+
+ #endif
configureBaseView();
_worldState = NOTHING_HAPPENS;
manContourView->SetColorNormalContour(0, 0, 1);
manContourView->SetColorEditContour(0.5, 0.5, 0.5);
manContourView->SetColorSelectContour(1, 0.8, 0);
- manContourView->SetWidthLine(1);
+
+
+ /**
+ * JGRR AND CM
+ * Width increased from 2 to 5, it simplifies line handling and spline control :P
+ * @param WidthLine
+ */
+
+ manContourView->SetWidthLine( 5 ) ;
+
+
manContourView->SetShowText(false);
manContourControl->SetModelView(manContourModel, manContourView);
std::string value(result);
bbmod->setValueToInput(name, value);
-
getline(inputStream, line);//PORT o FIN_BOX
port = line.substr(0, 4);
} // while
}
}
+
//=========================================================================
std::string wxVtkSceneManager::GetCbPackageName() {
return _cbPackageName;
}
}
+
//=========================================================================
std::string wxVtkSceneManager::GetDescription() {
return _Description;
} // EO namespace bbtk
-// EOF
-
+// EOF
/* ---------------------------------------------------------------------
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* This software is governed by the CeCILL-B license under French law and
-* abiding by the rules of distribution of free software. You can use,
-* modify and/ or redistribute the software under the terms of the CeCILL-B
-* license as circulated by CEA, CNRS and INRIA at the following URL
-* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-* or in the file LICENSE.txt.
-*
-* As a counterpart to the access to the source code and rights to copy,
-* modify and redistribute granted by the license, users are provided only
-* with a limited warranty and the software's author, the holder of the
-* economic rights, and the successive licensors have only limited
-* liability.
-*
-* The fact that you are presently reading this means that you have had
-* knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */
+ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+ * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+ *
+ * This software is governed by the CeCILL-B license under French law and
+ * abiding by the rules of distribution of free software. You can use,
+ * modify and/ or redistribute the software under the terms of the CeCILL-B
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ * or in the file LICENSE.txt.
+ *
+ * As a counterpart to the access to the source code and rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty and the software's author, the holder of the
+ * economic rights, and the successive licensors have only limited
+ * liability.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL-B license and that you accept its terms.
+ * ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::BlackBox : abstract black-box interface.
-*/
+ * \file
+ * \brief Class bbtk::BlackBox : abstract black-box interface.
+ */
/****
-* Design and Developpement of BBTK GEditor
-* Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
-* RaC - 2010
-****/
+ * Design and Developpement of BBTK GEditor
+ * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
+ * RaC - 2010
+ ****/
#ifndef __wxVtkSceneManager_h__
#define __wxVtkSceneManager_h__
#include <vtkActor.h>
#include <vtkPoints.h>
#include <vtkTextActor3D.h>
- #include <vtkDataSetMapper.h>
+#include <vtkDataSetMapper.h>
//Includes std
#include <sstream>
#include <map>
+
namespace bbtk
{
class wxGEditorTabPanel;
void configGComBoxInputOutputPort(bool inputoutput, std::string inputPortName, double xIn, double yIn,double zIn);
GBoxModel* findGBox(std::string boxname);
+ class wxVtkSceneManager : public InteractorStyleMaracas, public Observer {
+ public:
+
+ wxVtkSceneManager( wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager );
+ ~ wxVtkSceneManager( );
+ void disconnectDrop( );
+
+ //-------
+ void configureBaseView( );
+ void registerController( InteractorStyleMaracas *param );
+ void unregisterController( InteractorStyleMaracas *param );
+
+ virtual bool OnChar( );
+ virtual bool OnMouseMove( );
+ virtual bool OnLeftButtonDown( );
+ virtual bool OnLeftButtonUp( );
+ virtual bool OnRightButtonUp( );
+ virtual bool OnLeftDClick( );
+
+ //-------
+ int createGBlackBox( int x, int y, std::string packageName, std::string boxType );
+ int createGComplexBoxInputPort( std::string inputName );
+ int createGComplexBoxOutputPort( std::string outputName );
+ GPortController* createGPort( int portType, std::string bbtkName, std::string bbtkType, int posinBox, GBoxModel *blackBox );
+ int createGInputPort( int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc );
+ int createGOutputPort( int portType, int posinBox, GBoxModel *blackBox, BlackBoxOutputDescriptor *desc );
+ int createGConnector( GPortModel* startPort );
+
+ void configGBlackBox( int idBox, double xIn, double yIn, double zIn, std::string name, bool boxExecutable, double xEn, double yEn, double zEn );
+ int configGConnetion( std::string nameStartBox, std::string nameStartPort, std::string
+ nameEndBox, std::string nameEndPort );
+ void configGComBoxInputOutputPort( bool inputoutput, std::string inputPortName, double xIn, double yIn, double zIn );
+ GBoxModel* findGBox( std::string boxname );
+
+ vtkRenderWindow* getRenderWindow( );
+ vtkRenderer* getRenderer( );
+
+ virtual void update( int idController, int command );
+
+ void refresh( );
+ void refreshScene( );
+ void displayBlackBoxInfo( std::string packageName, std::string boxName );
+ void updateStatusBar( std::string textStatus );
+
+ //-------
+ //Get a collection of object ids
+ std::vector<int> getBlackBoxes( );
+ std::vector<int> getConnections( );
+ std::vector<int> getComplexInputPorts( );
+ std::vector<int> getComplexOutputPorts( );
+
+ //Get the map of selected objects (id, controller)
+ std::map<int, GObjectController*> getSelectedObjects( );
+
+ //Get size of selected objects map
+ int getNumSelectedObjects( );
+
+ //Complex box edition mode
+ bool isComplexBox( );
+ void setComplexBox( bool val );
+
+ //-------
+ //Add an object to the list of controllers
+ int addObjectController( GObjectController* objController );
+
+ //Add a map of object controllers
+ void addObjects( std::map<int, GObjectController*> objectsMap );
+
+
+ //-------
+ //Returns a string with the BBS script of the current diagram.
+ std::string getDiagramBBS( bool wln = false );
vtkRenderWindow* getRenderWindow();
//Returns a string with the BBS script of the current diagram.
std::string getDiagramBBS(bool wln=false);
- //Returns a string with the BBS script of the complex box.
- std::string saveComplexBoxBBS();
- //Delete the object in the list of controllers with the id given by parameter.
- void deleteObject(int id);
+ void AddControlerToBeRemove( std::vector<int> *controllersToRemove, int id );
+
+ //Clear list of controllers and refresh
+ void deleteAllBoxes( );
- void AddControlerToBeRemove(std::vector<int> *controllersToRemove, int id);
+ //Save the diagram in the BBG format, in the string given by param.
+ void saveDiagram( std::string &content );
- //Clear list of controllers and refresh
- void deleteAllBoxes();
+ //Load the diagram
+ void loadDiagram( ifstream &inputStream );
- //Save the diagram in the BBG format, in the string given by param.
- void saveDiagram(std::string &content);
+ //Center the view of the camera in the initial position
+ void centerView( );
//Load the diagram
void loadDiagram(std::stringstream &inputStream);
- //Center the view of the camera in the initial position
- void centerView();
- bool boxExist(std::string boxname);
- std::string generateANewNameForABox();
- std::string findANewNameForABox();
- //-------
+ void SetCbName( std::string cbNane );
+ void SetCbPackageName( std::string packagename );
+ void SetAuthor( std::string author );
+ void SetCategory( std::string category );
+ void SetDescription( std::string description );
+
+ std::string GetCbName( );
+ std::string GetCbPackageName( );
+ std::string GetAuthor( );
+ std::string GetCategory( );
+ std::string GetDescription( );
+
+
- void SetCbName(std::string cbNane);
- void SetCbPackageName(std::string packagename);
- void SetAuthor(std::string author);
- void SetCategory(std::string category);
- void SetDescription(std::string description);
+ // JGRR & CM
+ void printAll( int com, int sta );
- std::string GetCbName();
- std::string GetCbPackageName();
- std::string GetAuthor();
- std::string GetCategory();
- std::string GetDescription();
+
- private:
+ private:
- std::string _cbName;
- std::string _cbPackageName;
- std::string _Author;
- std::string _Category;
- std::string _Description;
+ std::string _cbName;
+ std::string _cbPackageName;
+ std::string _Author;
+ std::string _Category;
+ std::string _Description;
- //wxPanel that uses the manager
- wxGEditorTabPanel *_parent;
+ //wxPanel that uses the manager
+ wxGEditorTabPanel *_parent;
- // Id of the manager, the same of the panel
- int _idManager;
+ // Id of the manager, the same of the panel
+ int _idManager;
- // Boxes number in the scene
- int _numBoxes;
+ // Boxes number in the scene
+ int _numBoxes;
- // StartDragging
- bool _startDragging;
+ // StartDragging
+ bool _startDragging;
- // creaMaracasVisu viewer
- wxVtk3DBaseView *_baseView;
+ // creaMaracasVisu viewer
+ wxVtk3DBaseView *_baseView;
- // State of the 3D Scene or the virtual world
- int _worldState;
+ // State of the 3D Scene or the virtual world
+ int _worldState;
- //Map of id - objectController
- std::map<int,GObjectController*> _controllers;
+ //Map of id - objectController
+ std::map<int, GObjectController*> _controllers;
- //Saves the id's of the selected objects in the controllers map
- std::vector<int> _selectedObjects;
+ //Saves the id's of the selected objects in the controllers map
+ std::vector<int> _selectedObjects;
- //Is the diagram in state complex box
- bool _isComplexBox;
+ //Is the diagram in state complex box
+ bool _isComplexBox;
- int _idConnectionInCreation;
+ int _idConnectionInCreation;
- int _contLastId;
+ int _contLastId;
- vtkTextActor3D *_textActor;
- vtkPoints *_pts;
- vtkActor *_fillObjectActor;
- vtkDataSetMapper *_aPolygonMapper;
+ vtkTextActor3D *_textActor;
+ vtkPoints *_pts;
+ vtkActor *_fillObjectActor;
+ vtkDataSetMapper *_aPolygonMapper;
- std::string LineNumber(bool withLineNumber, int &value);
- int GetIndexInSelected(int idControler);
- void UnSelectBlackBoxes();
- GObjectController *GetGBlackBoxControlerPointedByMouse();
- void CancelConnection();
+ std::string LineNumber( bool withLineNumber, int &value );
+ int GetIndexInSelected( int idControler );
+ void UnSelectBlackBoxes( );
+ GObjectController *GetGBlackBoxControlerPointedByMouse( );
+ void CancelConnection( );
- protected:
+ protected:
- };
+ };
}