VTK  9.6.20260202
vtkHDRReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
123
124#ifndef vtkHDRReader_h
125#define vtkHDRReader_h
126
127#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_6_0
128#include "vtkIOImageModule.h" // For export macro
129#include "vtkImageReader.h"
130#include <string> // for std::string
131#include <vector> // for std::vector
132
133VTK_ABI_NAMESPACE_BEGIN
134class VTKIOIMAGE_EXPORT vtkHDRReader : public vtkImageReader
135{
136public:
137 static vtkHDRReader* New();
139
140 void PrintSelf(ostream& os, vtkIndent indent) override;
141
147
149
152 vtkGetMacro(Format, int);
154
156
160 vtkGetMacro(Gamma, double);
162
164
168 vtkGetMacro(Exposure, double);
170
172
176 vtkGetMacro(PixelAspect, double);
178
180
185 int CanReadFile(VTK_FILEPATH const char* fname) override;
186 int CanReadFile(vtkResourceStream* stream) override;
188
194 const char* GetFileExtensions() override { return ".hdr .pic"; }
195
199 const char* GetDescriptiveName() override { return "Radiance HDR"; }
200
201protected:
203 ~vtkHDRReader() override;
204
205 std::string ProgramType;
207 double Gamma;
208 double Exposure;
210
214 bool FlippedX = false;
215
219 bool SwappedAxis = false;
220
221 void ExecuteInformation() override;
223 bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
224 void HDRReaderUpdate(vtkImageData* data, float* outPtr);
225
230 VTK_DEPRECATED_IN_9_6_0("Do not use, use Streams instead")
231 bool HasError(istream* is);
232
233 int GetWidth() const;
234 int GetHeight() const;
235
241
242 void ConvertAllDataFromRGBToXYZ(float* outPtr, int size);
243
244 void FillOutPtrRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
245 void FillOutPtrNoRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
246
250 void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
251
257 static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float& r, float& g, float& b);
258
259private:
260 vtkHDRReader(const vtkHDRReader&) = delete;
261 void operator=(const vtkHDRReader&) = delete;
262
267 bool ReadAllFileNoRLE(vtkResourceStream* stream, float* outPtr, int decrPtr, int* outExt);
268
273 bool ReadLineRLE(vtkResourceStream* stream, unsigned char* lineBufferPtr);
274};
275VTK_ABI_NAMESPACE_END
276#endif
general representation of visualization data
const char * GetDescriptiveName() override
Return a descriptive name for the file format that might be useful in a GUI.
FormatType Format
~vtkHDRReader() override
void FillOutPtrNoRLE(int *outExt, float *&outPtr, std::vector< unsigned char > &lineBuffer)
bool FlippedX
If true, the X axis has been flipped.
int CanReadFile(vtkResourceStream *stream) override
Return 1 if, after a quick check of file header, it looks like the provided file or stream can be rea...
int CanReadFile(const char *fname) override
Return 1 if, after a quick check of file header, it looks like the provided file or stream can be rea...
void FillOutPtrRLE(int *outExt, float *&outPtr, std::vector< unsigned char > &lineBuffer)
void ConvertAllDataFromRGBToXYZ(float *outPtr, int size)
double PixelAspect
void ExecuteDataWithInformation(vtkDataObject *out, vtkInformation *outInfo) override
This is a convenience method that is implemented in many subclasses instead of RequestData.
static vtkHDRReader * New()
static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float &r, float &g, float &b)
Conversion from xyz to rgb float using the 3x3 convert matrix.
bool HDRReaderUpdateSlice(float *outPtr, int *outExt)
void RGBE2Float(unsigned char rgbe[4], float &r, float &g, float &b)
Standard conversion from rgbe to float pixels.
void HDRReaderUpdate(vtkImageData *data, float *outPtr)
bool SwappedAxis
If true, the Y axis is the X, and the height and width has been swapped.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetWidth() const
void ExecuteInformation() override
bool ReadHeaderData()
Read the header data and fill attributes of HDRReader, as well as DataExtent.
int GetHeight() const
const char * GetFileExtensions() override
Get the file extensions for this format.
std::string ProgramType
bool HasError(istream *is)
If the stream has an error, close the file and return true.
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Store vtkAlgorithm input/output information.
Abstract class used for custom streams.
#define VTK_DEPRECATED_IN_9_6_0(reason)
#define VTK_FILEPATH