コード例 #1
0
ファイル: fcdbg.c プロジェクト: rconde01/fontconfig
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");
}
コード例 #2
0
ファイル: fcdbg.c プロジェクト: Fur1ok/fontconfig
void
FcEditPrint (const FcEdit *edit)
{
    printf ("Edit %s ", FcObjectName (edit->object));
    FcOpPrint (edit->op);
    printf (" ");
    FcExprPrint (edit->expr);
}
コード例 #3
0
ファイル: fcdbg.c プロジェクト: tgoyne/fontconfig
void FcEditPrint(const FcEdit *edit) {
#ifdef _DEBUG
    printf("Edit %s ", FcObjectName(edit->object));
    FcOpPrint(edit->op);
    printf(" ");
    FcExprPrint(edit->expr);
#endif
}
コード例 #4
0
ファイル: fcdbg.c プロジェクト: rconde01/fontconfig
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");
}
コード例 #5
0
ファイル: fcdbg.c プロジェクト: rconde01/fontconfig
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;
        }
}
コード例 #6
0
ファイル: fcmatch.c プロジェクト: Amaterasu27/miktex
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;
}