]> granicus.if.org Git - libass/commitdiff
Support ScaledBorderAndShadow property.
authorgreg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2>
Thu, 5 Mar 2009 20:36:48 +0000 (20:36 +0000)
committergreg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2>
Thu, 5 Mar 2009 20:36:48 +0000 (20:36 +0000)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28820 b3059339-0415-0410-9bf9-f77b7e298cf2

libass/ass.c
libass/ass_render.c
libass/ass_types.h
libass/ass_utils.c
libass/ass_utils.h

index 8022dfc9be1cc4c717fa7eedd53ee43a02a9d3de..e1be966b6589d9a0a38f99d4aae3adc460883328 100644 (file)
@@ -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;
 }
index 399ca533cd1c6251237f6c5c535fbe321d44bc54..5371afa06d7e4ad950266617b2cd891bb3941df1 100644 (file)
@@ -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.;
 
index 870fab4caa76db27b22b8094d3d3b5d0167f7eea..52aff0fb851a6f342f5430cb742e0f9231c7035b 100644 (file)
@@ -105,6 +105,7 @@ typedef struct ass_track_s {
        int PlayResY;
        double Timer;
        int WrapStyle;
+       char ScaledBorderAndShadow;
 
        
        int default_style; // index of default style
index 25e4d4fe7b1df402fc2ae72a41639a4f94e7ebc7..7f728f1bb1031ed9132c4bab900cad5244364c25 100644 (file)
@@ -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)
 {
index f37bc0edc1f21b38be02aee2cfbf641b0bb00543..8c5f3e8f49a1cee3f446c050b415cee4a9a36f9e 100644 (file)
@@ -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;