]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx
The buttons and the objects to create input and output complex box ports were added...
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsVtkGUIEditorGraphic / vtkGBoxView.cxx
diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx
new file mode 100644 (file)
index 0000000..f6121e4
--- /dev/null
@@ -0,0 +1,209 @@
+/*=========================================================================                                                                               
+Program:   bbtk
+Module:    $RCSfile$
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* 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::vtkGBoxView 
+*/
+
+
+#include "vtkGBoxView.h"
+
+namespace bbtk
+{
+
+
+       //=========================================================================
+       vtkGBoxView::vtkGBoxView()
+       {                       
+       }
+
+       //=========================================================================
+       vtkGBoxView::~vtkGBoxView()
+       {
+       }
+
+       //=========================================================================
+       void vtkGBoxView::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 vtkGBoxView::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
+
+               _pts->SetPoint(0, xInic, yInic, zInic );
+               _pts->SetPoint(1, xInic, yFin, zInic );
+               _pts->SetPoint(2, xFin, yFin, zFin );
+               _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 vtkGBoxView::addVtkActors()//virtual
+       {
+               _baseView->GetRenderer()->AddActor(_borderObjectActor);
+               vtkGObjectView::addVtkActors();
+       }
+
+       //=========================================================================
+
+       void vtkGBoxView::removeVtkActors()//virtual
+       {
+               _baseView->GetRenderer()->RemoveActor(_borderObjectActor);
+               vtkGObjectView::removeVtkActors();
+       }
+
+       //=========================================================================
+
+       void vtkGBoxView::updateColors()
+       {
+               _fillObjectActor->GetProperty()->SetAmbient(0.6);
+
+               if(_state==NOTHING_HAPPENS)
+               {
+                       _borderObjectActor->GetProperty()->SetLineWidth(1);
+                       _borderObjectActor->GetProperty()->SetColor(BOXBORDER_NH_R,BOXBORDER_NH_G,BOXBORDER_NH_B);
+                       _fillObjectActor->GetProperty()->SetColor(BOXFILL_NH_R,BOXFILL_NH_G,BOXFILL_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);
+               }
+       }
+
+       //=========================================================================
+
+       void vtkGBoxView::updatePorts()
+       {
+               GBoxModel* bmod =(GBoxModel*)_model;
+               bmod->updatePorts();
+       }
+
+       //=========================================================================
+
+}  // EO namespace bbtk
+
+// EOF
+