]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 21 Aug 2011 14:05:43 +0000 (14:05 +0000)
committerRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 21 Aug 2011 14:05:43 +0000 (14:05 +0000)
core/producer/frame/frame_transform.cpp
core/producer/frame/frame_transform.h

index e4be8d527f471408422553f62cc1daace786c8dc..60d93a1aaa8b4424efc63701ff65b646c93f74d0 100644 (file)
@@ -32,8 +32,8 @@ frame_transform::frame_transform()
        , brightness(1.0)\r
        , contrast(1.0)\r
        , saturation(1.0)\r
-       , is_key(false)\r
        , field_mode(field_mode::progressive)\r
+       , is_key(false)\r
 {\r
        std::fill(fill_translation.begin(), fill_translation.end(), 0.0);\r
        std::fill(fill_scale.begin(), fill_scale.end(), 1.0);\r
@@ -48,13 +48,6 @@ frame_transform& frame_transform::operator*=(const frame_transform &other)
        brightness                              *= other.brightness;\r
        contrast                                *= other.contrast;\r
        saturation                              *= other.saturation;\r
-       levels.min_input                = std::max(levels.min_input,  other.levels.min_input);\r
-       levels.max_input                = std::min(levels.max_input,  other.levels.max_input);  \r
-       levels.min_output               = std::max(levels.min_output, other.levels.min_output);\r
-       levels.max_output               = std::min(levels.max_output, other.levels.max_output);\r
-       levels.gamma                    *= other.levels.gamma;\r
-       field_mode                              = static_cast<field_mode::type>(field_mode & other.field_mode);\r
-       is_key                                  |= other.is_key;\r
        fill_translation[0]             += other.fill_translation[0]*fill_scale[0];\r
        fill_translation[1]             += other.fill_translation[1]*fill_scale[1];\r
        fill_scale[0]                   *= other.fill_scale[0];\r
@@ -63,6 +56,13 @@ frame_transform& frame_transform::operator*=(const frame_transform &other)
        clip_translation[1]             += other.clip_translation[1]*clip_scale[1];\r
        clip_scale[0]                   *= other.clip_scale[0];\r
        clip_scale[1]                   *= other.clip_scale[1];\r
+       levels.min_input                 = std::max(levels.min_input,  other.levels.min_input);\r
+       levels.max_input                 = std::min(levels.max_input,  other.levels.max_input); \r
+       levels.min_output                = std::max(levels.min_output, other.levels.min_output);\r
+       levels.max_output                = std::min(levels.max_output, other.levels.max_output);\r
+       levels.gamma                    *= other.levels.gamma;\r
+       field_mode                               = static_cast<field_mode::type>(field_mode & other.field_mode);\r
+       is_key                                  |= other.is_key;\r
        return *this;\r
 }\r
 \r
@@ -79,34 +79,26 @@ frame_transform tween(double time, const frame_transform& source, const frame_tr
        };\r
        \r
        frame_transform result; \r
