Release Movit 1.3.2. (From a branch, since I do not want to break ABI compatibility...
[movit] / input.h
1 #ifndef _MOVIT_INPUT_H
2 #define _MOVIT_INPUT_H 1
3
4 #include <assert.h>
5
6 #include "effect.h"
7 #include "image_format.h"
8
9 namespace movit {
10
11 // An input is a degenerate case of an effect; it represents the picture data
12 // that comes from the user. As such, it has zero “inputs” itself.
13 //
14 // An input is, like any other effect, required to be able to output a GLSL
15 // fragment giving a RGBA value (although that GLSL fragment will have zero
16 // inputs itself), and set the required OpenGL state on set_gl_state(),
17 // including possibly uploading the texture if so required.
18 class Input : public Effect {
19 public:
20         virtual unsigned num_inputs() const { return 0; }
21
22         // Whether this input can deliver linear gamma directly if it's
23         // asked to. (If so, set the parameter “output_linear_gamma”
24         // to activate it.)
25         virtual bool can_output_linear_gamma() const = 0;
26
27         // Whether this input can supply mipmaps if asked to (by setting
28         // the "needs_mipmaps" integer parameter set to 1).
29         virtual bool can_supply_mipmaps() const { return true; }
30
31         virtual unsigned get_width() const = 0;
32         virtual unsigned get_height() const = 0;
33         virtual Colorspace get_color_space() const = 0;
34         virtual GammaCurve get_gamma_curve() const = 0;
35 };
36
37 }  // namespace movit
38
39 #endif // !defined(_MOVIT_INPUT_H)