- implemented clock sweep on 90 degree angles to compensate for aspect ratio.
authorWim Taymans <wim.taymans@gmail.com>
Tue, 15 Oct 2002 22:09:51 +0000 (22:09 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 15 Oct 2002 22:09:51 +0000 (22:09 +0000)
Original commit message from CVS:
- implemented clock sweep on 90 degree angles to compensate for aspect
ratio.
- implemented remaining clock wipes

gst/smpte/barboxwipes.c
gst/smpte/gstmask.c
gst/smpte/paint.c
gst/smpte/paint.h

index 5a71018..e1cab9d 100644 (file)
@@ -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 }
 };
 
index 1480452..6430f42 100644 (file)
@@ -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);
-
-}
index d56450d..51eeceb 100644 (file)
@@ -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);
+  }
+}
+
index 4eacbd5..4c34cf9 100644 (file)
@@ -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__ */