#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(img != NULL)
+ {
+ if (bbGetInputLookupTable()==NULL)
+ {
//EED 2017-01-01 Migration VTK7
#if VTK_MAJOR_VERSION <= 5
- imageshiftscale->SetInput( img );
+ imageactor->SetInput( img );
#else
- imageshiftscale->SetInputData( img );
+ imageactor->SetInputData( img );
#endif
- imageshiftscale->SetOutputScalarTypeToUnsignedChar();
+ } 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() );
+
//EED 2017-01-01 Migration VTK7
#if VTK_MAJOR_VERSION <= 5
- imageactor->SetInput( imageshiftscale->GetOutput() );
+ color->SetInput( img );
+ color->Update();
+ imageactor->GetMapper()->SetInput( color->GetOutput() );
#else
- imageshiftscale->Update();
- imageactor->SetInputData( imageshiftscale->GetOutput() );
+ color->SetInputData( img );
+ imageactor->GetMapper()->SetInputData( color->GetOutput() );
#endif
- if (transform!=NULL){
+ imageactor->GetProperty()->SetInterpolationTypeToNearest();
+ }
+
+ 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();
+ imageactor = vtkImageActor::New();
imageshiftscale = vtkImageShiftScale::New();
}