+/*
+# ---------------------------------------------------------------------
+#
+# 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$
#include "vtkGBoxView.h"
+#include "vtkUnsignedCharArray.h"
+#include "vtkCellData.h"
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 ; i<numberOfTriangles; i++)
+ {
+ stripTrianglesInputs->InsertNextCell( 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 );
+ _TrianglesInputsPolyMapper->SetInput( pdTrianglesInputs );
+ _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 ; i<numberOfTriangles; i++)
+ {
+ stripTrianglesOutputs->InsertNextCell( 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 );
+ _TrianglesOutputsPolyMapper->SetInput( pdTrianglesOutputs );
+ _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);
_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 *************************
_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);
_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();
}
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 ; i<numberOfTriangles; i++)
+ {
+ portView = _inputsG[i];
+ portView->getColors(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 ; i<numberOfTriangles; i++)
+ {
+ portView = _outputsG[i];
+ portView->getColors(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;i<numberOfTriangles;i++)
+ {
+ portModel = boxModel->getInputPort(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;i<numberOfTriangles;i++)
+ {
+ portModel= boxModel->getOutputPort(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