void FcTestPrint(const FcTest *test) { switch (test->kind) { case FcMatchPattern: printf("pattern "); break; case FcMatchFont: printf("font "); break; case FcMatchScan: printf("scan "); break; } switch (test->qual) { case FcQualAny: printf("any "); break; case FcQualAll: printf("all "); break; case FcQualFirst: printf("first "); break; case FcQualNotFirst: printf("not_first "); break; } printf("%s ", FcObjectName(test->object)); FcOpPrint(test->op); printf(" "); FcExprPrint(test->expr); printf("\n"); }
void FcEditPrint (const FcEdit *edit) { printf ("Edit %s ", FcObjectName (edit->object)); FcOpPrint (edit->op); printf (" "); FcExprPrint (edit->expr); }
void FcEditPrint(const FcEdit *edit) { #ifdef _DEBUG printf("Edit %s ", FcObjectName(edit->object)); FcOpPrint(edit->op); printf(" "); FcExprPrint(edit->expr); #endif }
void FcPatternPrint(const FcPattern *p) { int i; FcPatternElt *e; if (!p) { printf("Null pattern\n"); return; } printf("Pattern has %d elts (size %d)\n", p->num, p->size); for (i = 0; i < p->num; i++) { e = &FcPatternElts(p)[i]; printf("\t%s:", FcObjectName(e->object)); FcValueListPrint(FcPatternEltValues(e)); printf("\n"); } printf("\n"); }
void FcExprPrint(const FcExpr *expr) { if (!expr) printf("none"); else switch (FC_OP_GET_OP(expr->op)) { case FcOpInteger: printf("%d", expr->u.ival); break; case FcOpDouble: printf("%g", expr->u.dval); break; case FcOpString: printf("\"%s\"", expr->u.sval); break; case FcOpMatrix: printf("["); FcExprPrint(expr->u.mexpr->xx); printf(" "); FcExprPrint(expr->u.mexpr->xy); printf("; "); FcExprPrint(expr->u.mexpr->yx); printf(" "); FcExprPrint(expr->u.mexpr->yy); printf("]"); break; case FcOpRange: break; case FcOpBool: printf("%s", expr->u.bval ? "true" : "false"); break; case FcOpCharSet: printf("charset\n"); break; case FcOpLangSet: printf("langset:"); FcLangSetPrint(expr->u.lval); printf("\n"); break; case FcOpNil: printf("nil\n"); break; case FcOpField: printf("%s ", FcObjectName(expr->u.name.object)); switch ((int)expr->u.name.kind) { case FcMatchPattern: printf("(pattern) "); break; case FcMatchFont: printf("(font) "); break; } break; case FcOpConst: printf("%s", expr->u.constant); break; case FcOpQuest: FcExprPrint(expr->u.tree.left); printf(" quest "); FcExprPrint(expr->u.tree.right->u.tree.left); printf(" colon "); FcExprPrint(expr->u.tree.right->u.tree.right); break; case FcOpAssign: case FcOpAssignReplace: case FcOpPrependFirst: case FcOpPrepend: case FcOpAppend: case FcOpAppendLast: case FcOpOr: case FcOpAnd: case FcOpEqual: case FcOpNotEqual: case FcOpLess: case FcOpLessEqual: case FcOpMore: case FcOpMoreEqual: case FcOpContains: case FcOpListing: case FcOpNotContains: case FcOpPlus: case FcOpMinus: case FcOpTimes: case FcOpDivide: case FcOpComma: FcExprPrint(expr->u.tree.left); printf(" "); switch (FC_OP_GET_OP(expr->op)) { case FcOpAssign: printf("Assign"); break; case FcOpAssignReplace: printf("AssignReplace"); break; case FcOpPrependFirst: printf("PrependFirst"); break; case FcOpPrepend: printf("Prepend"); break; case FcOpAppend: printf("Append"); break; case FcOpAppendLast: printf("AppendLast"); break; case FcOpOr: printf("Or"); break; case FcOpAnd: printf("And"); break; case FcOpEqual: printf("Equal"); FcOpFlagsPrint(expr->op); break; case FcOpNotEqual: printf("NotEqual"); FcOpFlagsPrint(expr->op); break; case FcOpLess: printf("Less"); break; case FcOpLessEqual: printf("LessEqual"); break; case FcOpMore: printf("More"); break; case FcOpMoreEqual: printf("MoreEqual"); break; case FcOpContains: printf("Contains"); break; case FcOpListing: printf("Listing"); FcOpFlagsPrint(expr->op); break; case FcOpNotContains: printf("NotContains"); break; case FcOpPlus: printf("Plus"); break; case FcOpMinus: printf("Minus"); break; case FcOpTimes: printf("Times"); break; case FcOpDivide: printf("Divide"); break; case FcOpComma: printf("Comma"); break; default: break; } printf(" "); FcExprPrint(expr->u.tree.right); break; case FcOpNot: printf("Not "); FcExprPrint(expr->u.tree.left); break; case FcOpFloor: printf("Floor "); FcExprPrint(expr->u.tree.left); break; case FcOpCeil: printf("Ceil "); FcExprPrint(expr->u.tree.left); break; case FcOpRound: printf("Round "); FcExprPrint(expr->u.tree.left); break; case FcOpTrunc: printf("Trunc "); FcExprPrint(expr->u.tree.left); break; case FcOpInvalid: printf("Invalid"); break; } }
static FcBool FcCompareValueList (FcObject object, const FcMatcher *match, FcValueListPtr v1orig, /* pattern */ FcValueListPtr v2orig, /* target */ FcValue *bestValue, double *value, int *n, FcResult *result) { FcValueListPtr v1, v2; double v, best, bestStrong, bestWeak; int j, k, pos = 0; if (!match) { if (bestValue) *bestValue = FcValueCanonicalize(&v2orig->value); if (n) *n = 0; return FcTrue; } best = 1e99; bestStrong = 1e99; bestWeak = 1e99; j = 1; for (v1 = v1orig; v1; v1 = FcValueListNext(v1)) { for (v2 = v2orig, k = 0; v2; v2 = FcValueListNext(v2), k++) { v = (match->compare) (&v1->value, &v2->value); if (v < 0) { *result = FcResultTypeMismatch; return FcFalse; } v = v * 1000 + j; if (v < best) { if (bestValue) *bestValue = FcValueCanonicalize(&v2->value); best = v; pos = k; } if (v1->binding == FcValueBindingStrong) { if (v < bestStrong) bestStrong = v; } else { if (v < bestWeak) bestWeak = v; } } j++; } if (FcDebug () & FC_DBG_MATCHV) { printf (" %s: %g ", FcObjectName (object), best); FcValueListPrint (v1orig); printf (", "); FcValueListPrint (v2orig); printf ("\n"); } if (value) { int weak = match->weak; int strong = match->strong; if (weak == strong) value[strong] += best; else { value[weak] += bestWeak; value[strong] += bestStrong; } } if (n) *n = pos; return FcTrue; }