#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 );
{
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
}
+
+