X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FEditorGraphicBBS%2FbbsVtkGUIEditorGraphic%2FvtkGBoxView.cxx;h=4c6c7ee6d00d2f5ffc7b9096cc47112f017179d2;hb=952979ff2fe394f9d781d92c23c919fdda854b8e;hp=89d0252ddb2fb9214c3b8734f0851878e9bccd18;hpb=910f9d7a7aecf26c88db3f595969a67ae5c27f78;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx index 89d0252..4c6c7ee 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/vtkGBoxView.cxx @@ -1,3 +1,28 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# +# 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. +# ------------------------------------------------------------------------ +*/ + /*========================================================================= Program: bbtk Module: $RCSfile$ @@ -35,6 +60,8 @@ Version: $Revision$ #include "vtkGBoxView.h" +#include "vtkUnsignedCharArray.h" +#include "vtkCellData.h" namespace bbtk { @@ -53,40 +80,131 @@ namespace bbtk //========================================================================= void vtkGBoxView::update(int idController,int command) { - updateColors(); - + 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 - + // RaC In the actual version, zInic=zFin=GPOSITION_Z _pts->SetPoint(0, xInic, yInic, zInic ); _pts->SetPoint(1, xInic, yFin, zInic ); _pts->SetPoint(2, xFin, yFin, zFin ); _pts->SetPoint(3, xFin, yInic, zFin ); - + _pts->Modified(); updatePorts(); - - _borderPolyMapper->Modified(); +// _borderPolyMapper->Modified(); _fillPolyMapper->Modified(); - //----------- - - //----------- setRefreshWaiting(); } + + //========================================================================= +//EED2017 + void vtkGBoxView::createVtkInputOutputPorts() + { + ///************************* Inputs Fill (triangles) ************************* + float rgb[3]; + GBoxModel* boxModel =(GBoxModel*)_model; + int numberOfTriangles = boxModel->getNumInputPorts(); + _TrianglesInputsPts = vtkPoints::New(); + _TrianglesInputsPts->SetNumberOfPoints( 3*numberOfTriangles ); + + vtkCellArray *stripTrianglesInputs = vtkCellArray::New(); + vtkPolyData *pdTrianglesInputs = vtkPolyData::New(); + _TrianglesInputsPolyMapper = vtkPolyDataMapper::New(); + _TrianglesInputsActor = vtkActor::New(); + // RaC In the actual version, zInic=zFin=GPOSITION_Z + for (int i=0 ; iInsertNextCell( 3 ); + stripTrianglesInputs->InsertCellPoint(i*3+0); + stripTrianglesInputs->InsertCellPoint(i*3+1); + stripTrianglesInputs->InsertCellPoint(i*3+2); + } + + // Create cell data + _cellDataInputTriangles = vtkUnsignedCharArray::New(); + _cellDataInputTriangles->SetNumberOfComponents(3); + _cellDataInputTriangles->SetNumberOfTuples(numberOfTriangles); + for (int i = 0; i < numberOfTriangles; i++) + { + rgb[0] = 100; + rgb[1] = 100; + rgb[2] = 100; + _cellDataInputTriangles->SetTuple(i, rgb); + } // for colors + pdTrianglesInputs->GetCellData()->SetScalars( _cellDataInputTriangles ); + + pdTrianglesInputs->SetPoints( _TrianglesInputsPts ); + pdTrianglesInputs->SetStrips( stripTrianglesInputs ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + _TrianglesInputsPolyMapper->SetInput( pdTrianglesInputs ); +#else + _TrianglesInputsPolyMapper->SetInputData( pdTrianglesInputs ); +#endif + + _TrianglesInputsActor->SetMapper(_TrianglesInputsPolyMapper); + _TrianglesInputsPolyMapper->Modified(); + + + ///************************* Inputs Fill (triangles) ************************* + + ///************************* Outputs Fill (triangles) ************************* + numberOfTriangles = boxModel->getNumOutputPorts(); + _TrianglesOutputsPts = vtkPoints::New(); + _TrianglesOutputsPts->SetNumberOfPoints( 3*numberOfTriangles ); + + vtkCellArray *stripTrianglesOutputs = vtkCellArray::New(); + vtkPolyData *pdTrianglesOutputs = vtkPolyData::New(); + _TrianglesOutputsPolyMapper = vtkPolyDataMapper::New(); + _TrianglesOutputsActor = vtkActor::New(); + // RaC In the actual version, zInic=zFin=GPOSITION_Z + for (int i=0 ; iInsertNextCell( 3 ); + stripTrianglesOutputs->InsertCellPoint(i*3+0); + stripTrianglesOutputs->InsertCellPoint(i*3+1); + stripTrianglesOutputs->InsertCellPoint(i*3+2); + } // for + // Create cell data + _cellDataOutputTriangles = vtkUnsignedCharArray::New(); + _cellDataOutputTriangles->SetNumberOfComponents(3); + _cellDataOutputTriangles->SetNumberOfTuples(numberOfTriangles); + for (int i = 0; i < numberOfTriangles; i++) + { + rgb[0] = 000; + rgb[1] = 255; + rgb[2] = 255; + _cellDataOutputTriangles->SetTuple(i, rgb); + } // for colors + pdTrianglesOutputs->GetCellData()->SetScalars( _cellDataOutputTriangles ); + pdTrianglesOutputs->SetPoints( _TrianglesOutputsPts ); + pdTrianglesOutputs->SetStrips( stripTrianglesOutputs ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + _TrianglesOutputsPolyMapper->SetInput( pdTrianglesOutputs ); +#else + _TrianglesOutputsPolyMapper->SetInputData( pdTrianglesOutputs ); +#endif + + _TrianglesOutputsActor->SetMapper(_TrianglesOutputsPolyMapper); + _TrianglesOutputsPolyMapper->Modified(); + ///************************* Inputs Fill (triangles) ************************* + } + + //========================================================================= void vtkGBoxView::createVtkObjects() //virtual { - //------------ _pts = vtkPoints::New(); - vtkCellArray *lines = vtkCellArray::New(); - vtkPolyData *_pd = vtkPolyData::New(); - _borderPolyMapper = vtkPolyDataMapper::New(); - _borderObjectActor = vtkActor::New(); +// vtkCellArray *lines = vtkCellArray::New(); +// vtkPolyData *_pd = vtkPolyData::New(); +// _borderPolyMapper = vtkPolyDataMapper::New(); +// _borderObjectActor = vtkActor::New(); _pts->SetNumberOfPoints(4); @@ -94,26 +212,30 @@ namespace bbtk _model->getInicPoint(xInic,yInic,zInic); _model->getFinalPoint(xFin, yFin,zFin); - // RaC In the actual version, zInic=zFin=900 + // RaC In the actual version, zInic=zFin=GPOSITION_Z - _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 ); +//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 ); - _borderPolyMapper->SetInput(_pd); - _borderObjectActor->SetMapper(_borderPolyMapper); - _borderPolyMapper->Modified(); +//EED 2017-03-02 +// _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 ************************* @@ -123,7 +245,7 @@ namespace bbtk _fillPolyMapper = vtkPolyDataMapper::New(); _fillObjectActor = vtkActor::New(); - // RaC In the actual version, zInic=zFin=900 + // RaC In the actual version, zInic=zFin=GPOSITION_Z strip->InsertNextCell(5); strip->InsertCellPoint(0); @@ -135,27 +257,35 @@ namespace bbtk pdFill->SetPoints( _pts ); pdFill->SetStrips( strip ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 _fillPolyMapper->SetInput(pdFill); +#else + _fillPolyMapper->SetInputData(pdFill); +#endif _fillObjectActor->SetMapper(_fillPolyMapper); _fillPolyMapper->Modified(); ///************************* FILL ************************* - } //========================================================================= void vtkGBoxView::addVtkActors()//virtual { - _baseView->GetRenderer()->AddActor(_borderObjectActor); +// _baseView->GetRenderer()->AddActor(_borderObjectActor); vtkGObjectView::addVtkActors(); + _baseView->GetRenderer()->AddActor(_TrianglesInputsActor); + _baseView->GetRenderer()->AddActor(_TrianglesOutputsActor); } //========================================================================= void vtkGBoxView::removeVtkActors()//virtual { - _baseView->GetRenderer()->RemoveActor(_borderObjectActor); +// _baseView->GetRenderer()->RemoveActor(_borderObjectActor); + _baseView->GetRenderer()->RemoveActor(_TrianglesInputsActor); + _baseView->GetRenderer()->RemoveActor(_TrianglesOutputsActor); vtkGObjectView::removeVtkActors(); } @@ -163,45 +293,125 @@ namespace bbtk void vtkGBoxView::updateColors() { + printf("EED vtkGBoxView::updateColors\n"); _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); +// _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); +// _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); +// _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); +// _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); - } + } // if state box + + updateColorsPorts(); } + //========================================================================= + void vtkGBoxView::updateColorsPorts() + { + // Input ports + float rgb[3]; + vtkGPortView *portView; + GBoxModel *boxModel = (GBoxModel*)_model; + int numberOfTriangles = boxModel->getNumInputPorts(); + for (int i=0 ; igetColors(rgb); + rgb[0]=rgb[0]*255; + rgb[1]=rgb[1]*255; + rgb[2]=rgb[2]*255; + _cellDataInputTriangles->SetTuple(i, rgb); + } // for + + numberOfTriangles = boxModel->getNumOutputPorts(); + for (int i=0 ; igetColors(rgb); + rgb[0]=rgb[0]*255; + rgb[1]=rgb[1]*255; + rgb[2]=rgb[2]*255; + _cellDataOutputTriangles->SetTuple(i, rgb); + } // for + } + + //========================================================================= void vtkGBoxView::updatePorts() { - GBoxModel* bmod =(GBoxModel*)_model; - bmod->updatePorts(); + double xInic, yInic,zInic,xFin, yFin,zFin; + + GBoxModel* boxModel = (GBoxModel*)_model; + boxModel->updatePorts(); + +// update position for one Actor that represents all InputPorts + GPortModel *portModel; + int numberOfTriangles = boxModel->getNumInputPorts(); + for (int i=0;igetInputPort(i); + portModel->getInicPoint( xInic , yInic , zInic ) ; + portModel->getFinalPoint( xFin , yFin , zFin ) ; + // RaC In the actual version, zInic=zFin=GPOSITION_Z + _TrianglesInputsPts->SetPoint(i*3+0, xInic , yInic , zInic ); + _TrianglesInputsPts->SetPoint(i*3+1, ( xInic + xFin ) / 2 , yFin , zInic ); + _TrianglesInputsPts->SetPoint(i*3+2, xFin , yInic , zFin ); + } + _TrianglesInputsPts->Modified(); + _TrianglesInputsPolyMapper->Modified( ) ; + +// update position for one Actor that represents all OutputPorts + numberOfTriangles = boxModel->getNumOutputPorts(); + for (int i=0;igetOutputPort(i); + portModel->getInicPoint( xInic , yInic , zInic ) ; + portModel->getFinalPoint( xFin , yFin , zFin ) ; + // RaC In the actual version, zInic=zFin=GPOSITION_Z + _TrianglesOutputsPts->SetPoint(i*3+0, xInic , yInic , zInic ); + _TrianglesOutputsPts->SetPoint(i*3+1, ( xInic + xFin ) / 2 , yFin , zInic ); + _TrianglesOutputsPts->SetPoint(i*3+2, xFin , yInic , zFin ); + } + _TrianglesOutputsPts->Modified(); + _TrianglesOutputsPolyMapper->Modified( ) ; + + + + } + + //========================================================================= + void vtkGBoxView::addInputPort(vtkGPortView *inputport) + { + _inputsG.push_back(inputport); } //========================================================================= + void vtkGBoxView::addOutputPort(vtkGPortView *outputport) + { + _outputsG.push_back(outputport); + } + } // EO namespace bbtk