X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fpdf%2FInfoOutputDev.cc;h=a10f4bd2e0272469f506943533759c0879328a10;hp=c2accf29c8dadd7dac06ffb1a2773ad9f0b4f1fa;hb=fa4fec76390c6ff0fc041a83bff0edb475ea7d78;hpb=0eaa557c36055770a90f6ea54c88f30010e1e5d9 diff --git a/lib/pdf/InfoOutputDev.cc b/lib/pdf/InfoOutputDev.cc index c2accf2..a10f4bd 100644 --- a/lib/pdf/InfoOutputDev.cc +++ b/lib/pdf/InfoOutputDev.cc @@ -207,7 +207,7 @@ void InfoOutputDev::drawChar(GfxState *state, double x, double y, GlyphInfo*g = currentfont->glyphs[code]; if(!g) { g = currentfont->glyphs[code] = new GlyphInfo(); - g->advance_samples = 0; + g->advance_max = 0; currentfont->splash_font->last_advance = -1; g->path = currentfont->splash_font->getGlyphPath(code); g->advance = currentfont->splash_font->last_advance; @@ -218,11 +218,8 @@ void InfoOutputDev::drawChar(GfxState *state, double x, double y, } if(currentfont->lastchar>=0 && currentfont->lasty == y) { double xshift = x - currentfont->lastx; - if(xshift>=0) { - AdvanceSample* old = g->advance_samples; - g->advance_samples = new AdvanceSample(); - g->advance_samples->next = old; - g->advance_samples->advance = xshift; + if(xshift>=0 && xshift > g->advance_max) { + g->advance_max = xshift; } } @@ -231,41 +228,6 @@ void InfoOutputDev::drawChar(GfxState *state, double x, double y, currentfont->lastchar = code; } -static int compare_double(const void *_a, const void *_b) -{ - const double*a = (const double*)_a; - const double*b = (const double*)_b; - if(*a < *b) - return -1; - if(*a > *b) - return 1; - return 0; -} - -double GlyphInfo::estimateAdvance() -{ - AdvanceSample*a = advance_samples; - int n=0; - while(a) { - n++; - a = a->next; - } - if(!n) - return -1; - double*list = (double*)malloc(sizeof(double)*n); - n = 0; - a = advance_samples; - while(a) { - list[n++] = a->advance; - a = a->next; - } - // FIXME: a true median algorithm would be faster - qsort(list, n, sizeof(double), compare_double); - double median = list[n/2]; - free(list); - return median; -} - GBool InfoOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen) { GfxFont*font = state->getFont();