VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkImageBlend Class Reference

blend images together using alpha or opacity More...

#include <vtkImageBlend.h>

Inherits vtkThreadedImageAlgorithm.

Public Types

typedef vtkThreadedImageAlgorithm Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkImageBlendNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
virtual void ReplaceNthInputConnection (int idx, vtkAlgorithmOutput *input)
 
int GetNumberOfInputs ()
 
void SetStencilConnection (vtkAlgorithmOutput *algOutput)
 
void SetInputData (int num, vtkDataObject *input)
 
void SetInputData (vtkDataObject *input)
 
vtkDataObject * GetInput (int num)
 
vtkDataObject * GetInput ()
 
void SetOpacity (int idx, double opacity)
 
double GetOpacity (int idx)
 
void SetStencilData (vtkImageStencilData *stencil)
 
vtkImageStencilDataGetStencil ()
 
virtual void SetBlendMode (int)
 
virtual int GetBlendMode ()
 
void SetBlendModeToNormal ()
 
void SetBlendModeToCompound ()
 
const char * GetBlendModeAsString (void)
 
virtual void SetCompoundThreshold (double)
 
virtual double GetCompoundThreshold ()
 

Static Public Member Functions

static vtkImageBlendNew ()
 
static int IsTypeOf (const char *type)
 
static vtkImageBlendSafeDownCast (vtkObjectBase *o)
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkImageBlend ()
 
 ~vtkImageBlend ()
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
void InternalComputeInputUpdateExtent (int inExt[6], int outExt[6], int inWExtent[6])
 
void ThreadedRequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int ext[6], int id)
 
virtual int FillInputPortInformation (int, vtkInformation *)
 
virtual int RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 

Protected Attributes

double * Opacity
 
int OpacityArrayLength
 
int BlendMode
 
double CompoundThreshold
 
int DataWasPassed
 

Detailed Description

blend images together using alpha or opacity

vtkImageBlend takes L, LA, RGB, or RGBA images as input and blends them according to the alpha values and/or the opacity setting for each input.

The spacing, origin, extent, and number of components of the output are the same as those for the first input. If the input has an alpha component, then this component is copied unchanged into the output. In addition, if the first input has either one component or two components i.e. if it is either L (greyscale) or LA (greyscale + alpha) then all other inputs must also be L or LA.

Different blending modes are available:

Normal (default) : This is the standard blending mode used by OpenGL and other graphics packages. The output always has the same number of components and the same extent as the first input. The alpha value of the first input is not used in the blending computation, instead it is copied directly to the output.

output <- input[0]
foreach input i {
foreach pixel px {
r <- input[i](px)(alpha) * opacity[i]
f <- (255 - r)
output(px) <- output(px) * f + input(px) * r
}
}

Compound : Images are compounded together and each component is scaled by the sum of the alpha/opacity values. Use the CompoundThreshold method to set specify a threshold in compound mode. Pixels with opacity*alpha less or equal than this threshold are ignored. The alpha value of the first input, if present, is NOT copied to the alpha value of the output. The output always has the same number of components and the same extent as the first input.

output <- 0
foreach pixel px {
sum <- 0
foreach input i {
r <- input[i](px)(alpha) * opacity(i)
sum <- sum + r
if r > threshold {
output(px) <- output(px) + input(px) * r
}
}
output(px) <- output(px) / sum
}
Tests:
vtkImageBlend (Tests)

Definition at line 88 of file vtkImageBlend.h.

Member Typedef Documentation

typedef vtkThreadedImageAlgorithm vtkImageBlend::Superclass

Definition at line 92 of file vtkImageBlend.h.

Constructor & Destructor Documentation

vtkImageBlend::vtkImageBlend ( )
protected
vtkImageBlend::~vtkImageBlend ( )
protected

Member Function Documentation

static vtkImageBlend* vtkImageBlend::New ( )
static
static int vtkImageBlend::IsTypeOf ( const char *  type)
static
virtual int vtkImageBlend::IsA ( const char *  type)
virtual
static vtkImageBlend* vtkImageBlend::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkImageBlend::NewInstanceInternal ( ) const
protectedvirtual
vtkImageBlend* vtkImageBlend::NewInstance ( ) const
void vtkImageBlend::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual void vtkImageBlend::ReplaceNthInputConnection ( int  idx,
vtkAlgorithmOutput *  input 
)
virtual

