Mercurial > mplayer.hg
changeset 1507:47a49d6d7132
speed optimized :)
author | arpi |
---|---|
date | Mon, 13 Aug 2001 19:33:41 +0000 |
parents | 94d929f91b06 |
children | 6e752419c7e8 |
files | TOOLS/subfont-c/subfont.c |
diffstat | 1 files changed, 19 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/TOOLS/subfont-c/subfont.c Mon Aug 13 18:39:23 2001 +0000 +++ b/TOOLS/subfont-c/subfont.c Mon Aug 13 19:33:41 2001 +0000 @@ -453,23 +453,23 @@ int r, int mwidth) { - int x, y, mx, my; + int x, y; for (y = 0; y<height; ++y) { for (x = 0; x<width; ++x, ++s, ++t) { unsigned max = 0; unsigned *mrow = m + r; unsigned char *srow = s -r*width; + int x1=(x<r)?-x:-r; + int x2=(x+r>=width)?(width-x-1):r; + int my; for (my = -r; my<=r; ++my, srow+= width, mrow+= mwidth) { + int mx; if (y+my < 0) continue; if (y+my >= height) break; - for (mx = -r; mx<=r; ++mx) { - unsigned v; - if (x+mx < 0) continue; - if (x+mx >= width) break; - - v = srow[mx] * mrow[mx]; + for (mx = x1; mx<=x2; ++mx) { + unsigned v = srow[mx] * mrow[mx]; if (v>max) max = v; } } @@ -523,24 +523,25 @@ int mwidth, unsigned volume) { - int x, y, mx, my; + int x, y; for (y = 0; y<height; ++y) { for (x = 0; x<width; ++x, ++s, ++t) { unsigned sum = 0; unsigned *mrow = m + r; unsigned char *srow = s -r*width; + int x1=(x<r)?-x:-r; + int x2=(x+r>=width)?(width-x-1):r; + int my; for (my = -r; my<=r; ++my, srow+= width, mrow+= mwidth) { + int mx; if (y+my < 0) continue; if (y+my >= height) break; - for (mx = -r; mx<=r; ++mx) { - if (x+mx < 0) continue; - if (x+mx >= width) break; + for (mx = x1; mx<=x2; ++mx) + sum+= srow[mx] * mrow[mx]; - sum+= srow[mx] * mrow[mx]; - } } *t = (sum + volume/2) / volume; } @@ -592,9 +593,12 @@ if (DEBUG) eprintf("\n"); - outline(buffer, tbuffer, width, height, om, o_r, o_w); // solid outline + if(thickness==1.0) + outline1(buffer, tbuffer, width, height); // FAST solid 1 pixel outline + else + outline(buffer, tbuffer, width, height, om, o_r, o_w); // solid outline + //outline(buffer, tbuffer, width, height, gm, g_r, g_w); // Gaussian outline - //outline1(buffer, tbuffer, width, height); // solid 1 pixel outline blur(tbuffer, abuffer, width, height, gm, g_r, g_w, volume);