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
\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