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.
114 lines
3.4 KiB
C++
114 lines
3.4 KiB
C++
/*****************************************************************//**
|
|
* @file FITKCoordinateAlgorithm.h
|
|
* @brief Filter for create axes grid data with label string array.
|
|
* ( The axes will be shown as a single line. )
|
|
*
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
* @date 2024-05-27
|
|
*********************************************************************/
|
|
|
|
#ifndef FITKCOORDINATEALGORITHM_h
|
|
#define FITKCOORDINATEALGORITHM_h
|
|
|
|
#include "vtkPolyDataAlgorithm.h"
|
|
|
|
#include "FITKVTKAlgorithmAPI.h"
|
|
|
|
class vtkTransform;
|
|
|
|
class FITKVTKALGORITHMAPI FITKCoordinateAlgorithm : public vtkPolyDataAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeMacro(FITKCoordinateAlgorithm, vtkPolyDataAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Construct object with scaling on, scaling mode is by scalar value, scale factor = 1.0.
|
|
*/
|
|
static FITKCoordinateAlgorithm* New();
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the direction of three axes.
|
|
*/
|
|
vtkSetVector3Macro(DirectionX, double);
|
|
vtkGetVectorMacro(DirectionX, double, 3);
|
|
vtkSetVector3Macro(DirectionY, double);
|
|
vtkGetVectorMacro(DirectionY, double, 3);
|
|
vtkSetVector3Macro(DirectionZ, double);
|
|
vtkGetVectorMacro(DirectionZ, double, 3);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the name of three axes.
|
|
*/
|
|
vtkSetMacro(XLabel, const char*);
|
|
vtkGetMacro(XLabel, const char*);
|
|
vtkSetMacro(YLabel, const char*);
|
|
vtkGetMacro(YLabel, const char*);
|
|
vtkSetMacro(ZLabel, const char*);
|
|
vtkGetMacro(ZLabel, const char*);
|
|
void SetAxesLabels(const char* xLabel, const char* yLabel, const char* zLabel)
|
|
{
|
|
SetXLabel(xLabel);
|
|
SetYLabel(yLabel);
|
|
SetZLabel(zLabel);
|
|
}
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Get the name of the axes label text array name.
|
|
*/
|
|
vtkGetMacro(LabelArrayName, const char*);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/get the desired precision for the output types. See the documentation
|
|
* for the vtkAlgorithm::DesiredOutputPrecision enum for an explanation of
|
|
* the available precision settings.
|
|
*/
|
|
vtkSetMacro(OutputPointsPrecision, int);
|
|
vtkGetMacro(OutputPointsPrecision, int);
|
|
//@}
|
|
|
|
protected:
|
|
FITKCoordinateAlgorithm();
|
|
~FITKCoordinateAlgorithm() = default;
|
|
|
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
int FillInputPortInformation(int, vtkInformation*) override;
|
|
|
|
//@{
|
|
/**
|
|
* Method called in RequestData() to do the actual data processing. This will
|
|
* glyph the \c input, filling up the \c output based on the filter
|
|
* parameters.
|
|
*/
|
|
virtual bool Execute(vtkDataSet* input, vtkInformationVector* sourceVector, vtkPolyData* output);
|
|
virtual bool Execute(vtkDataSet* input, vtkInformationVector* sourceVector, vtkPolyData* output,
|
|
vtkDataArray* inSScalars, vtkDataArray* inVectors);
|
|
//@}
|
|
|
|
const char* LabelArrayName = "Labels";
|
|
|
|
int OutputPointsPrecision;
|
|
|
|
double DirectionX[3];
|
|
double DirectionY[3];
|
|
double DirectionZ[3];
|
|
|
|
const char* XLabel = "X";
|
|
const char* YLabel = "Y";
|
|
const char* ZLabel = "Z";
|
|
|
|
private:
|
|
FITKCoordinateAlgorithm(const FITKCoordinateAlgorithm&) = delete;
|
|
void operator=(const FITKCoordinateAlgorithm&) = delete;
|
|
};
|
|
|
|
#endif // FITKCOORDINATEALGORITHM_h
|