Replace one of the input connections with a new input. You can only replace input connections that you previously created with AddInputConnection() or, in the case of the first input, with SetInputConnection().

void vtkImageBlend::SetInputData ( int  num,
vtkDataObject *  input 
)

Assign a data object as input. Note that this method does not establish a pipeline connection. Use SetInputConnection() to setup a pipeline connection.

void vtkImageBlend::SetInputData ( vtkDataObject *  input)
inline

Assign a data object as input. Note that this method does not establish a pipeline connection. Use SetInputConnection() to setup a pipeline connection.

Definition at line 106 of file vtkImageBlend.h.

vtkDataObject* vtkImageBlend::GetInput ( int  num)

Get one input to this filter. This method is only for support of old-style pipeline connections. When writing new code you should use vtkAlgorithm::GetInputConnection(0, num).

vtkDataObject* vtkImageBlend::GetInput ( )
inline

Get one input to this filter. This method is only for support of old-style pipeline connections. When writing new code you should use vtkAlgorithm::GetInputConnection(0, num).

Definition at line 114 of file vtkImageBlend.h.

int vtkImageBlend::GetNumberOfInputs ( )
inline

Get the number of inputs to this filter. This method is only for support of old-style pipeline connections. When writing new code you should use vtkAlgorithm::GetNumberOfInputConnections(0).

Definition at line 120 of file vtkImageBlend.h.

void vtkImageBlend::SetOpacity ( int  idx,
double  opacity 
)

Set the opacity of an input image: the alpha values of the image are multiplied by the opacity. The opacity of image idx=0 is ignored.

double vtkImageBlend::GetOpacity ( int  idx)

Set the opacity of an input image: the alpha values of the image are multiplied by the opacity. The opacity of image idx=0 is ignored.

void vtkImageBlend::SetStencilConnection ( vtkAlgorithmOutput *  algOutput)

Set a stencil to apply when blending the data. Create a pipeline connection.

void vtkImageBlend::SetStencilData ( vtkImageStencilData stencil)

Set a stencil to apply when blending the data.

vtkImageStencilData* vtkImageBlend::GetStencil ( )

Set a stencil to apply when blending the data.

virtual void vtkImageBlend::SetBlendMode ( int  )
virtual

Set the blend mode

virtual int vtkImageBlend::GetBlendMode ( )
virtual

Set the blend mode

void vtkImageBlend::SetBlendModeToNormal ( )
inline

Set the blend mode

Definition at line 145 of file vtkImageBlend.h.

void vtkImageBlend::SetBlendModeToCompound ( )
inline

Set the blend mode

Definition at line 147 of file vtkImageBlend.h.

const char * vtkImageBlend::GetBlendModeAsString ( void  )
inline

Get the blending mode as a descriptive string

Definition at line 197 of file vtkImageBlend.h.

virtual void vtkImageBlend::SetCompoundThreshold ( double  )
virtual

Specify a threshold in compound mode. Pixels with opacity*alpha less or equal the threshold are ignored.

virtual double vtkImageBlend::GetCompoundThreshold ( )
virtual

Specify a threshold in compound mode. Pixels with opacity*alpha less or equal the threshold are ignored.

virtual int vtkImageBlend::RequestUpdateExtent ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual
void vtkImageBlend::InternalComputeInputUpdateExtent ( int  inExt[6],
int  outExt[6],
int  inWExtent[6] 
)
protected
void vtkImageBlend::ThreadedRequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector,
vtkImageData ***  inData,
vtkImageData **  outData,
int  ext[6],
int  id 
)
protected
virtual int vtkImageBlend::FillInputPortInformation ( int  ,
vtkInformation *   
)
protectedvirtual
virtual int vtkImageBlend::RequestData ( vtkInformation *  request,
vtkInformationVector **  inputVector,
vtkInformationVector *  outputVector 
)
protectedvirtual

Member Data Documentation

double* vtkImageBlend::Opacity
protected

Definition at line 184 of file vtkImageBlend.h.

int vtkImageBlend::OpacityArrayLength
protected

Definition at line 185 of file vtkImageBlend.h.

int vtkImageBlend::BlendMode
protected

Definition at line 186 of file vtkImageBlend.h.

double vtkImageBlend::CompoundThreshold
protected

Definition at line 187 of file vtkImageBlend.h.

int vtkImageBlend::DataWasPassed
protected

Definition at line 188 of file vtkImageBlend.h.


The documentation for this class was generated from the following file: