/*# --------------------------------------------------------------------- # # 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 { BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ImageActor) BBTK_BLACK_BOX_IMPLEMENTATION(ImageActor,bbtk::AtomicBlackBox); void ImageActor::Process() { printf("EED ImageActor::Process Start\n"); //JCP 04/04/09 vtkRenderer *render = bbGetInputRenderer(); vtkImageData *img = bbGetInputIn(); vtkLinearTransform* transform = bbGetInputTransform(); if(img != NULL) { if (bbGetInputLookupTable()==NULL) { imageactor->SetInput( img ); } 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(); // imageshiftscale->SetInput( img ); // imageshiftscale->SetOutputScalarTypeToUnsignedChar(); // color->SetInput( imageshiftscale->GetOutput() ); color->SetInput( img ); color->Update(); imageactor->GetMapper()->SetInput( color->GetOutput() ); imageactor->GetProperty()->SetInterpolationTypeToNearest(); } 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); printf("EED ImageActor::Process End\n"); } void ImageActor::bbUserSetDefaultValues() { 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(); } //----------------------------------------------------------------- void ImageActor::bbUserFinalizeProcessing() { } //----------------------------------------------------------------- } // EO namespace bbcreaMaracasVisu