[fcmatch] Move FcFontSetMatch() functionality into FcFontSetMatchInternal()

Except for the final FcFontRenderPrepare().  This way we have more
flexibility to do caching in FcFontMatch() while leaving FcFontSetMatch()
intact.
This commit is contained in:
Behdad Esfahbod 2008-12-31 20:16:40 -05:00
parent a5a384c5ff
commit 6d764a3f9b
1 changed files with 29 additions and 13 deletions

View File

@ -459,12 +459,12 @@ FcFontRenderPrepare (FcConfig *config,
return new;
}
FcPattern *
FcFontSetMatch (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcResult *result)
static FcPattern *
FcFontSetMatchInternal (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcResult *result)
{
double score[NUM_MATCH_VALUES], bestscore[NUM_MATCH_VALUES];
int f;
@ -481,12 +481,6 @@ FcFontSetMatch (FcConfig *config,
printf ("Match ");
FcPatternPrint (p);
}
if (!config)
{
config = FcConfigGetCurrent ();
if (!config)
return 0;
}
for (set = 0; set < nsets; set++)
{
s = sets[set];
@ -537,6 +531,25 @@ FcFontSetMatch (FcConfig *config,
*result = FcResultNoMatch;
return 0;
}
return best;
}
FcPattern *
FcFontSetMatch (FcConfig *config,
FcFontSet **sets,
int nsets,
FcPattern *p,
FcResult *result)
{
FcPattern *best;
if (!config)
{
config = FcConfigGetCurrent ();
if (!config)
return 0;
}
best = FcFontSetMatchInternal (config, sets, nsets, p, result);
return FcFontRenderPrepare (config, p, best);
}
@ -547,6 +560,7 @@ FcFontMatch (FcConfig *config,
{
FcFontSet *sets[2];
int nsets;
FcPattern *best;
if (!config)
{
@ -559,7 +573,9 @@ FcFontMatch (FcConfig *config,
sets[nsets++] = config->fonts[FcSetSystem];
if (config->fonts[FcSetApplication])
sets[nsets++] = config->fonts[FcSetApplication];
return FcFontSetMatch (config, sets, nsets, p, result);
best = FcFontSetMatchInternal (config, sets, nsets, p, result);
return FcFontRenderPrepare (config, p, best);
}
typedef struct _FcSortNode {