X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuImageActor.cxx;h=7d6e5c8dec3950419f68904a6bb60e0b25086dce;hb=d79fc05657cfa43ed1cd6937a5acaeaf70e09b45;hp=166901c2a7dd663602194a87ad967caac8d3582b;hpb=1d12f84a5b356a129eee9bff6116bf52f36a1f45;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuImageActor.cxx b/bbtk/src/bbmaracasvisuImageActor.cxx index 166901c..7d6e5c8 100644 --- a/bbtk/src/bbmaracasvisuImageActor.cxx +++ b/bbtk/src/bbmaracasvisuImageActor.cxx @@ -1,7 +1,37 @@ +/*# --------------------------------------------------------------------- +# +# 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 +#include +#include +#include +#include namespace bbcreaMaracasVisu { @@ -10,44 +40,147 @@ BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ImageActor) 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); +*/ - if ((bbGetInputIn()!=NULL) && (bbGetInputRenderer()!=NULL)) - { - - imageactor = vtkImageActor::New(); - vtkImageShiftScale *imageshiftscale = vtkImageShiftScale::New(); - imageshiftscale->SetInput( bbGetInputIn() ); - imageshiftscale->SetOutputScalarTypeToUnsignedChar(); - imageactor->SetInput( imageshiftscale->GetOutput() ); - imageactor->SetUserTransform( bbGetInputTransform() ); - } - // Interface Update - if ((firsttime==true) && (bbGetInputRenderer()!=NULL )) - { - firsttime=false; - bbGetInputRenderer()->AddActor( imageactor ); - } + +/* + 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(); + +// 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 ); + } // render + bbSetOutputOut(imageactor); + } // img + + // Interface Update + if ((firsttime==true) && (bbGetInputRenderer()!=NULL )) + { + firsttime=false; + bbGetInputRenderer()->AddActor( imageactor ); + } + imageactor->GetProperty()->SetOpacity( bbGetInputOpacity() ); + bbSetOutputOut(imageactor); } -void ImageActor::bbUserConstructor() -{ - firsttime = true; - imageactor = NULL; +void ImageActor::bbUserSetDefaultValues() +{ + firsttime = true; + imageactor = NULL; bbSetInputIn(NULL); +// bbSetInputType(0); + bbSetInputOpacity(1); bbSetInputTransform(NULL); bbSetInputRenderer(NULL); - -} -void ImageActor::bbUserCopyConstructor(bbtk::BlackBox::Pointer) -{ - - + bbSetInputLookupTable(NULL); } -void ImageActor::bbUserDestructor() -{ - -} + + //----------------------------------------------------------------- + void ImageActor::bbUserInitializeProcessing() + { + imageactor = vtkImageActor::New(); + imageshiftscale = vtkImageShiftScale::New(); + } + + //----------------------------------------------------------------- + void ImageActor::bbUserFinalizeProcessing() + { + } + + //----------------------------------------------------------------- } // EO namespace bbcreaMaracasVisu