diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-05-02 01:56:28 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-05-02 01:56:28 +0000 |
commit | 1ca2d5b055ed9b0e45b0f7e71b8833b66f222e49 (patch) | |
tree | 6999a1669f7ed83781a1cc66afa0db9abcd020df | |
parent | 2b96b208bf9c59dde029f25627997fa0db11a72f (diff) | |
download | mpv-1ca2d5b055ed9b0e45b0f7e71b8833b66f222e49.tar.bz2 mpv-1ca2d5b055ed9b0e45b0f7e71b8833b66f222e49.tar.xz |
.raw width>=65536 support by Georgi Georgiev <chutz@chubaka.homeip.net>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5929 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | TOOLS/subfont-c/subfont.c | 8 | ||||
-rw-r--r-- | libvo/font_load.c | 2 | ||||
-rw-r--r-- | libvo/font_load.h | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/TOOLS/subfont-c/subfont.c b/TOOLS/subfont-c/subfont.c index 15729fb38a..154eaffc3f 100644 --- a/TOOLS/subfont-c/subfont.c +++ b/TOOLS/subfont-c/subfont.c @@ -111,7 +111,15 @@ void write_header(FILE *f) { static unsigned char header[800] = "mhwanh"; int i; header[7] = 4; + if (width < 0x10000) { // are two bytes enough for the width? header[8] = width>>8; header[9] = (unsigned char)width; + } else { // store width using 4 bytes at the end of the header + header[8] = header[9] = 0; + header[28] = (width >> 030) & 0xFF; + header[29] = (width >> 020) & 0xFF; + header[30] = (width >> 010) & 0xFF; + header[31] = (width ) & 0xFF; + } header[10] = height>>8; header[11] = (unsigned char)height; header[12] = colors>>8; header[13] = (unsigned char)colors; for (i = 32; i<800; ++i) header[i] = (i-32)/3; diff --git a/libvo/font_load.c b/libvo/font_load.c index 672123bb86..4a35a5eb65 100644 --- a/libvo/font_load.c +++ b/libvo/font_load.c @@ -22,6 +22,8 @@ raw_file* load_raw(char *name,int verbose){ raw->w=head[8]*256+head[9]; raw->h=head[10]*256+head[11]; raw->c=head[12]*256+head[13]; + if(raw->w == 0) // 2 bytes were not enough for the width... read 4 bytes from the end of the header + raw->w = ((head[28]*0x100 + head[29])*0x100 + head[30])*0x100 + head[31]; if(raw->c>256) return NULL; // too many colors!? if(verbose) printf("RAW: %s %d x %d, %d colors\n",name,raw->w,raw->h,raw->c); if(raw->c){ diff --git a/libvo/font_load.h b/libvo/font_load.h index d43325521b..6e144d5926 100644 --- a/libvo/font_load.h +++ b/libvo/font_load.h @@ -16,7 +16,7 @@ typedef struct { raw_file* pic_a[16]; raw_file* pic_b[16]; short font[65536]; - short start[65536]; + int start[65536]; // short is not enough for unicode fonts short width[65536]; } font_desc_t; |