Lumiverse  2.5
A framework for creating lighting control applications
EXRLayer.h
1 #ifndef LumiverseEXR_LAYER_H
2 #define LumiverseEXR_LAYER_H
3 
4 #ifdef USE_ARNOLD_CACHING
5 
6 #include <string>
7 #include <vector>
8 #include <unordered_map>
9 #include "Pixel.h"
10 
11 namespace Lumiverse {
12 
18 class EXRLayer {
19 public:
24  EXRLayer(const char *file, const char *name = NULL);
25 
30  EXRLayer(size_t w, size_t h, const char *name = NULL);
31 
35  ~EXRLayer();
36 
40  std::string get_name();
41 
45  size_t get_width();
46 
50  size_t get_height();
51 
55  size_t get_size();
56 
60  bool is_active();
61 
65  void enable();
66 
70  void disable();
71 
75  Pixel3 get_modulator();
76 
80  void set_modulator(Pixel3 modulator);
81 
85  Pixel4 *get_pixels();
86 
90  void clear_buffers();
91 
95  Pixel4 *get_downsampled_pixels(int width, int height);
96 
100  void set_pixels(float *buffer);
101 
106  void set_pixels(Pixel4* buffer);
107 
108 private:
112  std::string name;
113 
118  size_t w;
119 
124  size_t h;
125 
130  bool active;
131 
136  Pixel3 modulator;
137 
143  Pixel4 *pixels;
144 
149  std::unordered_map<int, Pixel4*> pixel_size_bases;
150 
155  int inline get_size_key(int width, int height);
156 };
157 
158 }; // namespace Lumiverse
159 
160 #endif // USE_ARNOLD_CACHING
161 
162 #endif // LumiverseEXR_LAYER_H
Contains all core Lumiverse functions and variables.
Definition: Device.cpp:2