From 909f7b0c14d6e3e3674a9fde08d2746704b236f0 Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 27 Feb 2009 23:06:34 +0000 Subject: Allow shadow without border. Patch by Grigori G (greg chown ath cx). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28748 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_render.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'libass/ass_render.c') diff --git a/libass/ass_render.c b/libass/ass_render.c index afd6e8f2fa..6e3bb4034b 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -581,12 +581,9 @@ static void change_border(double border) if (!render_context.font) return; if (border < 0) { - if (render_context.style->BorderStyle == 1) { - if (render_context.style->Outline == 0 && render_context.style->Shadow > 0) - border = 1.; - else - border = render_context.style->Outline; - } else + if (render_context.style->BorderStyle == 1) + border = render_context.style->Outline; + else border = 1.; } render_context.border = border; -- cgit v1.2.3 From a1f50bf3484c4dff9ee562a7d7ca206c4eda37fc Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 27 Feb 2009 23:06:43 +0000 Subject: Fix two gcc warnings. Patch by Grigori G (greg chown ath cx). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28751 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libass/ass_render.c') diff --git a/libass/ass_render.c b/libass/ass_render.c index 6e3bb4034b..d083eef07c 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1144,7 +1144,7 @@ static unsigned get_next_char(char** str) return ' '; } } - chr = utf8_get_char(&p); + chr = utf8_get_char((const char **)&p); *str = p; return chr; } @@ -2043,7 +2043,7 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images) center.x = x2scr(render_context.org_x); center.y = y2scr(render_context.org_y); } else { - int bx, by; + int bx = 0, by = 0; get_base_point(bbox, alignment, &bx, &by); center.x = device_x + bx; center.y = device_y + by; -- cgit v1.2.3 From 00d6bb12b9c499db81d2e2599fcbc63424d833d3 Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 27 Feb 2009 23:06:47 +0000 Subject: Support fractional arguments for some override tags. Done by parsing all integers as doubles first and then converting them to the nearest integer. Patch by Grigori G (greg chown ath cx). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28752 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_render.c | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'libass/ass_render.c') diff --git a/libass/ass_render.c b/libass/ass_render.c index d083eef07c..a4912724cf 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -781,18 +781,18 @@ static char* parse_tag(char* p, double pwr) { double x, y; double k; skip('('); - x1 = strtol(p, &p, 10); + mystrtoi(&p, 10, &x1); skip(','); - y1 = strtol(p, &p, 10); + mystrtoi(&p, 10, &y1); skip(','); - x2 = strtol(p, &p, 10); + mystrtoi(&p, 10, &x2); skip(','); - y2 = strtol(p, &p, 10); + mystrtoi(&p, 10, &y2); if (*p == ',') { skip(','); - t1 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t1); skip(','); - t2 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t2); mp_msg(MSGT_ASS, MSGL_DBG2, "movement6: (%d, %d) -> (%d, %d), (%" PRId64 " .. %" PRId64 ")\n", x1, y1, x2, y2, (int64_t)t1, (int64_t)t2); } else { @@ -886,9 +886,9 @@ static char* parse_tag(char* p, double pwr) { } else if (mystrcmp(&p, "pos")) { int v1, v2; skip('('); - v1 = strtol(p, &p, 10); + mystrtoi(&p, 10, &v1); skip(','); - v2 = strtol(p, &p, 10); + mystrtoi(&p, 10, &v2); skip(')'); mp_msg(MSGT_ASS, MSGL_DBG2, "pos(%d, %d)\n", v1, v2); if (render_context.evt_type != EVENT_POSITIONED) { @@ -902,9 +902,9 @@ static char* parse_tag(char* p, double pwr) { long long t1, t2, t3, t4; if (*p == 'e') ++p; // either \fad or \fade skip('('); - a1 = strtol(p, &p, 10); + mystrtoi(&p, 10, &a1); skip(','); - a2 = strtol(p, &p, 10); + mystrtoi(&p, 10, &a2); if (*p == ')') { // 2-argument version (\fad, according to specs) // a1 and a2 are fade-in and fade-out durations @@ -919,24 +919,24 @@ static char* parse_tag(char* p, double pwr) { // 6-argument version (\fade) // a1 and a2 (and a3) are opacity values skip(','); - a3 = strtol(p, &p, 10); + mystrtoi(&p, 10, &a3); skip(','); - t1 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t1); skip(','); - t2 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t2); skip(','); - t3 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t3); skip(','); - t4 = strtoll(p, &p, 10); + mystrtoll(&p, 10, &t4); } skip(')'); render_context.fade = interpolate_alpha(frame_context.time - render_context.event->Start, t1, t2, t3, t4, a1, a2, a3); } else if (mystrcmp(&p, "org")) { int v1, v2; skip('('); - v1 = strtol(p, &p, 10); + mystrtoi(&p, 10, &v1); skip(','); - v2 = strtol(p, &p, 10); + mystrtoi(&p, 10, &v2); skip(')'); mp_msg(MSGT_ASS, MSGL_DBG2, "org(%d, %d)\n", v1, v2); // render_context.evt_type = EVENT_POSITIONED; @@ -1063,19 +1063,22 @@ static char* parse_tag(char* p, double pwr) { render_context.italic = render_context.style->Italic; update_font(); } else if (mystrcmp(&p, "kf") || mystrcmp(&p, "K")) { - int val = strtol(p, &p, 10); + int val = 0; + mystrtoi(&p, 10, &val); render_context.effect_type = EF_KARAOKE_KF; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; render_context.effect_timing = val * 10; } else if (mystrcmp(&p, "ko")) { - int val = strtol(p, &p, 10); + int val = 0; + mystrtoi(&p, 10, &val); render_context.effect_type = EF_KARAOKE_KO; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; render_context.effect_timing = val * 10; } else if (mystrcmp(&p, "k")) { - int val = strtol(p, &p, 10); + int val = 0; + mystrtoi(&p, 10, &val); render_context.effect_type = EF_KARAOKE; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; @@ -1087,7 +1090,8 @@ static char* parse_tag(char* p, double pwr) { else render_context.shadow = render_context.style->Shadow; } else if (mystrcmp(&p, "pbo")) { - (void)strtol(p, &p, 10); // ignored + int val = 0; + mystrtoi(&p, 10, &val); // ignored } else if (mystrcmp(&p, "p")) { int val; if (!mystrtoi(&p, 10, &val)) -- cgit v1.2.3 From 69ce550ee038d7babc341637e5adb130b9750e4e Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 27 Feb 2009 23:06:50 +0000 Subject: Remove unused function argument. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28753 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_render.c | 80 ++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) (limited to 'libass/ass_render.c') diff --git a/libass/ass_render.c b/libass/ass_render.c index a4912724cf..5cab560e50 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -702,31 +702,31 @@ static char* parse_tag(char* p, double pwr) { mp_msg(MSGT_ASS, MSGL_V, "stub: \\ybord%.2f\n", val); } else if (mystrcmp(&p, "xshad")) { int val; - if (mystrtoi(&p, 10, &val)) + if (mystrtoi(&p, &val)) mp_msg(MSGT_ASS, MSGL_V, "stub: \\xshad%d\n", val); } else if (mystrcmp(&p, "yshad")) { int val; - if (mystrtoi(&p, 10, &val)) + if (mystrtoi(&p, &val)) mp_msg(MSGT_ASS, MSGL_V, "stub: \\yshad%d\n", val); } else if (mystrcmp(&p, "fax")) { int val; - if (mystrtoi(&p, 10, &val)) + if (mystrtoi(&p, &val)) mp_msg(MSGT_ASS, MSGL_V, "stub: \\fax%d\n", val); } else if (mystrcmp(&p, "fay")) { int val; - if (mystrtoi(&p, 10, &val)) + if (mystrtoi(&p, &val)) mp_msg(MSGT_ASS, MSGL_V, "stub: \\fay%d\n", val); } else if (mystrcmp(&p, "iclip")) { int x0, y0, x1, y1; int res = 1; skip('('); - res &= mystrtoi(&p, 10, &x0); + res &= mystrtoi(&p, &x0); skip(','); - res &= mystrtoi(&p, 10, &y0); + res &= mystrtoi(&p, &y0); skip(','); - res &= mystrtoi(&p, 10, &x1); + res &= mystrtoi(&p, &x1); skip(','); - res &= mystrtoi(&p, 10, &y1); + res &= mystrtoi(&p, &y1); skip(')'); mp_msg(MSGT_ASS, MSGL_V, "stub: \\iclip(%d,%d,%d,%d)\n", x0, y0, x1, y1); } else if (mystrcmp(&p, "blur")) { @@ -781,18 +781,18 @@ static char* parse_tag(char* p, double pwr) { double x, y; double k; skip('('); - mystrtoi(&p, 10, &x1); + mystrtoi(&p, &x1); skip(','); - mystrtoi(&p, 10, &y1); + mystrtoi(&p, &y1); skip(','); - mystrtoi(&p, 10, &x2); + mystrtoi(&p, &x2); skip(','); - mystrtoi(&p, 10, &y2); + mystrtoi(&p, &y2); if (*p == ',') { skip(','); - mystrtoll(&p, 10, &t1); + mystrtoll(&p, &t1); skip(','); - mystrtoll(&p, 10, &t2); + mystrtoll(&p, &t2); mp_msg(MSGT_ASS, MSGL_DBG2, "movement6: (%d, %d) -> (%d, %d), (%" PRId64 " .. %" PRId64 ")\n", x1, y1, x2, y2, (int64_t)t1, (int64_t)t2); } else { @@ -867,7 +867,7 @@ static char* parse_tag(char* p, double pwr) { // FIXME: simplify } else if (mystrcmp(&p, "an")) { int val; - if (mystrtoi(&p, 10, &val) && val) { + if (mystrtoi(&p, &val) && val) { int v = (val - 1) / 3; // 0, 1 or 2 for vertical alignment mp_msg(MSGT_ASS, MSGL_DBG2, "an %d\n", val); if (v != 0) v = 3 - v; @@ -879,16 +879,16 @@ static char* parse_tag(char* p, double pwr) { render_context.alignment = render_context.style->Alignment; } else if (mystrcmp(&p, "a")) { int val; - if (mystrtoi(&p, 10, &val) && val) + if (mystrtoi(&p, &val) && val) render_context.alignment = val; else render_context.alignment = render_context.style->Alignment; } else if (mystrcmp(&p, "pos")) { int v1, v2; skip('('); - mystrtoi(&p, 10, &v1); + mystrtoi(&p, &v1); skip(','); - mystrtoi(&p, 10, &v2); + mystrtoi(&p, &v2); skip(')'); mp_msg(MSGT_ASS, MSGL_DBG2, "pos(%d, %d)\n", v1, v2); if (render_context.evt_type != EVENT_POSITIONED) { @@ -902,9 +902,9 @@ static char* parse_tag(char* p, double pwr) { long long t1, t2, t3, t4; if (*p == 'e') ++p; // either \fad or \fade skip('('); - mystrtoi(&p, 10, &a1); + mystrtoi(&p, &a1); skip(','); - mystrtoi(&p, 10, &a2); + mystrtoi(&p, &a2); if (*p == ')') { // 2-argument version (\fad, according to specs) // a1 and a2 are fade-in and fade-out durations @@ -919,24 +919,24 @@ static char* parse_tag(char* p, double pwr) { // 6-argument version (\fade) // a1 and a2 (and a3) are opacity values skip(','); - mystrtoi(&p, 10, &a3); + mystrtoi(&p, &a3); skip(','); - mystrtoll(&p, 10, &t1); + mystrtoll(&p, &t1); skip(','); - mystrtoll(&p, 10, &t2); + mystrtoll(&p, &t2); skip(','); - mystrtoll(&p, 10, &t3); + mystrtoll(&p, &t3); skip(','); - mystrtoll(&p, 10, &t4); + mystrtoll(&p, &t4); } skip(')'); render_context.fade = interpolate_alpha(frame_context.time - render_context.event->Start, t1, t2, t3, t4, a1, a2, a3); } else if (mystrcmp(&p, "org")) { int v1, v2; skip('('); - mystrtoi(&p, 10, &v1); + mystrtoi(&p, &v1); skip(','); - mystrtoi(&p, 10, &v2); + mystrtoi(&p, &v2); skip(')'); mp_msg(MSGT_ASS, MSGL_DBG2, "org(%d, %d)\n", v1, v2); // render_context.evt_type = EVENT_POSITIONED; @@ -990,13 +990,13 @@ static char* parse_tag(char* p, double pwr) { int x0, y0, x1, y1; int res = 1; skip('('); - res &= mystrtoi(&p, 10, &x0); + res &= mystrtoi(&p, &x0); skip(','); - res &= mystrtoi(&p, 10, &y0); + res &= mystrtoi(&p, &y0); skip(','); - res &= mystrtoi(&p, 10, &x1); + res &= mystrtoi(&p, &x1); skip(','); - res &= mystrtoi(&p, 10, &y1); + res &= mystrtoi(&p, &y1); skip(')'); if (res) { render_context.clip_x0 = render_context.clip_x0 * (1-pwr) + x0 * pwr; @@ -1039,7 +1039,7 @@ static char* parse_tag(char* p, double pwr) { reset_render_context(); } else if (mystrcmp(&p, "be")) { int val; - if (mystrtoi(&p, 10, &val)) { + if (mystrtoi(&p, &val)) { // Clamp to 10, since high values need excessive CPU val = (val < 0) ? 0 : val; val = (val > 10) ? 10 : val; @@ -1048,7 +1048,7 @@ static char* parse_tag(char* p, double pwr) { render_context.be = 0; } else if (mystrcmp(&p, "b")) { int b; - if (mystrtoi(&p, 10, &b)) { + if (mystrtoi(&p, &b)) { if (pwr >= .5) render_context.bold = b; } else @@ -1056,7 +1056,7 @@ static char* parse_tag(char* p, double pwr) { update_font(); } else if (mystrcmp(&p, "i")) { int i; - if (mystrtoi(&p, 10, &i)) { + if (mystrtoi(&p, &i)) { if (pwr >= .5) render_context.italic = i; } else @@ -1064,37 +1064,37 @@ static char* parse_tag(char* p, double pwr) { update_font(); } else if (mystrcmp(&p, "kf") || mystrcmp(&p, "K")) { int val = 0; - mystrtoi(&p, 10, &val); + mystrtoi(&p, &val); render_context.effect_type = EF_KARAOKE_KF; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; render_context.effect_timing = val * 10; } else if (mystrcmp(&p, "ko")) { int val = 0; - mystrtoi(&p, 10, &val); + mystrtoi(&p, &val); render_context.effect_type = EF_KARAOKE_KO; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; render_context.effect_timing = val * 10; } else if (mystrcmp(&p, "k")) { int val = 0; - mystrtoi(&p, 10, &val); + mystrtoi(&p, &val); render_context.effect_type = EF_KARAOKE; if (render_context.effect_timing) render_context.effect_skip_timing += render_context.effect_timing; render_context.effect_timing = val * 10; } else if (mystrcmp(&p, "shad")) { int val; - if (mystrtoi(&p, 10, &val)) + if (mystrtoi(&p, &val)) render_context.shadow = val; else render_context.shadow = render_context.style->Shadow; } else if (mystrcmp(&p, "pbo")) { int val = 0; - mystrtoi(&p, 10, &val); // ignored + mystrtoi(&p, &val); // ignored } else if (mystrcmp(&p, "p")) { int val; - if (!mystrtoi(&p, 10, &val)) + if (!mystrtoi(&p, &val)) val = 0; render_context.drawing_mode = !!val; } -- cgit v1.2.3 From 15ed6e01992e071a88674be5e3ce6be121e98555 Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 27 Feb 2009 23:06:53 +0000 Subject: Zero-fill glyph_info_t before use. Patch by Grigori G (greg chown ath cx). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28754 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_render.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libass/ass_render.c') diff --git a/libass/ass_render.c b/libass/ass_render.c index 5cab560e50..ead118ddde 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1310,7 +1310,7 @@ static void get_outline_glyph(int symbol, glyph_info_t* info, FT_Vector* advance key.italic = render_context.italic; key.outline = render_context.border * 0xFFFF; - info->glyph = info->outline_glyph = 0; + memset(info, 0, sizeof(glyph_info_t)); val = cache_find_glyph(&key); if (val) { -- cgit v1.2.3