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.
119 lines
3.6 KiB
C++
119 lines
3.6 KiB
C++
/*****************************************************************//**
|
|
* @file FITKCoordinateAlgorithmEX.h
|
|
* @brief External filter for creating axes grid data with label string array.
|
|
* ( Each axes will be shown as an arrow by default. )
|
|
* This filter contains two output:
|
|
* 1. The first output is a dataset contains the full grid data
|
|
* with color array.( without text array )
|
|
* 2. The second output is the given direction line grid with
|
|
* the text array of axes name.
|
|
*
|
|
* P.S. This filter can only create ONE axes in this version,
|
|
* and this filter MUST use vtkDistanceToCamera output as the input.
|
|
*
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
* @date 2024-07-09
|
|
*********************************************************************/
|
|
|
|
#ifndef FITKCOORDINATEALGORITHMEX_H
|
|
#define FITKCOORDINATEALGORITHMEX_H
|
|
|
|
#include "vtkUnstructuredGridAlgorithm.h"
|
|
|
|
#include "FITKVTKAlgorithmAPI.h"
|
|
|
|
class vtkTransform;
|
|
class vtkArrowSource;
|
|
class vtkConeSource;
|
|
|
|
class FITKVTKALGORITHMAPI FITKCoordinateAlgorithmEX : public vtkUnstructuredGridAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeMacro(FITKCoordinateAlgorithmEX, vtkUnstructuredGridAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Construct object with scaling on, scaling mode is by scalar value, scale factor = 1.0.
|
|
*/
|
|
static FITKCoordinateAlgorithmEX* New();
|
|
|
|
//@{
|
|
/**
|
|
* Set/get whether use cone to render axes.
|
|
*/
|
|
vtkSetMacro(UseCone, bool);
|
|
vtkGetMacro(UseCone, bool);
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the direction array names.
|
|
*/
|
|
vtkSetMacro(DirectionArrayName, const char*);
|
|
vtkGetMacro(DirectionArrayName, const char*);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the name of axes.
|
|
*/
|
|
vtkSetMacro(Label, const char*);
|
|
vtkGetMacro(Label, const char*);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* 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:
|
|
FITKCoordinateAlgorithmEX();
|
|
~FITKCoordinateAlgorithmEX();
|
|
|
|
int ProcessRequest(vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector) override;
|
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
int FillInputPortInformation(int, vtkInformation*) override;
|
|
// int FillOutputPortInformation(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, vtkUnstructuredGrid* output);
|
|
virtual bool Execute(vtkDataSet* input, vtkInformationVector* sourceVector, vtkUnstructuredGrid* output,
|
|
vtkDataArray* inSScalars, vtkDataArray* inVectors);
|
|
//@}
|
|
|
|
bool UseCone;
|
|
|
|
const char* LabelArrayName = "Labels";
|
|
|
|
int OutputPointsPrecision;
|
|
|
|
const char* Label = "Axes";
|
|
|
|
const char* DirectionArrayName = "N";
|
|
|
|
vtkArrowSource* ArrowSource;
|
|
vtkConeSource* ConeSource;
|
|
|
|
private:
|
|
FITKCoordinateAlgorithmEX(const FITKCoordinateAlgorithmEX&) = delete;
|
|
void operator=(const FITKCoordinateAlgorithmEX&) = delete;
|
|
};
|
|
|
|
#endif // FITKCOORDINATEALGORITHMEX_H
|