VTK  9.5.20251214
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
182 int CanReadFile(VTK_FILEPATH const char* fname) override;
183
189 const char* GetFileExtensions() override { return ".hdr .pic"; }
190
194 const char* GetDescriptiveName() override { return "Radiance HDR"; }
195
196protected:
198 ~vtkHDRReader() override;
199
200 std::string ProgramType;
202 double Gamma;
203 double Exposure;
205
209 bool FlippedX = false;
210
214 bool SwappedAxis = false;
215
216 void ExecuteInformation() override;
218 bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
219 void HDRReaderUpdate(vtkImageData* data, float* outPtr);
220
225 VTK_DEPRECATED_IN_9_6_0("Do not use, use Streams instead")
226 bool HasError(istream* is);
227
228 int GetWidth() const;
229 int GetHeight() const;
230
236
237 void ConvertAllDataFromRGBToXYZ(float* outPtr, int size);
238
239 void FillOutPtrRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
240 void FillOutPtrNoRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
241
245 void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
246
252 static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float& r, float& g, float& b);
253
254private:
255 vtkHDRReader(const vtkHDRReader&) = delete;
256 void operator=(const vtkHDRReader&) = delete;
257
262 bool ReadAllFileNoRLE(vtkResourceStream* stream, float* outPtr, int decrPtr, int* outExt);
263
268 bool ReadLineRLE(vtkResourceStream* stream, unsigned char* lineBufferPtr);
269};
270VTK_ABI_NAMESPACE_END
271#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(const char *fname) override
Is the given file a HDR file?
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