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.

102 lines
3.4 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkImageFlip.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 vtkImageFlip
* @brief This flips an axis of an image. Right becomes left ...
*
* vtkImageFlip will reflect the data along the filtered axis. This filter is
* actually a thin wrapper around vtkImageReslice.
*/
#ifndef vtkImageFlip_h
#define vtkImageFlip_h
#include "vtkImageReslice.h"
#include "vtkImagingCoreModule.h" // For export macro
class VTKIMAGINGCORE_EXPORT vtkImageFlip : public vtkImageReslice
{
public:
static vtkImageFlip* New();
vtkTypeMacro(vtkImageFlip, vtkImageReslice);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Specify which axis will be flipped. This must be an integer
* between 0 (for x) and 2 (for z). Initial value is 0.
*/
vtkSetMacro(FilteredAxis, int);
vtkGetMacro(FilteredAxis, int);
//@}
//@{
/**
* By default the image will be flipped about its center, and the
* Origin, Spacing and Extent of the output will be identical to
* the input. However, if you have a coordinate system associated
* with the image and you want to use the flip to convert +ve values
* along one axis to -ve values (and vice versa) then you actually
* want to flip the image about coordinate (0,0,0) instead of about
* the center of the image. This method will adjust the Origin of
* the output such that the flip occurs about (0,0,0). Note that
* this method only changes the Origin (and hence the coordinate system)
* the output data: the actual pixel values are the same whether or not
* this method is used. Also note that the Origin in this method name
* refers to (0,0,0) in the coordinate system associated with the image,
* it does not refer to the Origin ivar that is associated with a
* vtkImageData.
*/
vtkSetMacro(FlipAboutOrigin, vtkTypeBool);
vtkGetMacro(FlipAboutOrigin, vtkTypeBool);
vtkBooleanMacro(FlipAboutOrigin, vtkTypeBool);
//@}
/**
* Keep the mis-named Axes variations around for compatibility with old
* scripts. Axis is singular, not plural...
*/
void SetFilteredAxes(int axis) { this->SetFilteredAxis(axis); }
int GetFilteredAxes() { return this->GetFilteredAxis(); }
//@{
/**
* PreserveImageExtentOff wasn't covered by test scripts and its
* implementation was broken. It is deprecated now and it has
* no effect (i.e. the ImageExtent is always preserved).
*/
vtkSetMacro(PreserveImageExtent, vtkTypeBool);
vtkGetMacro(PreserveImageExtent, vtkTypeBool);
vtkBooleanMacro(PreserveImageExtent, vtkTypeBool);
//@}
protected:
vtkImageFlip();
~vtkImageFlip() override {}
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int FilteredAxis;
vtkTypeBool FlipAboutOrigin;
vtkTypeBool PreserveImageExtent;
private:
vtkImageFlip(const vtkImageFlip&) = delete;
void operator=(const vtkImageFlip&) = delete;
};
#endif