]> Creatis software - creaMaracasVisu.git/commitdiff
#3363 creaMaracasVisu Feature New - Normal ViewerNV with color RGB images
authorEduardo DAVILA <davila@localhost.localdomain>
Mon, 17 Feb 2020 12:52:54 +0000 (13:52 +0100)
committerEduardo DAVILA <davila@localhost.localdomain>
Mon, 17 Feb 2020 12:52:54 +0000 (13:52 +0100)
bbtk/src/bbcreaMaracasVisuReadCreaContourFile.cxx
lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.cxx
lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkImageViewer2_XYZ.h

index 202e5cb93d1d6995202193a156b8e7c50f3520df..a3fafa05cd0c2bdf934e2af9406a66bb790954c5 100644 (file)
@@ -79,7 +79,7 @@ void ReadCreaContourFile::Process()
                                        fscanf(ff,"%s",tmp);  // 
                                        fscanf(ff,"%s",tmp);  // TypeModel
                                        fscanf(ff,"%d",&TypeModel);  // 
-                                       if (TypeModel==1)
+                                       if ((TypeModel==1) || (TypeModel==6)  )
                                        {
                                                fscanf(ff,"%s",tmp);  // NumberOfControlPoints
                                                fscanf(ff,"%d",&NumberOfControlPoints);  // 
index 69a183fd49a728ad669b2f55543f9cd41d781911..b03173ef2ffc0475ab2f30cfd0e829c90aaca6fb 100644 (file)
 #include "vtkRenderer.h"
 #include "vtkImageActor.h"
 #include "vtkImageData.h"
+
+
+
+#include "vtkLookupTable.h"
+#include "vtkObjectFactory.h"
+
+class /*VTK_COMMON_EXPORT*/ vtkLookupTableDirectionVector2 : public vtkScalarsToColors
+{
+public:
+       // Description:
+       // Construct with range=[0,1]; and hsv ranges set up for rainbow color table 
+       // (from red to blue).
+       static vtkLookupTableDirectionVector2 *New();
+       
+       vtkTypeMacro(vtkLookupTableDirectionVector2,vtkScalarsToColors);
+       void PrintSelf(ostream& os, vtkIndent indent);
+
+       double *GetRange() { return this->GetTableRange(); };
+       void SetRange(double min, double max) { this->SetTableRange(min, max); };
+       void SetRange(double rng[2]) { this->SetRange(rng[0], rng[1]); };
+       
+       void SetTableRange(double r[2]); 
+       virtual void SetTableRange(double min, double max);
+       vtkGetVectorMacro(TableRange,double,2);
+                       
+       unsigned char *MapValue(double v);
+       
+       void GetColor(double x, double rgb[3]);
+       
+
+       void MapScalarsThroughTable2(void *input, unsigned char *output,
+                                                                int inputDataType, int numberOfValues,
+                                                                int inputIncrement, int outputIncrement);
+               
+protected:
+       double TableRange[2];
+       vtkLookupTableDirectionVector2(int sze=256, int ext=256);
+       ~vtkLookupTableDirectionVector2();
+               
+private:
+       vtkLookupTableDirectionVector2(const vtkLookupTableDirectionVector2&);  // Not implemented.
+       void operator=(const vtkLookupTableDirectionVector2&);  // Not implemented.
+};
+
+
+
+
+vtkStandardNewMacro(vtkLookupTableDirectionVector2);
+
+// Construct with range=(0,1); and hsv ranges set up for rainbow color table 
+// (from red to blue).
+vtkLookupTableDirectionVector2::vtkLookupTableDirectionVector2(int sze, int ext)
+{
+       this->TableRange[0] = 0.0;
+       this->TableRange[1] = 1.0;
+}
+
+//----------------------------------------------------------------------------
+vtkLookupTableDirectionVector2::~vtkLookupTableDirectionVector2()
+{
+}
+
+unsigned char *vtkLookupTableDirectionVector2::MapValue(double v)
+{
+       
+       //int idx = this->GetIndex(v);
+       //return (this->Table->GetPointer(0) + 4*idx);  
+       return 0;
+}
+
+void vtkLookupTableDirectionVector2::GetColor(double v, double rgb[3])
+{
+//     unsigned char *rgb8 = this->MapValue(v);
+//     rgb[0] = rgb8[0]/255.0;
+//     rgb[1] = rgb8[1]/255.0;
+//     rgb[2] = rgb8[2]/255.0;
+
+       rgb[0] = 1;
+       rgb[1] = 1;
+       rgb[2] = 0;
+}
+
+
+void vtkLookupTableDirectionVector2::SetTableRange(double r[2])
+{
+       this->SetTableRange(r[0],r[1]);
+}
+
+//----------------------------------------------------------------------------
+// Set the minimum/maximum scalar values for scalar mapping. Scalar values
+// less than minimum range value are clamped to minimum range value.
+// Scalar values greater than maximum range value are clamped to maximum
+// range value.
+void vtkLookupTableDirectionVector2::SetTableRange(double rmin, double rmax)
+{
+       if (rmax < rmin)
+    {
+               vtkErrorMacro("Bad table range: ["<<rmin<<", "<<rmax<<"]");
+               return;
+    }
+       
+       if (this->TableRange[0] == rmin && this->TableRange[1] == rmax)
+    {
+               return;
+    }
+       
+       this->TableRange[0] = rmin;
+       this->TableRange[1] = rmax;
+       
+       this->Modified();
+}
+
+
+
+//----------------------------------------------------------------------------
+// Although this is a relatively expensive calculation,
+// it is only done on the first render. Colors are cached
+// for subsequent renders.
+template<class T>
+void vtkLookupTableMapDirVectorEED2(vtkLookupTableDirectionVector2 *self, T *input, 
+                          unsigned char *output, int length, 
+                          int inIncr, int outFormat)
+{
+       int i;
+       for (i = 0; i < length; ++i)
+    {
+                       *output++ = static_cast<T>(input[0]);  // red
+                       *output++ = static_cast<T>(input[1]);  // green
+                       *output++ = static_cast<T>(input[2]);  // blue
+//                     *output++ = 255;
+                       input   = input+inIncr;
+       } // for
+
+}
+
+
+//----------------------------------------------------------------------------
+void vtkLookupTableDirectionVector2::MapScalarsThroughTable2(void *input, 
+                                             unsigned char *output,
+                                             int inputDataType, 
+                                             int numberOfValues,
+                                             int inputIncrement,
+                                             int outputFormat)
+{
+// if (this->UseMagnitude && inputIncrement > 1)
+// {
+     switch (inputDataType)
+     {
+       vtkTemplateMacro( vtkLookupTableMapDirVectorEED2(this,static_cast<VTK_TT*>(input),output,
+                        numberOfValues,inputIncrement,outputFormat);
+                        return 
+                        );
+        case VTK_BIT:
+           vtkErrorMacro("Cannot comput magnitude of bit array.");
+           break;
+        default:
+           vtkErrorMacro(<< "MapImageThroughTable: Unknown input ScalarType");
+     } /// switch
+// } //if
+}  
+
+
+//----------------------------------------------------------------------------
+void vtkLookupTableDirectionVector2::PrintSelf(ostream& os, vtkIndent indent)
+{
+       this->Superclass::PrintSelf(os,indent); 
+}
+
+
+
+
 //-------------------------------------------------------------------
 //-------------------------------------------------------------------
 //-------------------------------------------------------------------
 vtkImageViewer2_XYZ::vtkImageViewer2_XYZ()
 {
-       _vtkimageviewer2 vtkImageViewer2::New();
+       _vtkimageviewer2 = vtkImageViewer2::New();
        _vtkimageviewer2->GetRenderer()->GradientBackgroundOn();
        _vtkimageviewer2->GetRenderer()->SetBackground( 0.33 , 0.33 , 0.33 );
        _vtkimageviewer2->GetRenderer()->SetBackground2( 0.66 , 0.66 , 0.66 );
@@ -112,13 +283,37 @@ vtkImageViewer2 *vtkImageViewer2_XYZ::GetVtkImageViewer2()
 {
        return _vtkimageviewer2;
 }
+
 //-------------------------------------------------------------------
 void vtkImageViewer2_XYZ::setColorTransferFunction(vtkColorTransferFunction* colortable)
 {      
-       vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _vtkimageviewer2->GetWindowLevel();
-       if(colortable!=NULL&&colortable->GetSize()>0 && _colortable != colortable)
+       if(colortable!=NULL && colortable->GetSize()>0 && _colortable!=colortable)
+       {
+               _colortable = colortable;
+               vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _vtkimageviewer2->GetWindowLevel();
+               imagemaptowindowlevel->SetLookupTable(_colortable);
+       } // if colortable
+}
+
+//-------------------------------------------------------------------
+void vtkImageViewer2_XYZ::setScalarsToColors(vtkScalarsToColors* colortable, int outputformat)
+{
+/* outputformat      VTK-8.1.1/Common/Core/vtkSystemIncludes.h
+       VTK_LUMINANCE       1
+       VTK_LUMINANCE_ALPHA 2
+       VTK_RGB             3
+       VTK_RGBA            4
+*/
+       if( _colortable!=colortable)
        {
                _colortable = colortable;
-               imagemaptowindowlevel->SetLookupTable(colortable);
-       }
+               _vtkimageviewer2->GetWindowLevel()->SetOutputFormat( outputformat );
+               _vtkimageviewer2->GetWindowLevel()->SetLookupTable(colortable);
+//             _vtkimageviewer2->GetWindowLevel()->SetOutputFormatToRGB();
+//     vtkLookupTableDirectionVector2 *_LutEED = vtkLookupTableDirectionVector2::New();
+//     _LutEED->SetVectorModeToRGBColors();
+//     _vtkimageviewer2->GetWindowLevel()->SetLookupTable(_LutEED);
+       } // if colortable
 }
+
+
index 82acd440963c67490c3aeace4edd17edd75e78d9..b20ea7826248ce234529802c943653ba9e3886f7 100644 (file)
@@ -46,12 +46,13 @@ public:
        int                             GetXSlice();
        int                             GetYSlice();
        int                             GetZSlice();
-       void setColorTransferFunction(vtkColorTransferFunction* colortable);
+       void                    setColorTransferFunction(vtkColorTransferFunction* colortable);
+       void                    setScalarsToColors(vtkScalarsToColors* colortable, int outputformat);
        vtkImageViewer2 *GetVtkImageViewer2();
 private:
-       int     _x1,_x2,_y1,_y2,_z1,_z2;
-       vtkImageViewer2 *_vtkimageviewer2;
-       vtkColorTransferFunction* _colortable;
+       int                                     _x1,_x2,_y1,_y2,_z1,_z2;
+       vtkImageViewer2         *_vtkimageviewer2;
+       vtkScalarsToColors      *_colortable;
 protected:
 };