]> git.sesse.net Git - movit/blobdiff - flat_input.h
Make the blur use the resize functionality, which also unbreaks the in-between sampli...
[movit] / flat_input.h
index a906a5d36a812938aeba6647c30c657385f82eda..9266659596ad8026f7993380c3cf1053a655714f 100644 (file)
@@ -7,20 +7,23 @@
 // comes from a single 2D array with chunky pixels.
 class FlatInput : public Input {
 public:
-       FlatInput(ImageFormat format, unsigned width, unsigned height);
+       FlatInput(ImageFormat format, MovitPixelFormat pixel_format, unsigned width, unsigned height);
 
        // Create the texture itself. We cannot do this in the constructor,
        // because we don't necessarily know all the settings (sRGB texture,
        // mipmap generation) at that point.
        void finalize();
 
+       // TODO: Check that we actually have the required extension.
+       virtual bool can_output_linear_gamma() const { return true; }
+
        std::string output_fragment_shader();
 
        // Uploads the texture if it has changed since last time.
        void set_gl_state(GLuint glsl_program_num, const std::string& prefix, unsigned *sampler_num);
 
-       ColorSpace get_color_space() { return image_format.color_space; }
-       GammaCurve get_gamma_curve() { return image_format.gamma_curve; }
+       ColorSpace get_color_space() const { return image_format.color_space; }
+       GammaCurve get_gamma_curve() const { return image_format.gamma_curve; }
 
        // Tells the input where to fetch the actual pixel data. Note that if you change
        // this data, you must either call set_pixel_data() again (using the same pointer
@@ -53,10 +56,11 @@ public:
 
 private:
        ImageFormat image_format;
+       MovitPixelFormat pixel_format;
        GLenum format;
        GLuint pbo, texture_num;
        bool needs_update, finalized;
-       int use_srgb_texture_format, needs_mipmaps;
+       int output_linear_gamma, needs_mipmaps;
        unsigned width, height, pitch, bytes_per_pixel;
        const unsigned char *pixel_data;
 };