summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
authorgreg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-03-05 20:36:48 +0000
committergreg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-03-05 20:36:48 +0000
commit2432bbd43d0dc22af0a5f57d2921448ed76a53c4 (patch)
tree1b7bf1d65c59f2dda7ba292c301308a57565b589 /libass
parenta2b82120c0ad97811a8db3212a3a6589b98bd04f (diff)
downloadmpv-2432bbd43d0dc22af0a5f57d2921448ed76a53c4.tar.bz2
mpv-2432bbd43d0dc22af0a5f57d2921448ed76a53c4.tar.xz
Support ScaledBorderAndShadow property.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28820 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-rw-r--r--libass/ass.c2
-rw-r--r--libass/ass_render.c5
-rw-r--r--libass/ass_types.h1
-rw-r--r--libass/ass_utils.c11
-rw-r--r--libass/ass_utils.h1
5 files changed, 19 insertions, 1 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 8022dfc9be..e1be966b65 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -520,6 +520,8 @@ static int process_info_line(ass_track_t* track, char *str)
track->Timer = atof(str + 6);
} else if (!strncmp(str,"WrapStyle:", 10)) {
track->WrapStyle = atoi(str + 10);
+ } else if (!strncmp(str, "ScaledBorderAndShadow:", 22)) {
+ track->ScaledBorderAndShadow = parse_bool(str + 22);
}
return 0;
}
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 399ca533cd..5371afa06d 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -2233,7 +2233,10 @@ static int ass_start_frame(ass_renderer_t *priv, ass_track_t* track, long long n
frame_context.font_scale = global_settings->font_size_coeff *
frame_context.orig_height / frame_context.track->PlayResY;
- frame_context.border_scale = ((double)frame_context.orig_height) / frame_context.track->PlayResY;
+ if (frame_context.track->ScaledBorderAndShadow)
+ frame_context.border_scale = ((double)frame_context.orig_height) / frame_context.track->PlayResY;
+ else
+ frame_context.border_scale = 1.;
frame_context.font_scale_x = 1.;
diff --git a/libass/ass_types.h b/libass/ass_types.h
index 870fab4caa..52aff0fb85 100644
--- a/libass/ass_types.h
+++ b/libass/ass_types.h
@@ -105,6 +105,7 @@ typedef struct ass_track_s {
int PlayResY;
double Timer;
int WrapStyle;
+ char ScaledBorderAndShadow;
int default_style; // index of default style
diff --git a/libass/ass_utils.c b/libass/ass_utils.c
index 25e4d4fe7b..7f728f1bb1 100644
--- a/libass/ass_utils.c
+++ b/libass/ass_utils.c
@@ -96,6 +96,17 @@ int strtocolor(char** q, uint32_t* res)
return result;
}
+// Return a boolean value for a string
+char parse_bool(char* str) {
+ while (*str == ' ' || *str == '\t')
+ str++;
+ if (!strncasecmp(str, "yes", 3))
+ return 1;
+ else if (strtol(str, NULL, 10) > 0)
+ return 1;
+ return 0;
+}
+
#if 0
static void sprint_tag(uint32_t tag, char* dst)
{
diff --git a/libass/ass_utils.h b/libass/ass_utils.h
index f37bc0edc1..8c5f3e8f49 100644
--- a/libass/ass_utils.h
+++ b/libass/ass_utils.h
@@ -30,6 +30,7 @@ int mystrtoll(char** p, long long* res);
int mystrtou32(char** p, int base, uint32_t* res);
int mystrtod(char** p, double* res);
int strtocolor(char** q, uint32_t* res);
+char parse_bool(char* str);
static inline int d6_to_int(int x) {
return (x + 32) >> 6;