vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Nov 27 10:16:23 2017 +0100| [b48a35bfafac382b97af42a9e3b40a65c4c67517] | committer: Francois Cartegnie
vout: DrawRect/Triangle: pass color as param > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b48a35bfafac382b97af42a9e3b40a65c4c67517 --- src/video_output/video_widgets.c | 67 +++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/src/video_output/video_widgets.c b/src/video_output/video_widgets.c index 201f90773c..61c7dcc75e 100644 --- a/src/video_output/video_widgets.c +++ b/src/video_output/video_widgets.c @@ -39,11 +39,14 @@ #define STYLE_EMPTY 0 #define STYLE_FILLED 1 +#define COL_TRANSPARENT 0 +#define COL_WHITE 1 + /** * Draws a rectangle at the given position in the region. * It may be filled (fill == STYLE_FILLED) or empty (fill == STYLE_EMPTY). */ -static void DrawRect(subpicture_region_t *r, int fill, +static void DrawRect(subpicture_region_t *r, int fill, uint8_t color, int x1, int y1, int x2, int y2) { uint8_t *p = r->p_picture->p->p_pixels; @@ -52,16 +55,16 @@ static void DrawRect(subpicture_region_t *r, int fill, if (fill == STYLE_FILLED) { for (int y = y1; y <= y2; y++) { for (int x = x1; x <= x2; x++) - p[x + pitch * y] = 1; + p[x + pitch * y] = color; } } else { for (int y = y1; y <= y2; y++) { - p[x1 + pitch * y] = 1; - p[x2 + pitch * y] = 1; + p[x1 + pitch * y] = color; + p[x2 + pitch * y] = color; } for (int x = x1; x <= x2; x++) { - p[x + pitch * y1] = 1; - p[x + pitch * y2] = 1; + p[x + pitch * y1] = color; + p[x + pitch * y2] = color; } } } @@ -70,7 +73,7 @@ static void DrawRect(subpicture_region_t *r, int fill, * Draws a triangle at the given position in the region. * It may be filled (fill == STYLE_FILLED) or empty (fill == STYLE_EMPTY). */ -static void DrawTriangle(subpicture_region_t *r, int fill, +static void DrawTriangle(subpicture_region_t *r, int fill, uint8_t color, int x1, int y1, int x2, int y2) { uint8_t *p = r->p_picture->p->p_pixels; @@ -83,17 +86,17 @@ static void DrawTriangle(subpicture_region_t *r, int fill, for (int y = y1; y <= mid; y++) { int h = y - y1; for (int x = x1; x <= x1 + h && x <= x2; x++) { - p[x + pitch * y ] = 1; - p[x + pitch * (y2 - h)] = 1; + p[x + pitch * y ] = color; + p[x + pitch * (y2 - h)] = color; } } } else { for (int y = y1; y <= mid; y++) { int h = y - y1; - p[x1 + pitch * y ] = 1; - p[x1 + h + pitch * y ] = 1; - p[x1 + pitch * (y2 - h)] = 1; - p[x1 + h + pitch * (y2 - h)] = 1; + p[x1 + pitch * y ] = color; + p[x1 + h + pitch * y ] = color; + p[x1 + pitch * (y2 - h)] = color; + p[x1 + h + pitch * (y2 - h)] = color; } } } else { @@ -101,17 +104,17 @@ static void DrawTriangle(subpicture_region_t *r, int fill, for (int y = y1; y <= mid; y++) { int h = y - y1; for (int x = x1; x >= x1 - h && x >= x2; x--) { - p[x + pitch * y ] = 1; - p[x + pitch * (y2 - h)] = 1; + p[x + pitch * y ] = color; + p[x + pitch * (y2 - h)] = color; } } } else { for (int y = y1; y <= mid; y++) { int h = y - y1; - p[ x1 + pitch * y ] = 1; - p[ x1 - h + pitch * y ] = 1; - p[ x1 + pitch * (y2 - h)] = 1; - p[ x1 - h + pitch * (y2 - h)] = 1; + p[ x1 + pitch * y ] = color; + p[ x1 - h + pitch * y ] = color; + p[ x1 + pitch * (y2 - h)] = color; + p[ x1 - h + pitch * (y2 - h)] = color; } } } @@ -125,8 +128,8 @@ static subpicture_region_t *OSDRegion(int x, int y, int width, int height) video_palette_t palette = { .i_entries = 2, .palette = { - [0] = { 0xff, 0x80, 0x80, 0x00 }, - [1] = { 0xff, 0x80, 0x80, 0xff }, + [COL_TRANSPARENT] = { 0xff, 0x80, 0x80, 0x00 }, + [COL_WHITE] = { 0xff, 0x80, 0x80, 0xff }, }, }; @@ -180,15 +183,15 @@ static subpicture_region_t *OSDSlider(int type, int position, if (type == OSD_HOR_SLIDER) { int pos_x = (width - 2) * position / 100; - DrawRect(r, STYLE_FILLED, pos_x - 1, 2, pos_x + 1, height - 3); - DrawRect(r, STYLE_EMPTY, 0, 0, width - 1, height - 1); + DrawRect(r, STYLE_FILLED, COL_WHITE, pos_x - 1, 2, pos_x + 1, height - 3); + DrawRect(r, STYLE_EMPTY, COL_WHITE, 0, 0, width - 1, height - 1); } else { int pos_mid = height / 2; int pos_y = height - (height - 2) * position / 100; - DrawRect(r, STYLE_FILLED, 2, pos_y, width - 3, height - 3); - DrawRect(r, STYLE_FILLED, 1, pos_mid, 1, pos_mid ); - DrawRect(r, STYLE_FILLED, width - 2, pos_mid, width - 2, pos_mid ); - DrawRect(r, STYLE_EMPTY, 0, 0, width - 1, height - 1); + DrawRect(r, STYLE_FILLED, COL_WHITE, 2, pos_y, width - 3, height - 3); + DrawRect(r, STYLE_FILLED, COL_WHITE, 1, pos_mid, 1, pos_mid ); + DrawRect(r, STYLE_FILLED, COL_WHITE, width - 2, pos_mid, width - 2, pos_mid ); + DrawRect(r, STYLE_EMPTY, COL_WHITE, 0, 0, width - 1, height - 1); } return r; } @@ -216,19 +219,19 @@ static subpicture_region_t *OSDIcon(int type, const video_format_t *fmt) if (type == OSD_PAUSE_ICON) { int bar_width = width / 3; - DrawRect(r, STYLE_FILLED, 0, 0, bar_width - 1, height -1); - DrawRect(r, STYLE_FILLED, width - bar_width, 0, width - 1, height - 1); + DrawRect(r, STYLE_FILLED, COL_WHITE, 0, 0, bar_width - 1, height -1); + DrawRect(r, STYLE_FILLED, COL_WHITE, width - bar_width, 0, width - 1, height - 1); } else if (type == OSD_PLAY_ICON) { int mid = height >> 1; int delta = (width - mid) >> 1; int y2 = ((height - 1) >> 1) * 2; - DrawTriangle(r, STYLE_FILLED, delta, 0, width - delta, y2); + DrawTriangle(r, STYLE_FILLED, COL_WHITE, delta, 0, width - delta, y2); } else { int mid = height >> 1; int delta = (width - mid) >> 1; int y2 = ((height - 1) >> 1) * 2; - DrawRect(r, STYLE_FILLED, delta, mid / 2, width - delta, height - 1 - mid / 2); - DrawTriangle(r, STYLE_FILLED, width - delta, 0, delta, y2); + DrawRect(r, STYLE_FILLED, COL_WHITE, delta, mid / 2, width - delta, height - 1 - mid / 2); + DrawTriangle(r, STYLE_FILLED, COL_WHITE, width - delta, 0, delta, y2); if (type == OSD_MUTE_ICON) { uint8_t *a = r->p_picture->A_PIXELS; int pitch = r->p_picture->A_PITCH; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