-       result.is_key                   = source.is_key | dest.is_key;\r
-       result.field_mode               = static_cast<field_mode::type>(source.field_mode & dest.field_mode);\r
-       result.volume                   = do_tween(time, source.volume, dest.volume, duration, tweener);\r
-       result.brightness               = do_tween(time, source.brightness, dest.brightness, duration, tweener);\r
-       result.contrast                 = do_tween(time, source.contrast, dest.contrast, duration, tweener);\r
-       result.saturation               = do_tween(time, source.saturation, dest.saturation, duration, tweener);\r
-       result.opacity                  = do_tween(time, source.opacity, dest.opacity, duration, tweener);\r
-       \r
-       result.fill_translation[0] = do_tween(time, source.fill_translation[0], dest.fill_translation[0], duration, tweener), \r
-       result.fill_translation[1] = do_tween(time, source.fill_translation[1], dest.fill_translation[1], duration, tweener);\r
-               \r
-       result.fill_scale[0] = do_tween(time, source.fill_scale[0], dest.fill_scale[0], duration, tweener), \r
-       result.fill_scale[1] = do_tween(time, source.fill_scale[1], dest.fill_scale[1], duration, tweener);\r
-       \r
-       result.clip_translation[0] = do_tween(time, source.clip_translation[0], dest.clip_translation[0], duration, tweener), \r
-       result.clip_translation[1] = do_tween(time, source.clip_translation[1], dest.clip_translation[1], duration, tweener);\r
-               \r
-       result.clip_scale[0] = do_tween(time, source.clip_scale[0], dest.clip_scale[0], duration, tweener), \r
-       result.clip_scale[1] = do_tween(time, source.clip_scale[1], dest.clip_scale[1], duration, tweener);\r
-\r
-       auto s_levels = source.levels;\r
-       auto d_levels = dest.levels;\r
-\r
-       result.levels.max_input = do_tween(time, s_levels.max_input, d_levels.max_input, duration, tweener);\r
-       result.levels.min_input = do_tween(time, s_levels.min_input, d_levels.min_input, duration, tweener);    \r
-       result.levels.max_output = do_tween(time, s_levels.max_output, d_levels.max_output, duration, tweener);\r
-       result.levels.min_output = do_tween(time, s_levels.min_output, d_levels.min_output, duration, tweener);\r
-       result.levels.gamma = do_tween(time, s_levels.gamma, d_levels.gamma, duration, tweener);\r
+       result.volume                           = do_tween(time, source.volume,                                 dest.volume,                            duration, tweener);\r
+       result.brightness                       = do_tween(time, source.brightness,                             dest.brightness,                        duration, tweener);\r
+       result.contrast                         = do_tween(time, source.contrast,                               dest.contrast,                          duration, tweener);\r
+       result.saturation                       = do_tween(time, source.saturation,                             dest.saturation,                        duration, tweener);\r
+       result.opacity                          = do_tween(time, source.opacity,                                dest.opacity,                           duration, tweener);     \r
+       result.fill_translation[0]      = do_tween(time, source.fill_translation[0],    dest.fill_translation[0],       duration, tweener), \r
+       result.fill_translation[1]      = do_tween(time, source.fill_translation[1],    dest.fill_translation[1],       duration, tweener);             \r
+       result.fill_scale[0]            = do_tween(time, source.fill_scale[0],                  dest.fill_scale[0],                     duration, tweener), \r
+       result.fill_scale[1]            = do_tween(time, source.fill_scale[1],                  dest.fill_scale[1],                     duration, tweener);     \r
+       result.clip_translation[0]      = do_tween(time, source.clip_translation[0],    dest.clip_translation[0],       duration, tweener), \r
+       result.clip_translation[1]      = do_tween(time, source.clip_translation[1],    dest.clip_translation[1],       duration, tweener);             \r
+       result.clip_scale[0]            = do_tween(time, source.clip_scale[0],                  dest.clip_scale[0],                     duration, tweener), \r
+       result.clip_scale[1]            = do_tween(time, source.clip_scale[1],                  dest.clip_scale[1],                     duration, tweener);\r
+       result.levels.max_input         = do_tween(time, source.levels.max_input,               dest.levels.max_input,          duration, tweener);\r
+       result.levels.min_input         = do_tween(time, source.levels.min_input,               dest.levels.min_input,          duration, tweener);     \r
+       result.levels.max_output        = do_tween(time, source.levels.max_output,              dest.levels.max_output,         duration, tweener);\r
+       result.levels.min_output        = do_tween(time, source.levels.min_output,              dest.levels.min_output,         duration, tweener);\r
+       result.levels.gamma                     = do_tween(time, source.levels.gamma,                   dest.levels.gamma,                      duration, tweener);\r
+       result.field_mode                       = static_cast<field_mode::type>(source.field_mode & dest.field_mode);\r
+       result.is_key                           = source.is_key | dest.is_key;\r
        \r
        return result;\r
 }\r
index 512e9a20e462c05efc86cc9fc18b5a8fc7ab3ed8..0fde0ec4459cb302f8df1de1ada0260a75f658f1 100644 (file)
@@ -54,15 +54,14 @@ public:
 \r
        double                                  volume;\r
        double                                  opacity;\r
-       double                                  gain;\r
        double                                  contrast;\r
        double                                  brightness;\r
        double                                  saturation;\r
-       levels                                  levels;\r
        boost::array<double, 2> fill_translation; \r
        boost::array<double, 2> fill_scale; \r
        boost::array<double, 2> clip_translation;  \r
        boost::array<double, 2> clip_scale;  \r
+       levels                                  levels;\r
 \r
        field_mode::type                field_mode;\r
        bool                                    is_key;\r