]> Creatis software - creaMaracasVisu.git/commitdiff
#3196 creaMaracasVisu Feature New Normal - update ImageActor
authorEduardo DAVILA <davila@localhost.localdomain>
Wed, 13 Jun 2018 12:26:37 +0000 (14:26 +0200)
committerEduardo DAVILA <davila@localhost.localdomain>
Wed, 13 Jun 2018 12:26:37 +0000 (14:26 +0200)
bbtk/src/bbmaracasvisuImageActor.cxx
bbtk/src/bbmaracasvisuImageActor.h
lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClipping3DDataViewer.cxx

index dcbac3431771099a0c8cc2018b7be9c631810391..40b3f246fecf3c9d9592807c411964badde4d7f5 100644 (file)
 #include "bbcreaMaracasVisuPackage.h"
 
 #include "vtkImageShiftScale.h" 
+#include <vtkLookupTable.h>
+#include <vtkColorTransferFunction.h>
+#include <vtkImageMapToColors.h>
+#include <vtkImageMapper3D.h>
+#include <vtkImageProperty.h>
 
 namespace bbcreaMaracasVisu
 {
@@ -36,21 +41,93 @@ 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){
-                       
-                       imageshiftscale->SetInput( img );       
-                       imageshiftscale->SetOutputScalarTypeToUnsignedChar();   
-                       imageactor->SetInput( imageshiftscale->GetOutput() );   
-                       if (transform!=NULL){
+               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 );
+                       if(render != NULL )
+                       {
+//                             render->AddActor( imageactor );
                        } // render
                        bbSetOutputOut(imageactor);
                } // img
@@ -63,25 +140,31 @@ void ImageActor::Process()
                                bbGetInputRenderer()->AddActor( imageactor );
                }
                
+               imageactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
                bbSetOutputOut(imageactor);
+
+
+printf("EED ImageActor::Process End\n");
+
        
 }
 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();
        }
        
index 26c34d3b20c1d973f987c903d211f6b379f27ec2..a37515a99ed070383b94f74e552d4388fcf49cc8 100644 (file)
@@ -36,6 +36,7 @@
 #include <vtkTransform.h>
 #include <vtkLinearTransform.h>
 #include <vtkImageShiftScale.h>
+#include <vtkScalarsToColors.h>
 
 
 namespace bbcreaMaracasVisu
@@ -49,6 +50,9 @@ class bbcreaMaracasVisu_EXPORT ImageActor
   BBTK_DECLARE_INPUT(In,vtkImageData*);
   BBTK_DECLARE_INPUT(Transform,vtkLinearTransform*);
   BBTK_DECLARE_INPUT(Renderer,vtkRenderer*);
+  BBTK_DECLARE_INPUT(Opacity,double);
+  BBTK_DECLARE_INPUT(LookupTable,vtkScalarsToColors*);
+//  BBTK_DECLARE_INPUT(Type,int);
   BBTK_DECLARE_OUTPUT(Out,vtkProp3D*);
   BBTK_PROCESS(Process);
   void Process();
@@ -58,14 +62,17 @@ class bbcreaMaracasVisu_EXPORT ImageActor
 };
 
 BBTK_BEGIN_DESCRIBE_BLACK_BOX(ImageActor,bbtk::AtomicBlackBox);
-BBTK_NAME("ImageActor");
-BBTK_AUTHOR("InfoDev CREATIS-LRMN");
-BBTK_DESCRIPTION("put image in a 3D univers");
-BBTK_CATEGORY("");
-BBTK_INPUT(ImageActor,In,"Image input",vtkImageData*,"");
-BBTK_INPUT(ImageActor,Transform,"Transform",vtkLinearTransform*,"");
-BBTK_INPUT(ImageActor,Renderer,"Renderer",vtkRenderer*,"");
-BBTK_OUTPUT(ImageActor,Out,"Output vtk actor",vtkProp3D*,"");
+       BBTK_NAME("ImageActor");
+       BBTK_AUTHOR("InfoDev CREATIS");
+       BBTK_DESCRIPTION("put image in a 3D univers");
+       BBTK_CATEGORY("");
+       BBTK_INPUT(ImageActor,In,"Image input",vtkImageData*,"");
+//     BBTK_INPUT(ImageActor,Type,"0 (default) vtkImageShiftScale Unsigned Char, 1 ColorTable",int,"");
+       BBTK_INPUT(ImageActor,Transform,"Transform",vtkLinearTransform*,"");
+       BBTK_INPUT(ImageActor,Renderer,"Renderer",vtkRenderer*,"");
+       BBTK_INPUT(ImageActor,Opacity,"Opacity [0-1]",double,"");
+       BBTK_INPUT(ImageActor,LookupTable,"LookupTable [vtkScalarsToColors]",vtkScalarsToColors*,"");
+       BBTK_OUTPUT(ImageActor,Out,"Output vtk actor",vtkProp3D*,"");
 BBTK_END_DESCRIBE_BLACK_BOX(ImageActor);
 }
 // EO namespace bbcreaMaracasVisu
index a888215dc78262188dcaa7fade05be4dc4b72176..cde27ecfddadb323c610e6c6e02706445721d203 100644 (file)
@@ -31,7 +31,8 @@
 vtkClipping3DDataViewer::vtkClipping3DDataViewer()
 {
        int i;
-       for (i=0; i<VTKMPRDATA_MAXTISSUE; i++){
+       for (i=0; i<VTKMPRDATA_MAXTISSUE; i++)
+       {
                _visibleTissue[i]               = false;
                _representationType[i]  = true;
        }