VTK  9.7.0
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
14
15#ifndef vtkHDRReader_h
16#define vtkHDRReader_h
17
18#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_6_0
19#include "vtkIOImageModule.h" // For export macro
20#include "vtkImageReader.h"
21#include <string> // for std::string
22#include <vector> // for std::vector
23
24VTK_ABI_NAMESPACE_BEGIN
25class VTKIOIMAGE_EXPORT vtkHDRReader : public vtkImageReader
26{
27public:
28 static vtkHDRReader* New();
30
31 void PrintSelf(ostream& os, vtkIndent indent) override;
32
34 {
37 };
38
40
43 vtkGetMacro(Format, int);
45
47
51 vtkGetMacro(Gamma, double);
53
55
59 vtkGetMacro(Exposure, double);
61
63
67 vtkGetMacro(PixelAspect, double);
69
71
76 int CanReadFile(VTK_FILEPATH const char* fname) override;
77 int CanReadFile(vtkResourceStream* stream) override;
79
85 const char* GetFileExtensions() override { return ".hdr .pic"; }
86
90 const char* GetDescriptiveName() override { return "Radiance HDR"; }
91
92protected:
94 ~vtkHDRReader() override;
95
96 std::string ProgramType;
98 double Gamma;
99 double Exposure;
101
105 bool FlippedX = false;
106
110 bool SwappedAxis = false;
111
112 void ExecuteInformation() override;
114 bool HDRReaderUpdateSlice(float* outPtr, int* outExt);
115 void HDRReaderUpdate(vtkImageData* data, float* outPtr);
116
121 VTK_DEPRECATED_IN_9_6_0("Do not use, use Streams instead")
122 bool HasError(istream* is);
123
124 int GetWidth() const;
125 int GetHeight() const;
126
132
133 void ConvertAllDataFromRGBToXYZ(float* outPtr, int size);
134
135 void FillOutPtrRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
136 void FillOutPtrNoRLE(int* outExt, float*& outPtr, std::vector<unsigned char>& lineBuffer);
137
141 void RGBE2Float(unsigned char rgbe[4], float& r, float& g, float& b);
142
148 static void XYZ2RGB(const float convertMatrix[3][3], double gamma, float& r, float& g, float& b);
149
150private:
151 vtkHDRReader(const vtkHDRReader&) = delete;
152 void operator=(const vtkHDRReader&) = delete;
153
158 bool ReadAllFileNoRLE(vtkResourceStream* stream, float* outPtr, int decrPtr, int* outExt);
159
164 bool ReadLineRLE(vtkResourceStream* stream, unsigned char* lineBufferPtr);
165
166 // Internal ExecuteInformation() validation flag
167 bool Validated = false;
168};
169VTK_ABI_NAMESPACE_END
170#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
double Exposure
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:29
Store vtkAlgorithm input/output information.
Abstract class used for custom streams.
#define VTK_DEPRECATED_IN_9_6_0(reason)
#define VTK_FILEPATH