diff options
Diffstat (limited to 'gst/smpte')
-rw-r--r-- | gst/smpte/barboxwipes.c | 545 | ||||
-rw-r--r-- | gst/smpte/gstmask.c | 9 | ||||
-rw-r--r-- | gst/smpte/paint.c | 67 | ||||
-rw-r--r-- | gst/smpte/paint.h | 5 |
4 files changed, 351 insertions, 275 deletions
diff --git a/gst/smpte/barboxwipes.c b/gst/smpte/barboxwipes.c index 5a710189..e1cab9d0 100644 --- a/gst/smpte/barboxwipes.c +++ b/gst/smpte/barboxwipes.c @@ -24,7 +24,8 @@ enum { BOX_VERTICAL = 1, BOX_HORIZONTAL = 2, - TRIGANLE_LINEAR = 3, + BOX_CLOCK = 3, + TRIGANLE_LINEAR = 4, }; static gint boxes_1b[][7] = @@ -45,6 +46,184 @@ static gint boxes_2b[][7*2] = BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1 }, }; +static gint box_clock_1b[][1*10] = +{ +#define WIPE_B1_241 0 + { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1 }, +#define WIPE_B1_242 1 + { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1 }, +#define WIPE_B1_243 2 + { BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 }, +#define WIPE_B1_244 3 + { BOX_CLOCK, 1, 0, 0, 0, 0, 0, 1, 1, 1 }, +}; + +#define WIPE_B2_221 0 +static gint box_clock_2b[][2*10] = +{ +#define WIPE_B2_221 0 + { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1, + BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2 }, +#define WIPE_B2_222 1 + { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1, + BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 0, 2 }, +#define WIPE_B2_223 2 + { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1, + BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2 }, +#define WIPE_B2_224 3 + { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1, + BOX_CLOCK, 0, 1, 0, 2, 1, 1, 0, 2, 2 }, +#define WIPE_B2_225 4 + { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1, + BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1 }, +#define WIPE_B2_226 5 + { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1, + BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1 }, +#define WIPE_B2_231 6 + { BOX_CLOCK, 1, 0, 0, 1, 2, 0, 2, 0, 1, + BOX_CLOCK, 1, 0, 0, 1, 2, 0, 0, 0, 1 }, +#define WIPE_B2_232 7 + { BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 0, 1, + BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 2, 1 }, +#define WIPE_B2_233 8 + { BOX_CLOCK, 1, 2, 0, 1, 0, 0, 2, 2, 1, + BOX_CLOCK, 1, 2, 0, 1, 0, 0, 0, 2, 1 }, +#define WIPE_B2_234 9 + { BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 0, 1, + BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 2, 1 }, +#define WIPE_B2_251 10 + { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 2, 1, + BOX_CLOCK, 2, 0, 0, 1, 0, 0, 2, 2, 1 }, +#define WIPE_B2_252 11 + { BOX_CLOCK, 0, 0, 0, 0, 1, 0, 2, 0, 1, + BOX_CLOCK, 0, 2, 0, 0, 1, 0, 2, 2, 1 }, +#define WIPE_B2_253 12 + { BOX_CLOCK, 0, 2, 0, 1, 2, 0, 0, 0, 1, + BOX_CLOCK, 2, 2, 0, 1, 2, 0, 2, 0, 1 }, +#define WIPE_B2_254 13 + { BOX_CLOCK, 2, 0, 0, 2, 1, 0, 0, 0, 1, + BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1 }, +}; + +static gint box_clock_4b[][4*10] = +{ +#define WIPE_B4_201 0 + { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2, + BOX_CLOCK, 1, 1, 0, 1, 2, 2, 0, 1, 3, + BOX_CLOCK, 1, 1, 0, 0, 1, 3, 1, 0, 4 }, +#define WIPE_B4_202 1 + { BOX_CLOCK, 1, 1, 0, 1, 0, 3, 2, 1, 4, + BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2, + BOX_CLOCK, 1, 1, 0, 0, 1, 2, 1, 0, 3 }, +#define WIPE_B4_203 2 + { BOX_CLOCK, 1, 1, 0, 1, 0, 2, 2, 1, 3, + BOX_CLOCK, 1, 1, 0, 2, 1, 3, 1, 2, 4, + BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 }, +#define WIPE_B4_204 3 + { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2, + BOX_CLOCK, 1, 1, 0, 2, 1, 2, 1, 2, 3, + BOX_CLOCK, 1, 1, 0, 1, 2, 3, 0, 1, 4, + BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 }, +#define WIPE_B4_205 4 + { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2, + BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 }, +#define WIPE_B4_206 5 + { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2, + BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2, + BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 }, +#define WIPE_B4_207 6 + { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 }, +#define WIPE_B4_211 7 + { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2, + BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 2, 2 }, +#define WIPE_B4_212 8 + { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1, + BOX_CLOCK, 1, 1, 0, 1, 0, 1, 0, 1, 2, + BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2 }, +#define WIPE_B4_213 9 + { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 0, 2, 1, 1, + BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1 }, +#define WIPE_B4_214 10 + { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1, + BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1, + BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 2, 1 }, +#define WIPE_B4_227 11 + { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 1, 1, + BOX_CLOCK, 1, 0, 0, 1, 1, 1, 0, 0, 2, + BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 1, 1, + BOX_CLOCK, 1, 2, 0, 1, 1, 1, 0, 2, 2 }, +#define WIPE_B4_228 12 + { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 1, 1, 1, + BOX_CLOCK, 0, 1, 0, 1, 1, 1, 0, 2, 2, + BOX_CLOCK, 2, 1, 0, 2, 0, 0, 1, 1, 1, + BOX_CLOCK, 2, 1, 0, 1, 1, 1, 2, 2, 2 }, +#define WIPE_B4_235 13 + { BOX_CLOCK, 1, 0, 0, 1, 1, 0, 0, 0, 1, + BOX_CLOCK, 1, 0, 0, 1, 1, 0, 2, 0, 1, + BOX_CLOCK, 1, 2, 0, 1, 1, 0, 2, 2, 1, + BOX_CLOCK, 1, 2, 0, 1, 1, 0, 0, 2, 1 }, +#define WIPE_B4_236 14 + { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1, + BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 2, 1, + BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 0, 1, + BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1 }, +}; + +static gint box_clock_8b[][8*10] = +{ +#define WIPE_B8_261 0 + { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1, + BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 0, 2, + BOX_CLOCK, 2, 1, 0, 2, 0, 2, 0, 1, 3, + BOX_CLOCK, 2, 1, 0, 0, 1, 3, 2, 2, 4, + BOX_CLOCK, 2, 3, 0, 2, 2, 0, 4, 3, 1, + BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 4, 2, + BOX_CLOCK, 2, 3, 0, 2, 4, 2, 0, 3, 3, + BOX_CLOCK, 2, 3, 0, 0, 3, 3, 2, 2, 4 }, +#define WIPE_B8_262 1 + { BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 0, 1, + BOX_CLOCK, 1, 2, 0, 1, 0, 1, 0, 2, 2, + BOX_CLOCK, 1, 2, 0, 0, 2, 2, 1, 4, 3, + BOX_CLOCK, 1, 2, 0, 1, 4, 3, 2, 2, 4, + BOX_CLOCK, 3, 2, 0, 2, 2, 0, 3, 0, 1, + BOX_CLOCK, 3, 2, 0, 3, 0, 1, 4, 2, 2, + BOX_CLOCK, 3, 2, 0, 4, 2, 2, 3, 4, 3, + BOX_CLOCK, 3, 2, 0, 3, 4, 3, 2, 2, 4 }, +#define WIPE_B8_263 2 + { BOX_CLOCK, 2, 1, 0, 2, 0, 0, 4, 1, 1, + BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 2, 2, + BOX_CLOCK, 2, 1, 0, 2, 0, 0, 0, 1, 1, + BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 2, 2, + BOX_CLOCK, 2, 3, 0, 2, 4, 0, 4, 3, 1, + BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 2, 2, + BOX_CLOCK, 2, 3, 0, 2, 4, 0, 0, 3, 1, + BOX_CLOCK, 2, 3, 0, 0, 3, 1, 2, 2, 2 }, +#define WIPE_B8_264 3 + { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1, + BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2, + BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 4, 1, + BOX_CLOCK, 1, 2, 0, 1, 4, 1, 2, 2, 2, + BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 0, 1, + BOX_CLOCK, 3, 2, 0, 3, 0, 1, 2, 2, 2, + BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 4, 1, + BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2 }, +}; + static gint triangles_2t[][2*9] = { /* 3 -> 6 */ @@ -72,19 +251,7 @@ static gint triangles_2t[][2*9] = #define WIPE_T2_46 WIPE_T2_45+1 { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 }, -#define WIPE_T2_241 WIPE_T2_46+1 - { 0, 0, 0, 1, 0, 0, 1, 1, 1, - 0, 0, 0, 1, 1, 1, 0, 1, 2 }, -#define WIPE_T2_242 WIPE_T2_241+1 - { 0, 1, 0, 1, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 0, 2 }, -#define WIPE_T2_243 WIPE_T2_242+1 - { 1, 1, 0, 0, 1, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 1, 0, 2 }, -#define WIPE_T2_244 WIPE_T2_243+1 - { 1, 0, 0, 0, 0, 0, 0, 1, 1, - 1, 0, 0, 0, 1, 1, 1, 1, 2 }, -#define WIPE_T2_245 WIPE_T2_244+1 +#define WIPE_T2_245 WIPE_T2_46+1 { 0, 0, 0, 2, 0, 0, 2, 2, 1, 2, 2, 0, 0, 2, 0, 0, 0, 1 }, #define WIPE_T2_246 WIPE_T2_245+1 @@ -111,22 +278,6 @@ static gint triangles_3t[][3*9] = { 0, 0, 1, 2, 0, 1, 0, 1, 0, 2, 0, 1, 0, 1, 0, 2, 2, 1, 0, 1, 0, 0, 2, 1, 2, 2, 1 }, -#define WIPE_T3_221 4 - { 1, 0, 0, 2, 0, 0, 2, 2, 1, - 1, 0, 0, 2, 2, 1, 0, 2, 3, - 1, 0, 0, 0, 2, 3, 0, 0, 4 }, -#define WIPE_T3_222 5 - { 2, 1, 0, 2, 2, 0, 0, 2, 1, - 2, 1, 0, 0, 2, 1, 0, 0, 3, - 2, 1, 0, 0, 0, 3, 2, 0, 4 }, -#define WIPE_T3_223 6 - { 1, 2, 0, 0, 2, 0, 0, 0, 1, - 1, 2, 0, 0, 0, 1, 2, 0, 3, - 1, 2, 0, 2, 0, 3, 2, 2, 4 }, -#define WIPE_T3_224 7 - { 0, 1, 0, 0, 0, 0, 2, 0, 1, - 0, 1, 0, 2, 0, 1, 2, 2, 3, - 0, 1, 0, 2, 2, 3, 0, 2, 4 }, }; static gint triangles_4t[][4*9] = @@ -176,111 +327,8 @@ static gint triangles_4t[][4*9] = 0, 0, 1, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 2, 2, 1, 2, 0, 1, 1, 1, 0, 2, 2, 1 }, -#define WIPE_T4_231 9 - { 1, 0, 0, 1, 2, 0, 2, 2, 1, - 1, 0, 0, 2, 2, 1, 2, 0, 2, - 1, 0, 0, 1, 2, 0, 0, 2, 1, - 1, 0, 0, 0, 2, 1, 0, 0, 2 }, -#define WIPE_T4_232 10 - { 2, 1, 0, 0, 1, 0, 0, 0, 1, - 2, 1, 0, 0, 0, 1, 2, 0, 2, - 2, 1, 0, 0, 1, 0, 0, 2, 1, - 2, 1, 0, 0, 2, 1, 2, 2, 2 }, -#define WIPE_T4_233 11 - { 1, 2, 0, 1, 0, 0, 2, 0, 1, - 1, 2, 0, 2, 0, 1, 2, 2, 2, - 1, 2, 0, 1, 0, 0, 0, 0, 1, - 1, 2, 0, 0, 0, 1, 0, 2, 2 }, -#define WIPE_T4_234 12 - { 0, 1, 0, 2, 1, 0, 2, 0, 1, - 0, 1, 0, 2, 0, 1, 0, 0, 2, - 0, 1, 0, 2, 1, 0, 2, 2, 1, - 0, 1, 0, 2, 2, 1, 0, 2, 2 }, -#define WIPE_T4_225 13 - { 1, 0, 0, 2, 0, 0, 2, 2, 1, - 1, 0, 0, 2, 2, 1, 1, 2, 2, - 1, 2, 0, 0, 2, 0, 0, 0, 1, - 1, 2, 0, 0, 0, 1, 1, 0, 2 }, -#define WIPE_T4_226 14 - { 0, 1, 0, 0, 0, 0, 2, 0, 1, - 0, 1, 0, 2, 0, 1, 2, 1, 2, - 2, 1, 0, 2, 2, 0, 0, 2, 1, - 2, 1, 0, 0, 2, 1, 0, 1, 2 }, -}; - -static gint triangles_5t[][5*9] = -{ -#define WIPE_T5_201 0 - { 1, 1, 0, 1, 0, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 2, 2, 3, - 1, 1, 0, 2, 2, 3, 0, 2, 5, - 1, 1, 0, 0, 2, 5, 0, 0, 7, - 1, 1, 0, 0, 0, 7, 1, 0, 8 }, -#define WIPE_T5_202 1 - { 1, 1, 0, 2, 1, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 0, 2, 3, - 1, 1, 0, 0, 2, 3, 0, 0, 5, - 1, 1, 0, 0, 0, 5, 2, 0, 7, - 1, 1, 0, 2, 0, 7, 2, 1, 8 }, -#define WIPE_T5_203 2 - { 1, 1, 0, 1, 2, 0, 0, 2, 1, - 1, 1, 0, 0, 2, 1, 0, 0, 3, - 1, 1, 0, 0, 0, 3, 2, 0, 5, - 1, 1, 0, 2, 0, 5, 2, 2, 7, - 1, 1, 0, 2, 2, 7, 1, 2, 8 }, -#define WIPE_T5_204 3 - { 1, 1, 0, 0, 1, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 2, 0, 3, - 1, 1, 0, 2, 0, 3, 2, 2, 5, - 1, 1, 0, 2, 2, 5, 0, 2, 7, - 1, 1, 0, 0, 2, 7, 0, 1, 8 }, }; -static gint triangles_6t[][6*9] = -{ -#define WIPE_T6_205 0 - { 1, 1, 0, 1, 0, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 2, 2, 3, - 1, 1, 0, 2, 2, 3, 1, 2, 4, - 1, 1, 0, 1, 2, 0, 0, 2, 1, - 1, 1, 0, 0, 2, 1, 0, 0, 3, - 1, 1, 0, 0, 0, 3, 1, 0, 4 }, -#define WIPE_T6_206 1 - { 1, 1, 0, 2, 1, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 0, 2, 3, - 1, 1, 0, 0, 2, 3, 0, 1, 4, - 1, 1, 0, 0, 1, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 2, 0, 3, - 1, 1, 0, 2, 0, 3, 2, 1, 4 }, -#define WIPE_T6_211 2 - { 1, 1, 0, 1, 0, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 2, 2, 3, - 1, 1, 0, 2, 2, 3, 1, 2, 4, - 1, 1, 0, 1, 0, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 0, 2, 3, - 1, 1, 0, 0, 2, 3, 1, 2, 4 }, -#define WIPE_T6_212 3 - { 1, 1, 0, 2, 1, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 0, 2, 3, - 1, 1, 0, 0, 2, 3, 0, 1, 4, - 1, 1, 0, 2, 1, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 0, 0, 3, - 1, 1, 0, 0, 0, 3, 0, 1, 4 }, -#define WIPE_T6_227 4 - { 1, 0, 0, 2, 0, 0, 2, 1, 1, - 1, 0, 0, 2, 1, 1, 0, 1, 3, - 1, 0, 0, 0, 1, 3, 0, 0, 4, - 1, 2, 0, 2, 2, 0, 2, 1, 1, - 1, 2, 0, 2, 1, 1, 0, 1, 3, - 1, 2, 0, 0, 1, 3, 0, 2, 4 }, -#define WIPE_T6_228 5 - { 0, 1, 0, 0, 0, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 1, 2, 3, - 0, 1, 0, 1, 2, 3, 0, 2, 4, - 2, 1, 0, 2, 0, 0, 1, 0, 1, - 2, 1, 0, 1, 0, 1, 1, 2, 3, - 2, 1, 0, 1, 2, 3, 2, 2, 4 }, -}; static gint triangles_8t[][8*9] = { /* 7 */ @@ -329,51 +377,6 @@ static gint triangles_8t[][8*9] = 0, 1, 0, 0, 2, 1, 1, 2, 0, 1, 1, 1, 2, 1, 0, 1, 2, 0, 2, 1, 0, 1, 2, 0, 2, 2, 1 }, -#define WIPE_T8_207 5 - { 1, 1, 0, 1, 0, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 2, 1, 2, - 1, 1, 0, 2, 1, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 1, 2, 2, - 1, 1, 0, 1, 2, 0, 0, 2, 1, - 1, 1, 0, 0, 2, 1, 0, 1, 2, - 1, 1, 0, 0, 1, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 1, 0, 2 }, -#define WIPE_T8_213 6 - { 1, 1, 0, 1, 0, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 2, 1, 2, - 1, 1, 0, 1, 2, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 2, 1, 2, - 1, 1, 0, 1, 2, 0, 0, 2, 1, - 1, 1, 0, 0, 2, 1, 0, 1, 2, - 1, 1, 0, 1, 0, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 0, 1, 2 }, -#define WIPE_T8_214 7 - { 1, 1, 0, 2, 1, 0, 2, 0, 1, - 1, 1, 0, 2, 0, 1, 1, 0, 2, - 1, 1, 0, 2, 1, 0, 2, 2, 1, - 1, 1, 0, 2, 2, 1, 1, 2, 2, - 1, 1, 0, 0, 1, 0, 0, 2, 1, - 1, 1, 0, 0, 2, 1, 1, 2, 2, - 1, 1, 0, 0, 1, 0, 0, 0, 1, - 1, 1, 0, 0, 0, 1, 1, 0, 2 }, -#define WIPE_T8_235 8 - { 1, 0, 0, 1, 1, 0, 2, 1, 1, - 1, 0, 0, 2, 1, 1, 2, 0, 2, - 1, 0, 0, 1, 1, 0, 0, 1, 1, - 1, 0, 0, 0, 1, 1, 0, 0, 2, - 1, 2, 0, 1, 1, 0, 2, 1, 1, - 1, 2, 0, 2, 1, 1, 2, 2, 2, - 1, 2, 0, 1, 1, 0, 0, 1, 1, - 1, 2, 0, 0, 1, 1, 0, 2, 2 }, -#define WIPE_T8_236 9 - { 0, 1, 0, 1, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 0, 2, - 0, 1, 0, 1, 1, 0, 1, 2, 1, - 0, 1, 0, 1, 2, 1, 0, 2, 2, - 2, 1, 0, 1, 1, 0, 1, 0, 1, - 2, 1, 0, 1, 0, 1, 2, 0, 2, - 2, 1, 0, 1, 1, 0, 1, 2, 1, - 2, 1, 0, 1, 2, 1, 2, 2, 2 }, }; static gint triangles_16t[][16*9] = @@ -475,67 +478,84 @@ static GstWipeConfig wipe_config[] = #define WIPE_CONFIG_101 WIPE_CONFIG_68+1 { triangles_4t[WIPE_T4_101], 4, 1, 1, 0 }, /* 101 */ #define WIPE_CONFIG_201 WIPE_CONFIG_101+1 - { triangles_5t[WIPE_T5_201], 5, 1, 1, 3 }, /* 201 */ + { box_clock_4b[WIPE_B4_201], 4, 1, 1, 2 }, /* 201 */ #define WIPE_CONFIG_202 WIPE_CONFIG_201+1 - { triangles_5t[WIPE_T5_202], 5, 1, 1, 3 }, /* 202 */ + { box_clock_4b[WIPE_B4_202], 4, 1, 1, 2 }, /* 202 */ #define WIPE_CONFIG_203 WIPE_CONFIG_202+1 - { triangles_5t[WIPE_T5_203], 5, 1, 1, 3 }, /* 203 */ + { box_clock_4b[WIPE_B4_203], 4, 1, 1, 2 }, /* 203 */ #define WIPE_CONFIG_204 WIPE_CONFIG_203+1 - { triangles_5t[WIPE_T5_204], 5, 1, 1, 3 }, /* 204 */ + { box_clock_4b[WIPE_B4_204], 4, 1, 1, 2 }, /* 204 */ #define WIPE_CONFIG_205 WIPE_CONFIG_204+1 - { triangles_6t[WIPE_T6_205], 6, 1, 1, 2 }, /* 205 */ + { box_clock_4b[WIPE_B4_205], 4, 1, 1, 1 }, /* 205 */ #define WIPE_CONFIG_206 WIPE_CONFIG_205+1 - { triangles_6t[WIPE_T6_206], 6, 1, 1, 2 }, /* 206 */ + { box_clock_4b[WIPE_B4_206], 4, 1, 1, 1 }, /* 206 */ #define WIPE_CONFIG_207 WIPE_CONFIG_206+1 - { triangles_8t[WIPE_T8_207], 8, 1, 1, 1 }, /* 207 */ + { box_clock_4b[WIPE_B4_207], 4, 1, 1, 0 }, /* 207 */ #define WIPE_CONFIG_211 WIPE_CONFIG_207+1 - { triangles_6t[WIPE_T6_211], 6, 1, 1, 2 }, /* 211 */ + { box_clock_4b[WIPE_B4_211], 4, 1, 1, 1 }, /* 211 */ #define WIPE_CONFIG_212 WIPE_CONFIG_211+1 - { triangles_6t[WIPE_T6_212], 6, 1, 1, 2 }, /* 212 */ + { box_clock_4b[WIPE_B4_212], 4, 1, 1, 1 }, /* 212 */ #define WIPE_CONFIG_213 WIPE_CONFIG_212+1 - { triangles_8t[WIPE_T8_213], 8, 1, 1, 1 }, /* 213 */ + { box_clock_4b[WIPE_B4_213], 4, 1, 1, 0 }, /* 213 */ #define WIPE_CONFIG_214 WIPE_CONFIG_213+1 - { triangles_8t[WIPE_T8_214], 8, 1, 1, 1 }, /* 214 */ + { box_clock_4b[WIPE_B4_214], 4, 1, 1, 0 }, /* 214 */ #define WIPE_CONFIG_221 WIPE_CONFIG_214+1 - { triangles_3t[WIPE_T3_221], 3, 1, 1, 2 }, /* 221 */ + { box_clock_2b[WIPE_B2_221], 2, 1, 1, 1 }, /* 221 */ #define WIPE_CONFIG_222 WIPE_CONFIG_221+1 - { triangles_3t[WIPE_T3_222], 3, 1, 1, 2 }, /* 222 */ + { box_clock_2b[WIPE_B2_222], 2, 1, 1, 1 }, /* 222 */ #define WIPE_CONFIG_223 WIPE_CONFIG_222+1 - { triangles_3t[WIPE_T3_223], 3, 1, 1, 2 }, /* 223 */ + { box_clock_2b[WIPE_B2_223], 2, 1, 1, 1 }, /* 223 */ #define WIPE_CONFIG_224 WIPE_CONFIG_223+1 - { triangles_3t[WIPE_T3_224], 3, 1, 1, 2 }, /* 224 */ + { box_clock_2b[WIPE_B2_224], 2, 1, 1, 1 }, /* 224 */ #define WIPE_CONFIG_225 WIPE_CONFIG_224+1 - { triangles_4t[WIPE_T4_225], 4, 1, 1, 1 }, /* 225 */ + { box_clock_2b[WIPE_B2_225], 2, 1, 1, 0 }, /* 225 */ #define WIPE_CONFIG_226 WIPE_CONFIG_225+1 - { triangles_4t[WIPE_T4_226], 4, 1, 1, 1 }, /* 226 */ + { box_clock_2b[WIPE_B2_226], 2, 1, 1, 0 }, /* 226 */ #define WIPE_CONFIG_227 WIPE_CONFIG_226+1 - { triangles_6t[WIPE_T6_227], 6, 1, 1, 2 }, /* 227 */ + { box_clock_4b[WIPE_B4_227], 4, 1, 1, 1 }, /* 227 */ #define WIPE_CONFIG_228 WIPE_CONFIG_227+1 - { triangles_6t[WIPE_T6_228], 6, 1, 1, 2 }, /* 228 */ + { box_clock_4b[WIPE_B4_228], 4, 1, 1, 1 }, /* 228 */ #define WIPE_CONFIG_231 WIPE_CONFIG_228+1 - { triangles_4t[WIPE_T4_231], 4, 1, 1, 1 }, /* 231 */ + { box_clock_2b[WIPE_B2_231], 2, 1, 1, 0 }, /* 231 */ #define WIPE_CONFIG_232 WIPE_CONFIG_231+1 - { triangles_4t[WIPE_T4_232], 4, 1, 1, 1 }, /* 232 */ + { box_clock_2b[WIPE_B2_232], 2, 1, 1, 0 }, /* 232 */ #define WIPE_CONFIG_233 WIPE_CONFIG_232+1 - { triangles_4t[WIPE_T4_233], 4, 1, 1, 1 }, /* 233 */ + { box_clock_2b[WIPE_B2_233], 2, 1, 1, 0 }, /* 233 */ #define WIPE_CONFIG_234 WIPE_CONFIG_233+1 - { triangles_4t[WIPE_T4_234], 4, 1, 1, 1 }, /* 234 */ + { box_clock_2b[WIPE_B2_234], 2, 1, 1, 0 }, /* 234 */ #define WIPE_CONFIG_235 WIPE_CONFIG_234+1 - { triangles_8t[WIPE_T8_235], 8, 1, 1, 1 }, /* 235 */ + { box_clock_4b[WIPE_B4_235], 4, 1, 1, 0 }, /* 235 */ #define WIPE_CONFIG_236 WIPE_CONFIG_235+1 - { triangles_8t[WIPE_T8_236], 8, 1, 1, 1 }, /* 236 */ + { box_clock_4b[WIPE_B4_236], 4, 1, 1, 0 }, /* 236 */ #define WIPE_CONFIG_241 WIPE_CONFIG_236+1 - { triangles_2t[WIPE_T2_241], 2, 0, 0, 1 }, /* 241 */ + { box_clock_1b[WIPE_B1_241], 1, 0, 0, 0 }, /* 241 */ #define WIPE_CONFIG_242 WIPE_CONFIG_241+1 - { triangles_2t[WIPE_T2_242], 2, 0, 0, 1 }, /* 242 */ + { box_clock_1b[WIPE_B1_242], 1, 0, 0, 0 }, /* 242 */ #define WIPE_CONFIG_243 WIPE_CONFIG_242+1 - { triangles_2t[WIPE_T2_243], 2, 0, 0, 1 }, /* 243 */ + { box_clock_1b[WIPE_B1_243], 1, 0, 0, 0 }, /* 243 */ #define WIPE_CONFIG_244 WIPE_CONFIG_243+1 - { triangles_2t[WIPE_T2_244], 2, 0, 0, 1 }, /* 244 */ + { box_clock_1b[WIPE_B1_244], 1, 0, 0, 0 }, /* 244 */ #define WIPE_CONFIG_245 WIPE_CONFIG_244+1 { triangles_2t[WIPE_T2_245], 2, 1, 1, 0 }, /* 245 */ #define WIPE_CONFIG_246 WIPE_CONFIG_245+1 { triangles_2t[WIPE_T2_246], 2, 1, 1, 0 }, /* 246 */ +#define WIPE_CONFIG_251 WIPE_CONFIG_246+1 + { box_clock_2b[WIPE_B2_251], 2, 1, 1, 0 }, /* 251 */ +#define WIPE_CONFIG_252 WIPE_CONFIG_251+1 + { box_clock_2b[WIPE_B2_252], 2, 1, 1, 0 }, /* 252 */ +#define WIPE_CONFIG_253 WIPE_CONFIG_252+1 + { box_clock_2b[WIPE_B2_253], 2, 1, 1, 0 }, /* 253 */ +#define WIPE_CONFIG_254 WIPE_CONFIG_253+1 + { box_clock_2b[WIPE_B2_254], 2, 1, 1, 0 }, /* 254 */ + +#define WIPE_CONFIG_261 WIPE_CONFIG_254+1 + { box_clock_8b[WIPE_B8_261], 8, 2, 2, 2 }, /* 261 */ +#define WIPE_CONFIG_262 WIPE_CONFIG_261+1 + { box_clock_8b[WIPE_B8_262], 8, 2, 2, 2 }, /* 262 */ +#define WIPE_CONFIG_263 WIPE_CONFIG_262+1 + { box_clock_8b[WIPE_B8_263], 8, 2, 2, 1 }, /* 263 */ +#define WIPE_CONFIG_264 WIPE_CONFIG_263+1 + { box_clock_8b[WIPE_B8_264], 8, 2, 2, 1 }, /* 264 */ }; static void @@ -562,6 +582,12 @@ gst_wipe_boxes_draw (GstMask *mask) impacts[1] * width, impacts[2] * height, impacts[3] * depth, impacts[4] * width, impacts[5] * height, impacts[6] * depth); impacts += 7; + case BOX_CLOCK: + gst_smpte_paint_box_clock (mask->data, mask->width, + impacts[1] * width, impacts[2] * height, impacts[3] * depth, + impacts[4] * width, impacts[5] * height, impacts[6] * depth, + impacts[7] * width, impacts[8] * height, impacts[9] * depth); + impacts += 10; default: break; } @@ -578,20 +604,11 @@ gst_wipe_triangles_clock_draw (GstMask *mask) gint depth = (1 << mask->bpp) >> config->cscale; gint i; - g_print ("width %d %d\n", mask->width, width); - - for (i = 0; i < config->nobjects; i++) { gst_smpte_paint_triangle_clock (mask->data, mask->width, - impacts[0] * width, - impacts[1] * height, - impacts[2] * depth, - impacts[3] * width, - impacts[4] * height, - impacts[5] * depth, - impacts[6] * width, - impacts[7] * height, - impacts[8] * depth); + impacts[0] * width, impacts[1] * height, impacts[2] * depth, + impacts[3] * width, impacts[4] * height, impacts[5] * depth, + impacts[6] * width, impacts[7] * height, impacts[8] * depth); impacts += 9; } } @@ -743,119 +760,119 @@ static GstMaskDefinition definitions[] = { &wipe_config[WIPE_CONFIG_101] }, { 201, "clock_cw12", "A radial hand sweeps clockwise from the twelve o'clock position", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_201] }, { 202, "clock_cw3", "A radial hand sweeps clockwise from the three o'clock position", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_202] }, { 203, "clock_cw6", "A radial hand sweeps clockwise from the six o'clock position", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_203] }, { 204, "clock_cw9", "A radial hand sweeps clockwise from the nine o'clock position", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_204] }, { 205, "pinwheel_tbv", "Two radial hands sweep clockwise from the twelve and six o'clock positions", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_205] }, { 206, "pinwheel_tbh", "Two radial hands sweep clockwise from the nine and three o'clock positions", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_206] }, { 207, "pinwheel_fb", "Four radial hands sweep clockwise", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_207] }, { 211, "fan_ct", "A fan unfolds from the top edge, the fan axis at the center", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_211] }, { 212, "fan_cr", "A fan unfolds from the right edge, the fan axis at the center", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_212] }, { 213, "doublefan_fov", "Two fans, their axes at the center, unfold from the top and bottom", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_213] }, { 214, "doublefan_foh", "Two fans, their axes at the center, unfold from the left and right", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_214] }, { 221, "singlesweep_cwt", "A radial hand sweeps clockwise from the top edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_221] }, { 222, "singlesweep_cwr", "A radial hand sweeps clockwise from the right edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_222] }, { 223, "singlesweep_cwb", "A radial hand sweeps clockwise from the bottom edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_223] }, { 224, "singlesweep_cwl", "A radial hand sweeps clockwise from the left edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_224] }, { 225, "doublesweep_pv", "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_225] }, { 226, "doublesweep_pd", "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_226] }, { 227, "doublesweep_ov", "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_227] }, { 228, "doublesweep_oh", "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_228] }, { 231, "fan_t", "A fan unfolds from the bottom, the fan axis at the top edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_231] }, { 232, "fan_r", "A fan unfolds from the left, the fan axis at the right edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_232] }, { 233, "fan_b", "A fan unfolds from the top, the fan axis at the bottom edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_233] }, { 234, "fan_l", "A fan unfolds from the right, the fan axis at the left edge's midpoint", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_234] }, { 235, "doublefan_fiv", "Two fans, their axes at the top and bottom, unfold from the center", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_235] }, { 236, "doublefan_fih", "Two fans, their axes at the left and right, unfold from the center", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_236] }, { 241, "singlesweep_cwtl", "A radial hand sweeps clockwise from the upper-left corner", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_241] }, { 242, "singlesweep_cwbl", "A radial hand sweeps counter-clockwise from the lower-left corner.", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_242] }, { 243, "singlesweep_cwbr", "A radial hand sweeps clockwise from the lower-right corner", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_243] }, { 244, "singlesweep_cwtr", "A radial hand sweeps counter-clockwise from the upper-right corner", - gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, + gst_wipe_boxes_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_244] }, { 245, "doublesweep_pdtl", "Two radial hands attached at the upper-left and lower-right corners sweep down and up", @@ -865,6 +882,38 @@ static GstMaskDefinition definitions[] = { "Two radial hands attached at the lower-left and upper-right corners sweep down and up", gst_wipe_triangles_clock_draw, _gst_mask_default_destroy, &wipe_config[WIPE_CONFIG_246] }, + { 251, "saloondoor_t", + "Two radial hands attached at the upper-left and upper-right corners sweep down", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_251] }, + { 252, "saloondoor_l", + "Two radial hands attached at the upper-left and lower-left corners sweep to the right", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_252] }, + { 253, "saloondoor_b", + "Two radial hands attached at the lower-left and lower-right corners sweep up", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_253] }, + { 254, "saloondoor_r", + "Two radial hands attached at the upper-right and lower-right corners sweep to the left", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_254] }, + { 261, "windshield_r", + "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_261] }, + { 262, "windshield_u", + "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_262] }, + { 263, "windshield_v", + "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_263] }, + { 264, "windshield_h", + "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_264] }, { 0, NULL, NULL, NULL } }; diff --git a/gst/smpte/gstmask.c b/gst/smpte/gstmask.c index 14804524..6430f420 100644 --- a/gst/smpte/gstmask.c +++ b/gst/smpte/gstmask.c @@ -104,12 +104,3 @@ gst_mask_destroy (GstMask *mask) if (mask->destroy_func) mask->destroy_func (mask); } - -void -gst_mask_update (GstMask *mask, - GstClockTime position, - GstClockTime duration) -{ - g_return_if_fail (mask != NULL); - -} diff --git a/gst/smpte/paint.c b/gst/smpte/paint.c index d56450da..51eecebd 100644 --- a/gst/smpte/paint.c +++ b/gst/smpte/paint.c @@ -248,32 +248,31 @@ draw_line (guint32* dest, gint stride, int x, int y, int x2, int y2, int col) void gst_smpte_paint_triangle_clock (guint32 *dest, gint stride, - gint x0, gint y0, gint c0, - gint x1, gint y1, gint c1, gint x2, gint y2, gint c2) + gint x0, gint y0, gint c0, + gint x1, gint y1, gint c1, + gint x2, gint y2, gint c2) { gint i; gint sign; gfloat angle, angle_s, angle_e; + angle_s = 0.0; + angle_e = acos (((x1-x0) * (x2-x0) + (y1-y0) * (y2-y0))/ + (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) * + sqrt ((x2-x0) * (x2-x0) + (y2-y0) * (y2-y0)))); + if (x1 == x2) { gfloat len1 = sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)); sign = SIGN (y2 - y1); - angle_s = 0.0; - angle_e = acos (((x1-x0) * (x2-x0) + (y1-y0) * (y2-y0))/ - (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) * - sqrt ((x2-x0) * (x2-x0) + (y2-y0) * (y2-y0)))); - for (i=y1; i != y2+sign; i+=sign) { gfloat len2 = sqrt ((x1-x0) * (x1-x0) + (i-y0) * (i-y0)); if (y1==i) angle = 0; else - angle = acos (((x1-x0) * (x2-x0) + (y1-y0) * (i-y0))/ (len1 * len2)); - - angle = angle / angle_e; + angle = acos (((x1-x0) * (x2-x0) + (y1-y0) * (i-y0))/ (len1 * len2)) / angle_e; draw_line (dest, stride, x0, y0, x1, i, @@ -285,20 +284,13 @@ gst_smpte_paint_triangle_clock (guint32 *dest, gint stride, sign = SIGN (x2 - x1); - angle_s = 0.0; - angle_e = acos (((x1-x0) * (x2-x0) + (y1-y0) * (y2-y0))/ - (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) * - sqrt ((x2-x0) * (x2-x0) + (y2-y0) * (y2-y0)))); - for (i=x1; i != x2+sign; i+=sign) { gfloat len2 = sqrt ((i-x0) * (i-x0) + (y2-y0) * (y2-y0)); if (x1==i) angle = 0; else - angle = acos (((x1-x0) * (i-x0) + (y1-y0) * (y2-y0)) / (len1 * len2)); - - angle = angle / angle_e; + angle = acos (((x1-x0) * (i-x0) + (y1-y0) * (y2-y0)) / (len1 * len2)) / angle_e; draw_line (dest, stride, x0, y0, i, y1, @@ -306,3 +298,42 @@ gst_smpte_paint_triangle_clock (guint32 *dest, gint stride, } } } + +void +gst_smpte_paint_box_clock (guint32 *dest, gint stride, + gint x0, gint y0, gint c0, + gint x1, gint y1, gint c1, + gint x2, gint y2, gint c2) +{ + gfloat angle_m; + + if (x1 == x0) { + angle_m = 2* acos (((x1-x0) * (x2-x0) + (y1-y0) * (y1-y0))/ + (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) * + sqrt ((x2-x0) * (x2-x0) + (y1-y0) * (y1-y0)))) / M_PI; + + gst_smpte_paint_triangle_clock (dest, stride, + x0, y0, c0, + x1, y1, c1, + x2, y1, (c2 * angle_m + c1 * (1.0-angle_m))); + gst_smpte_paint_triangle_clock (dest, stride, + x0, y0, c0, + x2, y1, (c2 * angle_m + c1 * (1.0-angle_m)), + x2, y2, c2); + } + else if (y1 == y0) { + angle_m = 2* acos (((x1-x0) * (x1-x0) + (y1-y0) * (y2-y0))/ + (sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)) * + sqrt ((x1-x0) * (x1-x0) + (y2-y0) * (y2-y0)))) / M_PI; + + gst_smpte_paint_triangle_clock (dest, stride, + x0, y0, c0, + x1, y1, c1, + x1, y2, (c2 * angle_m + c1 * (1.0-angle_m))); + gst_smpte_paint_triangle_clock (dest, stride, + x0, y0, c0, + x1, y2, (c2 * angle_m + c1 * (1.0-angle_m)), + x2, y2, c2); + } +} + diff --git a/gst/smpte/paint.h b/gst/smpte/paint.h index 4eacbd59..4c34cf92 100644 --- a/gst/smpte/paint.h +++ b/gst/smpte/paint.h @@ -39,4 +39,9 @@ void gst_smpte_paint_triangle_clock (guint32 *dest, gint stride, gint x1, gint y1, gint c1, gint x2, gint y2, gint c2); +void gst_smpte_paint_box_clock (guint32 *dest, gint stride, + gint x0, gint y0, gint c0, + gint x1, gint y1, gint c1, + gint x2, gint y2, gint c2); + #endif /* __GST_SMPTE_PAINT_H__ */ |