#include <cpExtensions/cpExtensions_Export.h>
-#include <cmath>
-#include <map>
+#include <vector>
#include <vtkThreadedImageAlgorithm.h>
namespace Visualization
{
/**
+ * @note: Based on vtkImageWeightedSum
*/
class cpExtensions_EXPORT ImageBlender
: public vtkThreadedImageAlgorithm
typedef ImageBlender Self;
vtkTypeMacro( ImageBlender, vtkThreadedImageAlgorithm );
- vtkGetMacro( MaxWindow, double );
- vtkGetMacro( MaxLevel, double );
- vtkGetMacro( MinWindow, double );
- vtkGetMacro( MinLevel, double );
- vtkGetMacro( Window, double );
- vtkGetMacro( Level, double );
-
- vtkSetMacro( MaxWindow, double );
- vtkSetMacro( MaxLevel, double );
- vtkSetMacro( MinWindow, double );
- vtkSetMacro( MinLevel, double );
- vtkSetMacro( Window, double );
- vtkSetMacro( Level, double );
-
public:
static Self* New( );
- void PrintSelf( std::ostream& os, vtkIndent indent );
-
- unsigned int GetNumberOfImages( ) const;
- void SetWindowLevel( const double& w, const double& l );
- void GetColor(
- const unsigned int& i,
- double& r,
- double& g,
- double& b
- ) const;
- void SetColor(
- const unsigned int& i,
- const double& r,
- const double& g,
- const double& b
- );
+ unsigned int GetNumberOfInputs( );
protected:
ImageBlender( );
vtkInformationVector** inputVector,
vtkInformationVector* outputVector
);
+ int RequestData(
+ vtkInformation* request,
+ vtkInformationVector** inputVector,
+ vtkInformationVector* outputVector
+ );
void ThreadedRequestData(
vtkInformation* request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector,
- vtkImageData*** inData,
- vtkImageData** outData,
+ vtkImageData*** inData, vtkImageData** outData,
int outExt[ 6 ], int id
);
int FillInputPortInformation( int i, vtkInformation* info );
- void _GenerateData(
- vtkImageData** inDatas,
- int numInputs,
- vtkImageData* outData,
- int outExt[ 6 ],
- int id
- );
-
private:
// Purposely not implemented.
ImageBlender( const Self& other );
void operator=( const Self& other );
protected:
- struct TColor
- {
- double R, G, B, N;
- TColor(
- const double& r = double( 1 ),
- const double& g = double( 0 ),
- const double& b = double( 0 )
- )
- : R( r ),
- G( g ),
- B( b )
- {
- this->N = std::sqrt( ( r * r ) + ( g * g ) + ( b * b ) );
- }
- };
- mutable std::map< unsigned int, TColor > Colors;
-
- double MaxWindow;
- double MaxLevel;
- double MinWindow;
- double MinLevel;
- double Window;
- double Level;
-
- int m_Extent[ 6 ];
- double m_WLSlope;
- double m_WLOffset;
+ std::vector< double > m_Ranges;
};
} // ecapseman