]> git.sesse.net Git - casparcg/blobdiff - core/producer/frame/image_transform.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / producer / frame / image_transform.h
index 194e7b4f7c642b39bfc81ad537090419a2d15a1a..385aeb09493f38a2d933cf3aaacc18f9b2a3d9a4 100644 (file)
@@ -32,20 +32,40 @@ struct pixel_format_desc;
 class image_transform \r
 {\r
 public:\r
-\r
-       enum blend_mode\r
+       \r
+       struct levels\r
        {\r
-               normal,\r
-               screen\r
+               levels() \r
+                       : min_input(0.0)\r
+                       , max_input(1.0)\r
+                       , gamma(1.0)\r
+                       , min_output(0.0)\r
+                       , max_output(1.0)\r
+               {               \r
+               }\r
+               double min_input;\r
+               double max_input;\r
+               double gamma;\r
+               double min_output;\r
+               double max_output;\r
        };\r
 \r
        image_transform();\r
 \r
        void set_opacity(double value);\r
        double get_opacity() const;\r
+       \r
+       void set_brightness(double value);\r
+       double get_brightness() const;\r
+\r
+       void set_contrast(double value);\r
+       double get_contrast() const;\r
 \r
-       void set_gain(double value);\r
-       double get_gain() const;\r
+       void set_saturation(double value);\r
+       double get_saturation() const;\r
+       \r
+       void set_levels(const levels& value);\r
+       levels get_levels() const;\r
        \r
        void set_fill_translation(double x, double y);\r
        std::array<double, 2> get_fill_translation() const;\r
@@ -58,45 +78,36 @@ public:
 \r
        void set_clip_scale(double x, double y);\r
        std::array<double, 2> get_clip_scale() const;\r
-\r
-       void set_mode(video_mode::type mode);\r
-       video_mode::type get_mode() const;\r
-\r
+       \r
        image_transform& operator*=(const image_transform &other);\r
        const image_transform operator*(const image_transform &other) const;\r
 \r
        void set_is_key(bool value);\r
        bool get_is_key() const;\r
 \r
-       void set_deinterlace(bool value);\r
-       bool get_deinterlace() const;\r
-\r
-       void set_blend_mode(blend_mode value);\r
-       blend_mode get_blend_mode() const;\r
-\r
+       void set_field_mode(field_mode::type field_mode);\r
+       field_mode::type get_field_mode() const;\r
+               \r
 private:\r
        double opacity_;\r
        double gain_;\r
+       double contrast_;\r
+       double brightness_;\r
+       double saturation_;\r
+       double desaturation_;\r
+       levels levels_;\r
        std::array<double, 2> fill_translation_; \r
        std::array<double, 2> fill_scale_; \r
        std::array<double, 2> clip_translation_; \r
        std::array<double, 2> clip_scale_; \r
-       video_mode::type mode_;\r
+       field_mode::type field_mode_;\r
        bool is_key_;\r
-       bool deinterlace_;\r
-       blend_mode blend_mode_;\r
 };\r
 \r
 image_transform tween(double time, const image_transform& source, const image_transform& dest, double duration, const tweener_t& tweener);\r
 \r
-inline bool operator==(const image_transform& lhs, const image_transform& rhs)\r
-{\r
-       return memcmp(&lhs, &rhs, sizeof(image_transform)) == 0;\r
-}\r
-\r
-inline bool operator!=(const image_transform& lhs, const image_transform& rhs)\r
-{\r
-       return !(lhs == rhs);\r
-}\r
+bool operator<(const image_transform& lhs, const image_transform& rhs);\r
+bool operator==(const image_transform& lhs, const image_transform& rhs);\r
+bool operator!=(const image_transform& lhs, const image_transform& rhs);\r
 \r
 }}
\ No newline at end of file