static FcBool FcCompare (FcPattern *pat, FcPattern *fnt, double *value, FcResult *result) { int i, i1, i2; for (i = 0; i < NUM_MATCH_VALUES; i++) value[i] = 0.0; i1 = 0; i2 = 0; while (i1 < pat->num && i2 < fnt->num) { i = pat->elts[i1].object - fnt->elts[i2].object; if (i > 0) i2++; else if (i < 0) i1++; else { if (!FcCompareValueList (pat->elts[i1].object, pat->elts[i1].values, fnt->elts[i2].values, 0, value, result)) return FcFalse; i1++; i2++; } } return FcTrue; #if 0 for (i1 = 0; i1 < pat->num; i1++) { for (i2 = 0; i2 < fnt->num; i2++) { if (!strcmp (pat->elts[i1].object, fnt->elts[i2].object)) { break; } } } return FcTrue; #endif }
static FcBool FcCompare (FcPattern *pat, FcPattern *fnt, double *value, FcResult *result) { int i, i1, i2; for (i = 0; i < NUM_MATCH_VALUES; i++) value[i] = 0.0; i1 = 0; i2 = 0; while (i1 < pat->num && i2 < fnt->num) { FcPatternElt *elt_i1 = &FcPatternElts(pat)[i1]; FcPatternElt *elt_i2 = &FcPatternElts(fnt)[i2]; i = FcObjectCompare(elt_i1->object, elt_i2->object); if (i > 0) i2++; else if (i < 0) i1++; else { const FcMatcher *match = FcObjectToMatcher (elt_i1->object, FcFalse); if (!FcCompareValueList (elt_i1->object, match, FcPatternEltValues(elt_i1), FcPatternEltValues(elt_i2), NULL, value, NULL, result)) return FcFalse; i1++; i2++; } } return FcTrue; }