+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# 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.
+# ------------------------------------------------------------------------ */
+
#include "bbmaracasvisuImageActor.h"
#include "bbcreaMaracasVisuPackage.h"
#include "vtkImageShiftScale.h"
+#include <vtkLookupTable.h>
+#include <vtkColorTransferFunction.h>
+#include <vtkImageMapToColors.h>
+#include <vtkImageMapper3D.h>
+#include <vtkImageProperty.h>
namespace bbcreaMaracasVisu
{
BBTK_BLACK_BOX_IMPLEMENTATION(ImageActor,bbtk::AtomicBlackBox);
void ImageActor::Process()
{
-
//JCP 04/04/09
vtkRenderer *render = bbGetInputRenderer();
vtkImageData *img = bbGetInputIn();
vtkLinearTransform* transform = bbGetInputTransform();
+
+
+ if(img != NULL)
+ {
+ if (bbGetInputLookupTable()==NULL)
+ {
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+ imageactor->SetInput( img );
+#else
+ imageactor->SetInputData( img );
+#endif
+ } else {
+/*
+ vtkLookupTable *table = vtkLookupTable::New();
+ table->SetRange(0, 1000); // image intensity range
+ table->SetValueRange(0.0, 1.0); // from black to white
+ table->SetSaturationRange(0.0, 0.0); // no color saturation
+ table->SetRampToLinear();
+ table->Build();
+ double rgba[4];
+ table->GetTableValue(0,rgba);
+ rgba[3]=0;
+ table->SetTableValue(0,rgba);
+*/
+
+
+/*
+ vtkLookupTable *table = vtkLookupTable::New();
+ table->SetTableRange (0, 2000);
+ table->SetHueRange (1, 0);
+ table->SetSaturationRange (1, 1);
+ table->SetValueRange (1, 1);
+ table->Build(); //effective built
+*/
+
+/*
+vtkColorTransferFunction *table = vtkColorTransferFunction::New();
+table->SetColorSpaceToHSV();
+ table->HSVWrapOff();
+ table->AddHSVSegment(0.0, 0.6, 1.0, 1.0,
+ 1.0, 0.0, 1.0, 1.0);
+ table->SetNanColor(1.0, 0.0, 1.0);
+*/
+
+/*
+printf("EED ImageActor::Process Warnning ***************************Not here this code *");
+vtkLookupTable *table = vtkLookupTable::New();
+ table->SetNumberOfTableValues(1000);
+ table->SetRange(0, 1000);
+ table->Build();
+ double rgba1[4];
+ double rgba2[4];
+ for (int iLookTable = 0; iLookTable<500; iLookTable++)
+ {
+ table->GetTableValue( iLookTable, rgba1);
+ table->GetTableValue(1000-1-iLookTable, rgba2);
+ table->SetTableValue(1000-1-iLookTable , rgba1[0],rgba1[1],rgba1[2],rgba1[3]);
+ table->SetTableValue( iLookTable , rgba2[0],rgba2[1],rgba2[2],rgba2[3]);
+ } // for iLookTable
+ double rgba[4];
+ table->GetTableValue(0,rgba);
+ rgba[3]=0;
+ table->SetTableValue(0,rgba);
+*/
+ vtkImageMapToColors *color = vtkImageMapToColors::New();
+ color->SetLookupTable( bbGetInputLookupTable() );
+// color->SetLookupTable( table );
+ color->PassAlphaToOutputOn();
- if(img != NULL){
- imageactor = vtkImageActor::New();
- vtkImageShiftScale *imageshiftscale = vtkImageShiftScale::New();
- imageshiftscale->SetInput( img );
- imageshiftscale->SetOutputScalarTypeToUnsignedChar();
- imageactor->SetInput( imageshiftscale->GetOutput() );
- if (transform!=NULL){
+// imageshiftscale->SetInput( img );
+// imageshiftscale->SetOutputScalarTypeToUnsignedChar();
+
+// color->SetInput( imageshiftscale->GetOutput() );
+
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+ color->SetInput( img );
+ color->Update();
+ imageactor->GetMapper()->SetInput( color->GetOutput() );
+#else
+ color->SetInputData( img );
+ color->Update();
+ imageactor->GetMapper()->SetInputData( color->GetOutput() );
+#endif
+ imageactor->GetProperty()->SetInterpolationTypeToNearest();
+ imageactor->SetForceOpaque(true);
+ }
+
+ if (transform!=NULL)
+ {
imageactor->SetUserTransform( transform );
} // transform
- if(render != NULL ){
- render->AddActor( imageactor );
+ if(render != NULL )
+ {
+// render->AddActor( imageactor );
} // render
bbSetOutputOut(imageactor);
} // img
-
-
+
// Interface Update
if ((firsttime==true) && (bbGetInputRenderer()!=NULL ))
{
firsttime=false;
bbGetInputRenderer()->AddActor( imageactor );
}
-
- bbSetOutputOut(imageactor);
-
+ imageactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
+ bbSetOutputOut(imageactor);
}
+
void ImageActor::bbUserSetDefaultValues()
{
- firsttime = true;
- imageactor = NULL;
-
+ firsttime = true;
+ imageactor = NULL;
bbSetInputIn(NULL);
+// bbSetInputType(0);
+ bbSetInputOpacity(1);
bbSetInputTransform(NULL);
bbSetInputRenderer(NULL);
-
+ bbSetInputLookupTable(NULL);
}
//-----------------------------------------------------------------
void ImageActor::bbUserInitializeProcessing()
{
+ imageactor = vtkImageActor::New();
+ imageshiftscale = vtkImageShiftScale::New();
}
//-----------------------------------------------------------------