1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkBYUReader
* @brief read MOVIE.BYU polygon files
*
* vtkBYUReader is a source object that reads MOVIE.BYU polygon files.
* These files consist of a geometry file (.g), a scalar file (.s), a
* displacement or vector file (.d), and a 2D texture coordinate file
* (.t).
*/
#ifndef vtkBYUReader_h
#define vtkBYUReader_h
#include "vtkIOGeometryModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
VTK_ABI_NAMESPACE_BEGIN
class VTKIOGEOMETRY_EXPORT vtkBYUReader : public vtkPolyDataAlgorithm
{
public:
static vtkBYUReader* New();
vtkTypeMacro(vtkBYUReader, vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
///@{
/**
* Specify name of geometry FileName.
*/
vtkSetFilePathMacro(GeometryFileName);
vtkGetFilePathMacro(GeometryFileName);
///@}
/**
* Specify name of geometry FileName (alias).
*/
virtual void SetFileName(VTK_FILEPATH const char* f) { this->SetGeometryFileName(f); }
virtual VTK_FILEPATH VTK_FUTURE_CONST char* GetFileName() VTK_FUTURE_CONST
{
return this->GetGeometryFileName();
}
///@{
/**
* Specify name of displacement FileName.
*/
vtkSetFilePathMacro(DisplacementFileName);
vtkGetFilePathMacro(DisplacementFileName);
///@}
///@{
/**
* Specify name of scalar FileName.
*/
vtkSetFilePathMacro(ScalarFileName);
vtkGetFilePathMacro(ScalarFileName);
///@}
///@{
/**
* Specify name of texture coordinates FileName.
*/
vtkSetFilePathMacro(TextureFileName);
vtkGetFilePathMacro(TextureFileName);
///@}
///@{
/**
* Turn on/off the reading of the displacement file.
*/
vtkSetMacro(ReadDisplacement, vtkTypeBool);
vtkGetMacro(ReadDisplacement, vtkTypeBool);
vtkBooleanMacro(ReadDisplacement, vtkTypeBool);
///@}
///@{
/**
* Turn on/off the reading of the scalar file.
*/
vtkSetMacro(ReadScalar, vtkTypeBool);
vtkGetMacro(ReadScalar, vtkTypeBool);
vtkBooleanMacro(ReadScalar, vtkTypeBool);
///@}
///@{
/**
* Turn on/off the reading of the texture coordinate file.
* Specify name of geometry FileName.
*/
vtkSetMacro(ReadTexture, vtkTypeBool);
vtkGetMacro(ReadTexture, vtkTypeBool);
vtkBooleanMacro(ReadTexture, vtkTypeBool);
///@}
///@{
/**
* Set/Get the part number to be read.
*/
vtkSetClampMacro(PartNumber, int, 1, VTK_INT_MAX);
vtkGetMacro(PartNumber, int);
///@}
/**
* Returns 1 if this file can be read and 0 if the file cannot be read.
* Because BYU files do not have anything in the header specifying the file
* type, the result is not definitive. Invalid files may still return 1
* although a valid file will never return 0.
*/
static int CanReadFile(VTK_FILEPATH const char* filename);
protected:
vtkBYUReader();
~vtkBYUReader() override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
// This source does not know how to generate pieces yet.
int ComputeDivisionExtents(vtkDataObject* output, int idx, int numDivisions);
char* GeometryFileName;
char* DisplacementFileName;
char* ScalarFileName;
char* TextureFileName;
vtkTypeBool ReadDisplacement;
vtkTypeBool ReadScalar;
vtkTypeBool ReadTexture;
int PartNumber;
void ReadGeometryFile(FILE* fp, int& numPts, vtkInformation* outInfo);
void ReadDisplacementFile(int numPts, vtkInformation* outInfo);
void ReadScalarFile(int numPts, vtkInformation* outInfo);
void ReadTextureFile(int numPts, vtkInformation* outInfo);
private:
vtkBYUReader(const vtkBYUReader&) = delete;
void operator=(const vtkBYUReader&) = delete;
};
VTK_ABI_NAMESPACE_END
#endif
|