mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-13 09:45:27 +00:00
gst/smpte/: constify some static structs.
Original commit message from CVS: * gst/smpte/barboxwipes.c: (gst_wipe_boxes_draw), (gst_wipe_triangles_clock_draw), (gst_wipe_triangles_draw): * gst/smpte/gstmask.c: (_gst_mask_register): * gst/smpte/gstmask.h: * gst/smpte/gstsmpte.c: (gst_smpte_update_mask): * gst/smpte/paint.c: (gst_smpte_paint_hbox), (draw_bresenham_line), (gst_smpte_paint_triangle_clock): constify some static structs. Don't update the mask if nothing changed to the params. Make sure we never draw outside of the picture. Fixes #398325.
This commit is contained in:
parent
a10f2478bb
commit
168db53bf4
6 changed files with 95 additions and 40 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
||||||
|
2007-01-23 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/smpte/barboxwipes.c: (gst_wipe_boxes_draw),
|
||||||
|
(gst_wipe_triangles_clock_draw), (gst_wipe_triangles_draw):
|
||||||
|
* gst/smpte/gstmask.c: (_gst_mask_register):
|
||||||
|
* gst/smpte/gstmask.h:
|
||||||
|
* gst/smpte/gstsmpte.c: (gst_smpte_update_mask):
|
||||||
|
* gst/smpte/paint.c: (gst_smpte_paint_hbox), (draw_bresenham_line),
|
||||||
|
(gst_smpte_paint_triangle_clock):
|
||||||
|
constify some static structs.
|
||||||
|
Don't update the mask if nothing changed to the params.
|
||||||
|
Make sure we never draw outside of the picture. Fixes #398325.
|
||||||
|
|
||||||
2007-01-22 Tim-Philipp Müller <tim at centricular dot net>
|
2007-01-22 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst/avi/gstavidemux.c: (gst_avi_demux_stream_header_pull):
|
* gst/avi/gstavidemux.c: (gst_avi_demux_stream_header_pull):
|
||||||
|
|
|
@ -32,14 +32,14 @@ enum
|
||||||
TRIGANLE_LINEAR = 4
|
TRIGANLE_LINEAR = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint boxes_1b[][7] = {
|
static const gint boxes_1b[][7] = {
|
||||||
#define WIPE_B1_1 0
|
#define WIPE_B1_1 0
|
||||||
{BOX_VERTICAL, 0, 0, 0, 1, 1, 1},
|
{BOX_VERTICAL, 0, 0, 0, 1, 1, 1},
|
||||||
#define WIPE_B1_2 1
|
#define WIPE_B1_2 1
|
||||||
{BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1}
|
{BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint boxes_2b[][7 * 2] = {
|
static const gint boxes_2b[][7 * 2] = {
|
||||||
#define WIPE_B2_21 0
|
#define WIPE_B2_21 0
|
||||||
{BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
|
{BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
|
||||||
BOX_VERTICAL, 1, 0, 0, 2, 2, 1},
|
BOX_VERTICAL, 1, 0, 0, 2, 2, 1},
|
||||||
|
@ -48,7 +48,7 @@ static gint boxes_2b[][7 * 2] = {
|
||||||
BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1},
|
BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint box_clock_1b[][1 * 10] = {
|
static const gint box_clock_1b[][1 * 10] = {
|
||||||
#define WIPE_B1_241 0
|
#define WIPE_B1_241 0
|
||||||
{BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1},
|
{BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1},
|
||||||
#define WIPE_B1_242 1
|
#define WIPE_B1_242 1
|
||||||
|
@ -60,7 +60,7 @@ static gint box_clock_1b[][1 * 10] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define WIPE_B2_221 0
|
#define WIPE_B2_221 0
|
||||||
static gint box_clock_2b[][2 * 10] = {
|
static const gint box_clock_2b[][2 * 10] = {
|
||||||
#define WIPE_B2_221 0
|
#define WIPE_B2_221 0
|
||||||
{BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
|
{BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
|
||||||
BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2},
|
BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2},
|
||||||
|
@ -105,7 +105,7 @@ static gint box_clock_2b[][2 * 10] = {
|
||||||
BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1},
|
BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint box_clock_4b[][4 * 10] = {
|
static const gint box_clock_4b[][4 * 10] = {
|
||||||
#define WIPE_B4_201 0
|
#define WIPE_B4_201 0
|
||||||
{BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
|
{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, 2, 1, 1, 1, 2, 2,
|
||||||
|
@ -183,7 +183,7 @@ static gint box_clock_4b[][4 * 10] = {
|
||||||
BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1},
|
BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint box_clock_8b[][8 * 10] = {
|
static const gint box_clock_8b[][8 * 10] = {
|
||||||
#define WIPE_B8_261 0
|
#define WIPE_B8_261 0
|
||||||
{BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1,
|
{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, 4, 1, 1, 2, 0, 2,
|
||||||
|
@ -222,7 +222,7 @@ static gint box_clock_8b[][8 * 10] = {
|
||||||
BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2},
|
BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint triangles_2t[][2 * 9] = {
|
static const gint triangles_2t[][2 * 9] = {
|
||||||
/* 3 -> 6 */
|
/* 3 -> 6 */
|
||||||
#define WIPE_T2_3 0
|
#define WIPE_T2_3 0
|
||||||
{0, 0, 0, 0, 1, 1, 1, 1, 1,
|
{0, 0, 0, 0, 1, 1, 1, 1, 1,
|
||||||
|
@ -256,7 +256,7 @@ static gint triangles_2t[][2 * 9] = {
|
||||||
2, 0, 0, 2, 2, 0, 0, 2, 1},
|
2, 0, 0, 2, 2, 0, 0, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint triangles_3t[][3 * 9] = {
|
static const gint triangles_3t[][3 * 9] = {
|
||||||
/* 23 -> 26 */
|
/* 23 -> 26 */
|
||||||
#define WIPE_T3_23 0
|
#define WIPE_T3_23 0
|
||||||
{0, 0, 1, 1, 0, 0, 0, 2, 1,
|
{0, 0, 1, 1, 0, 0, 0, 2, 1,
|
||||||
|
@ -276,7 +276,7 @@ static gint triangles_3t[][3 * 9] = {
|
||||||
0, 1, 0, 0, 2, 1, 2, 2, 1},
|
0, 1, 0, 0, 2, 1, 2, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint triangles_4t[][4 * 9] = {
|
static const gint triangles_4t[][4 * 9] = {
|
||||||
#define WIPE_T4_61 0
|
#define WIPE_T4_61 0
|
||||||
{0, 0, 1, 1, 0, 0, 1, 2, 1,
|
{0, 0, 1, 1, 0, 0, 1, 2, 1,
|
||||||
0, 0, 1, 0, 2, 2, 1, 2, 1,
|
0, 0, 1, 0, 2, 2, 1, 2, 1,
|
||||||
|
@ -324,7 +324,7 @@ static gint triangles_4t[][4 * 9] = {
|
||||||
2, 0, 1, 1, 1, 0, 2, 2, 1},
|
2, 0, 1, 1, 1, 0, 2, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint triangles_8t[][8 * 9] = {
|
static const gint triangles_8t[][8 * 9] = {
|
||||||
/* 7 */
|
/* 7 */
|
||||||
#define WIPE_T8_7 0
|
#define WIPE_T8_7 0
|
||||||
{0, 0, 0, 1, 0, 1, 1, 1, 1,
|
{0, 0, 0, 1, 0, 1, 1, 1, 1,
|
||||||
|
@ -373,7 +373,7 @@ static gint triangles_8t[][8 * 9] = {
|
||||||
2, 1, 0, 1, 2, 0, 2, 2, 1},
|
2, 1, 0, 1, 2, 0, 2, 2, 1},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint triangles_16t[][16 * 9] = {
|
static const gint triangles_16t[][16 * 9] = {
|
||||||
/* 8 */
|
/* 8 */
|
||||||
#define WIPE_T16_8 0
|
#define WIPE_T16_8 0
|
||||||
{0, 0, 1, 2, 0, 1, 1, 1, 0,
|
{0, 0, 1, 2, 0, 1, 1, 1, 0,
|
||||||
|
@ -398,14 +398,14 @@ typedef struct _GstWipeConfig GstWipeConfig;
|
||||||
|
|
||||||
struct _GstWipeConfig
|
struct _GstWipeConfig
|
||||||
{
|
{
|
||||||
gint *objects;
|
const gint *objects;
|
||||||
gint nobjects;
|
gint nobjects;
|
||||||
gint xscale;
|
gint xscale;
|
||||||
gint yscale;
|
gint yscale;
|
||||||
gint cscale;
|
gint cscale;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GstWipeConfig wipe_config[] = {
|
static const GstWipeConfig wipe_config[] = {
|
||||||
#define WIPE_CONFIG_1 0
|
#define WIPE_CONFIG_1 0
|
||||||
{boxes_1b[WIPE_B1_1], 1, 0, 0, 0}, /* 1 */
|
{boxes_1b[WIPE_B1_1], 1, 0, 0, 0}, /* 1 */
|
||||||
#define WIPE_CONFIG_2 WIPE_CONFIG_1+1
|
#define WIPE_CONFIG_2 WIPE_CONFIG_1+1
|
||||||
|
@ -554,8 +554,8 @@ static GstWipeConfig wipe_config[] = {
|
||||||
static void
|
static void
|
||||||
gst_wipe_boxes_draw (GstMask * mask)
|
gst_wipe_boxes_draw (GstMask * mask)
|
||||||
{
|
{
|
||||||
GstWipeConfig *config = mask->user_data;
|
const GstWipeConfig *config = mask->user_data;
|
||||||
gint *impacts = config->objects;
|
const gint *impacts = config->objects;
|
||||||
gint width = (mask->width >> config->xscale);
|
gint width = (mask->width >> config->xscale);
|
||||||
gint height = (mask->height >> config->yscale);
|
gint height = (mask->height >> config->yscale);
|
||||||
gint depth = (1 << mask->bpp) >> config->cscale;
|
gint depth = (1 << mask->bpp) >> config->cscale;
|
||||||
|
@ -565,22 +565,35 @@ gst_wipe_boxes_draw (GstMask * mask)
|
||||||
for (i = 0; i < config->nobjects; i++) {
|
for (i = 0; i < config->nobjects; i++) {
|
||||||
switch (impacts[0]) {
|
switch (impacts[0]) {
|
||||||
case BOX_VERTICAL:
|
case BOX_VERTICAL:
|
||||||
|
/* vbox does not draw last pixels */
|
||||||
gst_smpte_paint_vbox (mask->data, mask->width,
|
gst_smpte_paint_vbox (mask->data, mask->width,
|
||||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||||
impacts += 7;
|
impacts += 7;
|
||||||
break;
|
break;
|
||||||
case BOX_HORIZONTAL:
|
case BOX_HORIZONTAL:
|
||||||
|
/* hbox does not draw last pixels */
|
||||||
gst_smpte_paint_hbox (mask->data, mask->width,
|
gst_smpte_paint_hbox (mask->data, mask->width,
|
||||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
||||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
impacts[4] * width, impacts[5] * height, impacts[6] * depth);
|
||||||
impacts += 7;
|
impacts += 7;
|
||||||
case BOX_CLOCK:
|
case BOX_CLOCK:
|
||||||
|
{
|
||||||
|
gint x0, y0, x1, y1, x2, y2;
|
||||||
|
|
||||||
|
/* make sure not to draw outside the area */
|
||||||
|
x0 = MIN (impacts[1] * width, mask->width - 1);
|
||||||
|
y0 = MIN (impacts[2] * height, mask->height - 1);
|
||||||
|
x1 = MIN (impacts[4] * width, mask->width - 1);
|
||||||
|
y1 = MIN (impacts[5] * height, mask->height - 1);
|
||||||
|
x2 = MIN (impacts[7] * width, mask->width - 1);
|
||||||
|
y2 = MIN (impacts[8] * height, mask->height - 1);
|
||||||
|
|
||||||
gst_smpte_paint_box_clock (mask->data, mask->width,
|
gst_smpte_paint_box_clock (mask->data, mask->width,
|
||||||
impacts[1] * width, impacts[2] * height, impacts[3] * depth,
|
x0, y0, impacts[3] * depth, x1, y1, impacts[6] * depth,
|
||||||
impacts[4] * width, impacts[5] * height, impacts[6] * depth,
|
x2, y2, impacts[9] * depth);
|
||||||
impacts[7] * width, impacts[8] * height, impacts[9] * depth);
|
|
||||||
impacts += 10;
|
impacts += 10;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -590,18 +603,27 @@ gst_wipe_boxes_draw (GstMask * mask)
|
||||||
static void
|
static void
|
||||||
gst_wipe_triangles_clock_draw (GstMask * mask)
|
gst_wipe_triangles_clock_draw (GstMask * mask)
|
||||||
{
|
{
|
||||||
GstWipeConfig *config = mask->user_data;
|
const GstWipeConfig *config = mask->user_data;
|
||||||
gint *impacts = config->objects;
|
const gint *impacts = config->objects;
|
||||||
gint width = (mask->width >> config->xscale);
|
gint width = (mask->width >> config->xscale);
|
||||||
gint height = (mask->height >> config->yscale);
|
gint height = (mask->height >> config->yscale);
|
||||||
gint depth = (1 << mask->bpp) >> config->cscale;
|
gint depth = (1 << mask->bpp) >> config->cscale;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
for (i = 0; i < config->nobjects; i++) {
|
for (i = 0; i < config->nobjects; i++) {
|
||||||
|
gint x0, y0, x1, y1, x2, y2;
|
||||||
|
|
||||||
|
/* make sure not to draw outside the area */
|
||||||
|
x0 = MIN (impacts[0] * width, mask->width - 1);
|
||||||
|
y0 = MIN (impacts[1] * height, mask->height - 1);
|
||||||
|
x1 = MIN (impacts[3] * width, mask->width - 1);
|
||||||
|
y1 = MIN (impacts[4] * height, mask->height - 1);
|
||||||
|
x2 = MIN (impacts[6] * width, mask->width - 1);
|
||||||
|
y2 = MIN (impacts[7] * height, mask->height - 1);
|
||||||
|
|
||||||
gst_smpte_paint_triangle_clock (mask->data, mask->width,
|
gst_smpte_paint_triangle_clock (mask->data, mask->width,
|
||||||
impacts[0] * width, impacts[1] * height, impacts[2] * depth,
|
x0, y0, impacts[2] * depth, x1, y1, impacts[5] * depth,
|
||||||
impacts[3] * width, impacts[4] * height, impacts[5] * depth,
|
x2, y2, impacts[8] * depth);
|
||||||
impacts[6] * width, impacts[7] * height, impacts[8] * depth);
|
|
||||||
impacts += 9;
|
impacts += 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -609,8 +631,8 @@ gst_wipe_triangles_clock_draw (GstMask * mask)
|
||||||
static void
|
static void
|
||||||
gst_wipe_triangles_draw (GstMask * mask)
|
gst_wipe_triangles_draw (GstMask * mask)
|
||||||
{
|
{
|
||||||
GstWipeConfig *config = mask->user_data;
|
const GstWipeConfig *config = mask->user_data;
|
||||||
gint *impacts = config->objects;
|
const gint *impacts = config->objects;
|
||||||
gint width = (mask->width >> config->xscale);
|
gint width = (mask->width >> config->xscale);
|
||||||
gint height = (mask->height >> config->yscale);
|
gint height = (mask->height >> config->yscale);
|
||||||
gint depth = (1 << mask->bpp) >> config->cscale;
|
gint depth = (1 << mask->bpp) >> config->cscale;
|
||||||
|
@ -618,15 +640,24 @@ gst_wipe_triangles_draw (GstMask * mask)
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
for (i = 0; i < config->nobjects; i++) {
|
for (i = 0; i < config->nobjects; i++) {
|
||||||
|
gint x0, y0, x1, y1, x2, y2;
|
||||||
|
|
||||||
|
/* make sure not to draw outside the area */
|
||||||
|
x0 = MIN (impacts[0] * width, mask->width - 1);
|
||||||
|
y0 = MIN (impacts[1] * height, mask->height - 1);
|
||||||
|
x1 = MIN (impacts[3] * width, mask->width - 1);
|
||||||
|
y1 = MIN (impacts[4] * height, mask->height - 1);
|
||||||
|
x2 = MIN (impacts[6] * width, mask->width - 1);
|
||||||
|
y2 = MIN (impacts[7] * height, mask->height - 1);
|
||||||
|
|
||||||
gst_smpte_paint_triangle_linear (mask->data, mask->width,
|
gst_smpte_paint_triangle_linear (mask->data, mask->width,
|
||||||
impacts[0] * width, impacts[1] * height, impacts[2] * depth,
|
x0, y0, impacts[2] * depth, x1, y1, impacts[5] * depth,
|
||||||
impacts[3] * width, impacts[4] * height, impacts[5] * depth,
|
x2, y2, impacts[8] * depth);
|
||||||
impacts[6] * width, impacts[7] * height, impacts[8] * depth);
|
|
||||||
impacts += 9;
|
impacts += 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstMaskDefinition definitions[] = {
|
static const GstMaskDefinition definitions[] = {
|
||||||
{1, "bar-wipe-lr",
|
{1, "bar-wipe-lr",
|
||||||
"A bar moves from left to right",
|
"A bar moves from left to right",
|
||||||
gst_wipe_boxes_draw, _gst_mask_default_destroy,
|
gst_wipe_boxes_draw, _gst_mask_default_destroy,
|
||||||
|
|
|
@ -41,10 +41,11 @@ gst_mask_compare (GstMaskDefinition * def1, GstMaskDefinition * def2)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gst_mask_register (GstMaskDefinition * definition)
|
_gst_mask_register (const GstMaskDefinition * definition)
|
||||||
{
|
{
|
||||||
masks =
|
masks =
|
||||||
g_list_insert_sorted (masks, definition, (GCompareFunc) gst_mask_compare);
|
g_list_insert_sorted (masks, (gpointer) definition,
|
||||||
|
(GCompareFunc) gst_mask_compare);
|
||||||
}
|
}
|
||||||
|
|
||||||
const GList *
|
const GList *
|
||||||
|
|
|
@ -31,17 +31,17 @@ typedef void (*GstMaskDestroyFunc) (GstMask *mask);
|
||||||
|
|
||||||
struct _GstMaskDefinition {
|
struct _GstMaskDefinition {
|
||||||
gint type;
|
gint type;
|
||||||
gchar *short_name;
|
const gchar *short_name;
|
||||||
gchar *long_name;
|
const gchar *long_name;
|
||||||
GstMaskDrawFunc draw_func;
|
GstMaskDrawFunc draw_func;
|
||||||
GstMaskDestroyFunc destroy_func;
|
GstMaskDestroyFunc destroy_func;
|
||||||
gpointer user_data;
|
gconstpointer user_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstMask {
|
struct _GstMask {
|
||||||
gint type;
|
gint type;
|
||||||
guint32 *data;
|
guint32 *data;
|
||||||
gpointer user_data;
|
gconstpointer user_data;
|
||||||
|
|
||||||
gint width;
|
gint width;
|
||||||
gint height;
|
gint height;
|
||||||
|
@ -51,7 +51,7 @@ struct _GstMask {
|
||||||
};
|
};
|
||||||
|
|
||||||
void _gst_mask_init (void);
|
void _gst_mask_init (void);
|
||||||
void _gst_mask_register (GstMaskDefinition *definition);
|
void _gst_mask_register (const GstMaskDefinition *definition);
|
||||||
|
|
||||||
void _gst_mask_default_destroy (GstMask *mask);
|
void _gst_mask_default_destroy (GstMask *mask);
|
||||||
|
|
||||||
|
|
|
@ -280,6 +280,13 @@ gst_smpte_update_mask (GstSMPTE * smpte, gint type, gint depth, gint width,
|
||||||
{
|
{
|
||||||
GstMask *newmask;
|
GstMask *newmask;
|
||||||
|
|
||||||
|
if (smpte->mask) {
|
||||||
|
if (smpte->type == type &&
|
||||||
|
smpte->depth == depth &&
|
||||||
|
smpte->width == width && smpte->height == height)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
newmask = gst_mask_factory_new (type, depth, width, height);
|
newmask = gst_mask_factory_new (type, depth, width, height);
|
||||||
if (newmask) {
|
if (newmask) {
|
||||||
if (smpte->mask) {
|
if (smpte->mask) {
|
||||||
|
|
|
@ -65,8 +65,6 @@ gst_smpte_paint_hbox (guint32 * dest, gint stride,
|
||||||
g_assert (width > 0);
|
g_assert (width > 0);
|
||||||
g_assert (height > 0);
|
g_assert (height > 0);
|
||||||
|
|
||||||
g_print ("vbox: %d %d %d %d %d %d\n", x0, y0, c0, x1, y1, c1);
|
|
||||||
|
|
||||||
dest = dest + y0 * stride + x0;
|
dest = dest + y0 * stride + x0;
|
||||||
|
|
||||||
for (i = 0; i < height; i++) {
|
for (i = 0; i < height; i++) {
|
||||||
|
@ -219,11 +217,13 @@ static void
|
||||||
draw_bresenham_line (guint32 * dest, gint stride,
|
draw_bresenham_line (guint32 * dest, gint stride,
|
||||||
gint x0, gint y0, gint x1, gint y1, guint32 col)
|
gint x0, gint y0, gint x1, gint y1, guint32 col)
|
||||||
{
|
{
|
||||||
gint dx = abs (x1 - x0);
|
gint dx, dy;
|
||||||
gint dy = abs (y1 - y0);
|
|
||||||
gint x_incr, y_incr;
|
gint x_incr, y_incr;
|
||||||
gint i, dpr, dpru, P, indep;
|
gint i, dpr, dpru, P, indep;
|
||||||
|
|
||||||
|
dx = abs (x1 - x0);
|
||||||
|
dy = abs (y1 - y0);
|
||||||
|
|
||||||
dest = dest + y0 * stride + x0;
|
dest = dest + y0 * stride + x0;
|
||||||
|
|
||||||
x_incr = SIGN (x1 - x0);
|
x_incr = SIGN (x1 - x0);
|
||||||
|
@ -301,6 +301,9 @@ gst_smpte_paint_triangle_clock (guint32 * dest, gint stride,
|
||||||
draw_bresenham_line (dest, stride,
|
draw_bresenham_line (dest, stride,
|
||||||
x0, y0, i, y1, (c2 * angle + c1 * (1.0 - angle)));
|
x0, y0, i, y1, (c2 * angle + c1 * (1.0 - angle)));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
g_warning ("paint triangle clock: not supported");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue