mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
Some more wipes, added radial wipes
Original commit message from CVS: Some more wipes, added radial wipes
This commit is contained in:
parent
20c3e8702b
commit
ae3c8d1668
3 changed files with 515 additions and 11 deletions
|
@ -72,6 +72,24 @@ 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
|
||||
{ 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
|
||||
{ 0, 2, 0, 0, 0, 0, 2, 0, 1,
|
||||
2, 0, 0, 2, 2, 0, 0, 2, 1 },
|
||||
};
|
||||
|
||||
static gint triangles_3t[][3*9] =
|
||||
|
@ -92,7 +110,23 @@ static gint triangles_3t[][3*9] =
|
|||
#define WIPE_T3_26 3
|
||||
{ 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 }
|
||||
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] =
|
||||
|
@ -141,9 +175,112 @@ static gint triangles_4t[][4*9] =
|
|||
{ 0, 0, 1, 2, 0, 1, 1, 1, 0,
|
||||
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 }
|
||||
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 */
|
||||
|
@ -192,6 +329,51 @@ 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] =
|
||||
|
@ -292,6 +474,68 @@ static GstWipeConfig wipe_config[] =
|
|||
{ triangles_4t[WIPE_T4_68], 4, 1, 1, 0 }, /* 68 */
|
||||
#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 */
|
||||
#define WIPE_CONFIG_202 WIPE_CONFIG_201+1
|
||||
{ triangles_5t[WIPE_T5_202], 5, 1, 1, 3 }, /* 202 */
|
||||
#define WIPE_CONFIG_203 WIPE_CONFIG_202+1
|
||||
{ triangles_5t[WIPE_T5_203], 5, 1, 1, 3 }, /* 203 */
|
||||
#define WIPE_CONFIG_204 WIPE_CONFIG_203+1
|
||||
{ triangles_5t[WIPE_T5_204], 5, 1, 1, 3 }, /* 204 */
|
||||
#define WIPE_CONFIG_205 WIPE_CONFIG_204+1
|
||||
{ triangles_6t[WIPE_T6_205], 6, 1, 1, 2 }, /* 205 */
|
||||
#define WIPE_CONFIG_206 WIPE_CONFIG_205+1
|
||||
{ triangles_6t[WIPE_T6_206], 6, 1, 1, 2 }, /* 206 */
|
||||
#define WIPE_CONFIG_207 WIPE_CONFIG_206+1
|
||||
{ triangles_8t[WIPE_T8_207], 8, 1, 1, 1 }, /* 207 */
|
||||
#define WIPE_CONFIG_211 WIPE_CONFIG_207+1
|
||||
{ triangles_6t[WIPE_T6_211], 6, 1, 1, 2 }, /* 211 */
|
||||
#define WIPE_CONFIG_212 WIPE_CONFIG_211+1
|
||||
{ triangles_6t[WIPE_T6_212], 6, 1, 1, 2 }, /* 212 */
|
||||
#define WIPE_CONFIG_213 WIPE_CONFIG_212+1
|
||||
{ triangles_8t[WIPE_T8_213], 8, 1, 1, 1 }, /* 213 */
|
||||
#define WIPE_CONFIG_214 WIPE_CONFIG_213+1
|
||||
{ triangles_8t[WIPE_T8_214], 8, 1, 1, 1 }, /* 214 */
|
||||
#define WIPE_CONFIG_221 WIPE_CONFIG_214+1
|
||||
{ triangles_3t[WIPE_T3_221], 3, 1, 1, 2 }, /* 221 */
|
||||
#define WIPE_CONFIG_222 WIPE_CONFIG_221+1
|
||||
{ triangles_3t[WIPE_T3_222], 3, 1, 1, 2 }, /* 222 */
|
||||
#define WIPE_CONFIG_223 WIPE_CONFIG_222+1
|
||||
{ triangles_3t[WIPE_T3_223], 3, 1, 1, 2 }, /* 223 */
|
||||
#define WIPE_CONFIG_224 WIPE_CONFIG_223+1
|
||||
{ triangles_3t[WIPE_T3_224], 3, 1, 1, 2 }, /* 224 */
|
||||
#define WIPE_CONFIG_225 WIPE_CONFIG_224+1
|
||||
{ triangles_4t[WIPE_T4_225], 4, 1, 1, 1 }, /* 225 */
|
||||
#define WIPE_CONFIG_226 WIPE_CONFIG_225+1
|
||||
{ triangles_4t[WIPE_T4_226], 4, 1, 1, 1 }, /* 226 */
|
||||
#define WIPE_CONFIG_227 WIPE_CONFIG_226+1
|
||||
{ triangles_6t[WIPE_T6_227], 6, 1, 1, 2 }, /* 227 */
|
||||
#define WIPE_CONFIG_228 WIPE_CONFIG_227+1
|
||||
{ triangles_6t[WIPE_T6_228], 6, 1, 1, 2 }, /* 228 */
|
||||
#define WIPE_CONFIG_231 WIPE_CONFIG_228+1
|
||||
{ triangles_4t[WIPE_T4_231], 4, 1, 1, 1 }, /* 231 */
|
||||
#define WIPE_CONFIG_232 WIPE_CONFIG_231+1
|
||||
{ triangles_4t[WIPE_T4_232], 4, 1, 1, 1 }, /* 232 */
|
||||
#define WIPE_CONFIG_233 WIPE_CONFIG_232+1
|
||||
{ triangles_4t[WIPE_T4_233], 4, 1, 1, 1 }, /* 233 */
|
||||
#define WIPE_CONFIG_234 WIPE_CONFIG_233+1
|
||||
{ triangles_4t[WIPE_T4_234], 4, 1, 1, 1 }, /* 234 */
|
||||
#define WIPE_CONFIG_235 WIPE_CONFIG_234+1
|
||||
{ triangles_8t[WIPE_T8_235], 8, 1, 1, 1 }, /* 235 */
|
||||
#define WIPE_CONFIG_236 WIPE_CONFIG_235+1
|
||||
{ triangles_8t[WIPE_T8_236], 8, 1, 1, 1 }, /* 236 */
|
||||
#define WIPE_CONFIG_241 WIPE_CONFIG_236+1
|
||||
{ triangles_2t[WIPE_T2_241], 2, 0, 0, 1 }, /* 241 */
|
||||
#define WIPE_CONFIG_242 WIPE_CONFIG_241+1
|
||||
{ triangles_2t[WIPE_T2_242], 2, 0, 0, 1 }, /* 242 */
|
||||
#define WIPE_CONFIG_243 WIPE_CONFIG_242+1
|
||||
{ triangles_2t[WIPE_T2_243], 2, 0, 0, 1 }, /* 243 */
|
||||
#define WIPE_CONFIG_244 WIPE_CONFIG_243+1
|
||||
{ triangles_2t[WIPE_T2_244], 2, 0, 0, 1 }, /* 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 */
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -299,8 +543,8 @@ gst_wipe_boxes_draw (GstMask *mask)
|
|||
{
|
||||
GstWipeConfig *config = mask->user_data;
|
||||
gint *impacts = config->objects;
|
||||
gint width = (mask->width >> config->xscale) - 1;
|
||||
gint height = (mask->height >> config->yscale) - 1;
|
||||
gint width = (mask->width >> config->xscale);
|
||||
gint height = (mask->height >> config->yscale);
|
||||
gint depth = (1 << mask->bpp) >> config->cscale;
|
||||
|
||||
gint i;
|
||||
|
@ -309,14 +553,14 @@ gst_wipe_boxes_draw (GstMask *mask)
|
|||
switch (impacts[0]) {
|
||||
case BOX_VERTICAL:
|
||||
gst_smpte_paint_vbox (mask->data, mask->width,
|
||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||
impacts += 7;
|
||||
break;
|
||||
case BOX_HORIZONTAL:
|
||||
gst_smpte_paint_hbox (mask->data, mask->width,
|
||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||
impacts += 7;
|
||||
default:
|
||||
break;
|
||||
|
@ -324,13 +568,41 @@ gst_wipe_boxes_draw (GstMask *mask)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gst_wipe_triangles_clock_draw (GstMask *mask)
|
||||
{
|
||||
GstWipeConfig *config = mask->user_data;
|
||||
gint *impacts = config->objects;
|
||||
gint width = (mask->width >> config->xscale);
|
||||
gint height = (mask->height >> config->yscale);
|
||||
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 += 9;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gst_wipe_triangles_draw (GstMask *mask)
|
||||
{
|
||||
GstWipeConfig *config = mask->user_data;
|
||||
gint *impacts = config->objects;
|
||||
gint width = (mask->width >> config->xscale) - 1;
|
||||
gint height = (mask->height >> config->yscale) - 1;
|
||||
gint width = (mask->width >> config->xscale);
|
||||
gint height = (mask->height >> config->yscale);
|
||||
gint depth = (1 << mask->bpp) >> config->cscale;
|
||||
|
||||
gint i;
|
||||
|
@ -469,6 +741,130 @@ static GstMaskDefinition definitions[] = {
|
|||
"A rectangle expands from the center.",
|
||||
gst_wipe_triangles_draw, _gst_mask_default_destroy,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&wipe_config[WIPE_CONFIG_206] },
|
||||
{ 207, "pinwheel_fb",
|
||||
"Four radial hands sweep clockwise",
|
||||
gst_wipe_triangles_clock_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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&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,
|
||||
&wipe_config[WIPE_CONFIG_244] },
|
||||
{ 245, "doublesweep_pdtl",
|
||||
"Two radial hands attached at the upper-left and lower-right corners sweep down and up",
|
||||
gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
|
||||
&wipe_config[WIPE_CONFIG_245] },
|
||||
{ 246, "doublesweep_pdbl",
|
||||
"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] },
|
||||
{ 0, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include "paint.h"
|
||||
|
||||
void
|
||||
|
@ -177,10 +178,10 @@ gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
|
|||
gint sign = SIGN (e - s);
|
||||
|
||||
e += sign;
|
||||
|
||||
for (j = s; j != e; j+=sign) {
|
||||
dest[j] = (ec * (j - s) + sc * (e - j)) / (e - s);
|
||||
}
|
||||
|
||||
while (pyr == i) {
|
||||
STEP_3D_LINE (dxrabs, dyrabs, dcrabs, sdxr, sdyr, sdcr,
|
||||
xrr, yrr, crr, pxr, pyr, pcr);
|
||||
|
@ -202,3 +203,106 @@ gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
|
|||
seg_end = y2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
draw_line (guint32* dest, gint stride, int x, int y, int x2, int y2, int col)
|
||||
{
|
||||
gboolean yLonger=FALSE;
|
||||
int incrementVal, endVal;
|
||||
gdouble decInc;
|
||||
int shortLen=y2-y;
|
||||
int longLen=x2-x;
|
||||
gdouble j=0.0;
|
||||
int i;
|
||||
|
||||
if (abs(shortLen)>abs(longLen)) {
|
||||
int swap=shortLen;
|
||||
shortLen=longLen;
|
||||
longLen=swap;
|
||||
yLonger=TRUE;
|
||||
}
|
||||
|
||||
endVal=longLen;
|
||||
if (longLen<0) {
|
||||
incrementVal=-1;
|
||||
longLen=-longLen;
|
||||
}
|
||||
else incrementVal=1;
|
||||
|
||||
if (longLen==0) decInc=(gdouble)shortLen;
|
||||
else decInc = ((gdouble)shortLen/(gdouble)longLen);
|
||||
|
||||
if (yLonger) {
|
||||
for (i=0;i!=endVal;i+=incrementVal) {
|
||||
*(dest+(x+(int)j) + (y+i)*stride) = col;
|
||||
j+=decInc;
|
||||
}
|
||||
} else {
|
||||
for (i=0;i!=endVal;i+=incrementVal) {
|
||||
*(dest+(x+i) + (y+(int)j)*stride) = col;
|
||||
j+=decInc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 i;
|
||||
gint sign;
|
||||
gfloat angle, angle_s, angle_e;
|
||||
|
||||
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;
|
||||
|
||||
draw_line (dest, stride,
|
||||
x0, y0, x1, i,
|
||||
(c2 * angle + c1 * (1.0-angle)));
|
||||
}
|
||||
}
|
||||
else if (y1 == y2) {
|
||||
gfloat len1 = sqrt ((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0));
|
||||
|
||||
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;
|
||||
|
||||
draw_line (dest, stride,
|
||||
x0, y0, i, y1,
|
||||
(c2 * angle + c1 * (1.0-angle)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,5 +34,9 @@ void gst_smpte_paint_triangle_linear (guint32 *dest, gint stride,
|
|||
gint x1, gint y1, gint c1,
|
||||
gint x2, gint y2, gint c2);
|
||||
|
||||
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);
|
||||
|
||||
#endif /* __GST_SMPTE_PAINT_H__ */
|
||||
|
|
Loading…
Reference in a new issue