You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
5.1 KiB
C
140 lines
5.1 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkImageRectilinearWipe.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkImageRectilinearWipe
|
||
|
* @brief make a rectilinear combination of two images.
|
||
|
*
|
||
|
* vtkImageRectilinearWipe makes a rectilinear combination of two
|
||
|
* images. The two input images must correspond in size, scalar type and
|
||
|
* number of components.
|
||
|
* The resulting image has four possible configurations
|
||
|
* called:
|
||
|
* Quad - alternate input 0 and input 1 horizontally and
|
||
|
* vertically. Select this with SetWipeModeToQuad. The Position
|
||
|
* specifies the location of the quad intersection.
|
||
|
* Corner - 3 of one input and 1 of the other. Select the location of
|
||
|
* input 0 with with SetWipeModeToLowerLeft, SetWipeModeToLowerRight,
|
||
|
* SetWipeModeToUpperLeft and SetWipeModeToUpperRight. The Position
|
||
|
* selects the location of the corner.
|
||
|
* Horizontal - alternate input 0 and input 1 with a vertical
|
||
|
* split. Select this with SetWipeModeToHorizontal. Position[0]
|
||
|
* specifies the location of the vertical transition between input 0
|
||
|
* and input 1.
|
||
|
* Vertical - alternate input 0 and input 1 with a horizontal
|
||
|
* split. Only the y The intersection point of the rectilinear points
|
||
|
* is controlled with the Point ivar.
|
||
|
*
|
||
|
* @par Thanks:
|
||
|
* This work was supported by PHS Research Grant No. 1 P41 RR13218-01
|
||
|
* from the National Center for Research Resources.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkImageCheckerboard
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkImageRectilinearWipe_h
|
||
|
#define vtkImageRectilinearWipe_h
|
||
|
|
||
|
#include "vtkImagingHybridModule.h" // For export macro
|
||
|
#include "vtkThreadedImageAlgorithm.h"
|
||
|
|
||
|
#define VTK_WIPE_QUAD 0
|
||
|
#define VTK_WIPE_HORIZONTAL 1
|
||
|
#define VTK_WIPE_VERTICAL 2
|
||
|
#define VTK_WIPE_LOWER_LEFT 3
|
||
|
#define VTK_WIPE_LOWER_RIGHT 4
|
||
|
#define VTK_WIPE_UPPER_LEFT 5
|
||
|
#define VTK_WIPE_UPPER_RIGHT 6
|
||
|
|
||
|
class VTKIMAGINGHYBRID_EXPORT vtkImageRectilinearWipe : public vtkThreadedImageAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
static vtkImageRectilinearWipe* New();
|
||
|
vtkTypeMacro(vtkImageRectilinearWipe, vtkThreadedImageAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set/Get the location of the image transition. Note that position is
|
||
|
* specified in pixels.
|
||
|
*/
|
||
|
vtkSetVector2Macro(Position, int);
|
||
|
vtkGetVectorMacro(Position, int, 2);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set/Get the location of the wipe axes. The default is X,Y (ie vector
|
||
|
* values of 0 and 1).
|
||
|
*/
|
||
|
vtkSetVector2Macro(Axis, int);
|
||
|
vtkGetVectorMacro(Axis, int, 2);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Set the two inputs to this filter.
|
||
|
*/
|
||
|
virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
|
||
|
virtual void SetInput2Data(vtkDataObject* in) { this->SetInputData(1, in); }
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Specify the wipe mode. This mode determnis how input 0 and input
|
||
|
* 1 are combined to produce the output. Each mode uses one or both
|
||
|
* of the values stored in Position.
|
||
|
* SetWipeToQuad - alternate input 0 and input 1 horizontally and
|
||
|
* vertically. The Position specifies the location of the quad
|
||
|
* intersection.
|
||
|
* SetWipeToLowerLeft{LowerRight,UpperLeft.UpperRight} - 3 of one
|
||
|
* input and 1 of the other. Select the location of input 0 to the
|
||
|
* LowerLeft{LowerRight,UpperLeft,UpperRight}. Position
|
||
|
* selects the location of the corner.
|
||
|
* SetWipeToHorizontal - alternate input 0 and input 1 with a vertical
|
||
|
* split. Position[0] specifies the location of the vertical
|
||
|
* transition between input 0 and input 1.
|
||
|
* SetWipeToVertical - alternate input 0 and input 1 with a
|
||
|
* horizontal split. Position[1] specifies the location of the
|
||
|
* horizontal transition between input 0 and input 1.
|
||
|
*/
|
||
|
vtkSetClampMacro(Wipe, int, VTK_WIPE_QUAD, VTK_WIPE_UPPER_RIGHT);
|
||
|
vtkGetMacro(Wipe, int);
|
||
|
void SetWipeToQuad() { this->SetWipe(VTK_WIPE_QUAD); }
|
||
|
void SetWipeToHorizontal() { this->SetWipe(VTK_WIPE_HORIZONTAL); }
|
||
|
void SetWipeToVertical() { this->SetWipe(VTK_WIPE_VERTICAL); }
|
||
|
void SetWipeToLowerLeft() { this->SetWipe(VTK_WIPE_LOWER_LEFT); }
|
||
|
void SetWipeToLowerRight() { this->SetWipe(VTK_WIPE_LOWER_RIGHT); }
|
||
|
void SetWipeToUpperLeft() { this->SetWipe(VTK_WIPE_UPPER_LEFT); }
|
||
|
void SetWipeToUpperRight() { this->SetWipe(VTK_WIPE_UPPER_RIGHT); }
|
||
|
//@}
|
||
|
|
||
|
protected:
|
||
|
vtkImageRectilinearWipe();
|
||
|
~vtkImageRectilinearWipe() override {}
|
||
|
|
||
|
void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
|
||
|
vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
|
||
|
int extent[6], int threadId) override;
|
||
|
|
||
|
int Position[2];
|
||
|
int Wipe;
|
||
|
int Axis[2];
|
||
|
|
||
|
private:
|
||
|
vtkImageRectilinearWipe(const vtkImageRectilinearWipe&) = delete;
|
||
|
void operator=(const vtkImageRectilinearWipe&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|