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.

123 lines
3.6 KiB
C++

/*****************************************************************//**
* @file FITKDataSetDealer.h
* @brief The external data set dealer for reading vtk files.
*
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*********************************************************************/
#ifndef FITKDATASETDELAER_h
#define FITKDATASETDELAER_h
#include "vtkUnstructuredGridAlgorithm.h"
#include "FITKVTKAlgorithmAPI.h"
class vtkDataSetAttributes;
class vtkCellData;
class FITKVTKALGORITHMAPI FITKDataSetDealer : public vtkUnstructuredGridAlgorithm
{
public:
static FITKDataSetDealer* New();
vtkTypeMacro(FITKDataSetDealer, vtkUnstructuredGridAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Get the output of this filter
*/
vtkDataSet* GetOutput();
vtkDataSet* GetOutput(int idx);
//@}
protected:
/**
* @brief Constructor.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
FITKDataSetDealer() = default;
/**
* @brief Destructor.
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
virtual ~FITKDataSetDealer() = default;
/**
* @brief Fill the input port's information.
* @param port: The input port
* @param info: Information
* @return Is valid
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
int FillInputPortInformation(int port, vtkInformation* info);
/**
* @brief Fill the output port's information.
* @param port: The input port
* @param info: Information
* @return Is valid
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
int FillOutputPortInformation(int port, vtkInformation* info);
/**
* @brief Preprocess function before the algorithm begin.
* @param request: The requested data
* @param inputVector: The input vector
* @param outputVector: The ouput data
* @return Is valid
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
int ProcessRequest(vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector);
/**
* @brief The algorithm excute.
* @param request: The requested data
* @param inputVector: The input vector
* @param outputVector: The ouput data
* @return Is valid
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
int RequestData(vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector);
private:
FITKDataSetDealer(const FITKDataSetDealer&) = delete;
void operator=(const FITKDataSetDealer&) = delete;
/**
* @brief Initialize array names.
* @param obj: The data set
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
void initArrayNames(vtkDataObject* obj);
/**
* @brief Give the array's component a name if the component has no name.
* @param dArray
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
void initArrayName(vtkDataArray* dArray);
/**
* @brief Add a cell id array to the cell data.
* @param cellData: The data set cell data
* @param nCell: The number of cells
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-30
*/
void addCellIdArray(vtkCellData* cellData, int nCell);
};
#endif // FITKDATASETDELAER_h