X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcdbg.c;h=cf2ff0870dadb80a2aaee4b0292acca7e57f795a;hb=HEAD;hp=9f7cec9b93fb9c5eeb0eb6c1ebde248ea4fd56c3;hpb=938bc63358c09b9fd3709e8f914870f906361594;p=fontconfig.git diff --git a/src/fcdbg.c b/src/fcdbg.c index 9f7cec9..cf2ff08 100644 --- a/src/fcdbg.c +++ b/src/fcdbg.c @@ -1,30 +1,30 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcdbg.c,v 1.4 2002/06/19 20:08:22 keithp Exp $ + * fontconfig/src/fcdbg.c * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + * Copyright © 2000 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in + * documentation, and that the name of the author(s) not be used in * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no + * specific, written prior permission. The authors make no * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ +#include "fcint.h" #include #include -#include "fcint.h" void FcValuePrint (const FcValue v) @@ -34,10 +34,10 @@ FcValuePrint (const FcValue v) printf (" "); break; case FcTypeInteger: - printf (" %d", v.u.i); + printf (" %d(i)", v.u.i); break; case FcTypeDouble: - printf (" %g", v.u.d); + printf (" %g(f)", v.u.d); break; case FcTypeString: printf (" \"%s\"", v.u.s); @@ -49,24 +49,85 @@ FcValuePrint (const FcValue v) printf (" (%f %f; %f %f)", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); break; case FcTypeCharSet: /* XXX */ - printf (" set"); + printf (" "); + FcCharSetPrint (v.u.c); + break; + case FcTypeLangSet: + printf (" "); + FcLangSetPrint (v.u.l); break; case FcTypeFTFace: printf (" face"); break; - case FcTypePattern: - printf (" pattern {"); - FcPatternPrint (v.u.p); - printf (" } "); - break; } } void -FcValueListPrint (const FcValueList *l) +FcValueListPrint (FcValueListPtr l) +{ + for (; l != NULL; l = FcValueListNext(l)) + { + FcValuePrint (FcValueCanonicalize(&l->value)); + switch (l->binding) { + case FcValueBindingWeak: + printf ("(w)"); + break; + case FcValueBindingStrong: + printf ("(s)"); + break; + case FcValueBindingSame: + printf ("(=)"); + break; + } + } +} + +void +FcLangSetPrint (const FcLangSet *ls) { - for (; l; l = l->next) - FcValuePrint (l->value); + FcStrBuf buf; + FcChar8 init_buf[1024]; + + FcStrBufInit (&buf, init_buf, sizeof (init_buf)); + if (FcNameUnparseLangSet (&buf, ls) && FcStrBufChar (&buf,'\0')) + printf ("%s", buf.buf); + else + printf ("langset (alloc error)"); + FcStrBufDestroy (&buf); +} + +void +FcCharSetPrint (const FcCharSet *c) +{ + int i, j; + intptr_t *leaves = FcCharSetLeaves (c); + FcChar16 *numbers = FcCharSetNumbers (c); + +#if 0 + printf ("CharSet 0x%x\n", (intptr_t) c); + printf ("Leaves: +%d = 0x%x\n", c->leaves_offset, (intptr_t) leaves); + printf ("Numbers: +%d = 0x%x\n", c->numbers_offset, (intptr_t) numbers); + + for (i = 0; i < c->num; i++) + { + printf ("Page %d: %04x +%d = 0x%x\n", + i, numbers[i], leaves[i], + (intptr_t) FcOffsetToPtr (leaves, leaves[i], FcCharLeaf)); + } +#endif + + printf ("\n"); + for (i = 0; i < c->num; i++) + { + intptr_t leaf_offset = leaves[i]; + FcCharLeaf *leaf = FcOffsetToPtr (leaves, leaf_offset, FcCharLeaf); + + printf ("\t"); + printf ("%04x:", numbers[i]); + for (j = 0; j < 256/32; j++) + printf (" %08x", leaf->map[j]); + printf ("\n"); + } } void @@ -74,18 +135,18 @@ FcPatternPrint (const FcPattern *p) { int i; FcPatternElt *e; - + if (!p) { printf ("Null pattern\n"); return; } - printf ("Pattern %d of %d\n", p->num, p->size); + printf ("Pattern has %d elts (size %d)\n", p->num, p->size); for (i = 0; i < p->num; i++) { - e = &p->elts[i]; - printf ("\t%s:", e->object); - FcValueListPrint (e->values); + e = &FcPatternElts(p)[i]; + printf ("\t%s:", FcObjectName(e->object)); + FcValueListPrint (FcPatternEltValues(e)); printf ("\n"); } printf ("\n"); @@ -99,8 +160,10 @@ FcOpPrint (FcOp op) case FcOpDouble: printf ("Double"); break; case FcOpString: printf ("String"); break; case FcOpMatrix: printf ("Matrix"); break; + case FcOpRange: printf ("Range"); break; case FcOpBool: printf ("Bool"); break; case FcOpCharSet: printf ("CharSet"); break; + case FcOpLangSet: printf ("LangSet"); break; case FcOpField: printf ("Field"); break; case FcOpConst: printf ("Const"); break; case FcOpAssign: printf ("Assign"); break; @@ -113,12 +176,13 @@ FcOpPrint (FcOp op) case FcOpOr: printf ("Or"); break; case FcOpAnd: printf ("And"); break; case FcOpEqual: printf ("Equal"); break; - case FcOpContains: printf ("Contains"); break; case FcOpNotEqual: printf ("NotEqual"); 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 FcOpNotContains: printf ("NotContains"); break; case FcOpPlus: printf ("Plus"); break; case FcOpMinus: printf ("Minus"); break; case FcOpTimes: printf ("Times"); break; @@ -126,6 +190,11 @@ FcOpPrint (FcOp op) case FcOpNot: printf ("Not"); break; case FcOpNil: printf ("Nil"); break; case FcOpComma: printf ("Comma"); break; + case FcOpFloor: printf ("Floor"); break; + case FcOpCeil: printf ("Ceil"); break; + case FcOpRound: printf ("Round"); break; + case FcOpTrunc: printf ("Trunc"); break; + case FcOpListing: printf ("Listing"); break; case FcOpInvalid: printf ("Invalid"); break; } } @@ -133,7 +202,8 @@ FcOpPrint (FcOp op) void FcExprPrint (const FcExpr *expr) { - switch (expr->op) { + if (!expr) printf ("none"); + else switch (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; @@ -142,10 +212,16 @@ FcExprPrint (const FcExpr *expr) expr->u.mval->xy, expr->u.mval->yx, expr->u.mval->yy); 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", expr->u.field); break; + case FcOpField: printf ("%s", FcObjectName(expr->u.object)); break; case FcOpConst: printf ("%s", expr->u.constant); break; case FcOpQuest: FcExprPrint (expr->u.tree.left); @@ -163,12 +239,14 @@ FcExprPrint (const FcExpr *expr) case FcOpOr: case FcOpAnd: case FcOpEqual: - case FcOpContains: case FcOpNotEqual: case FcOpLess: case FcOpLessEqual: case FcOpMore: case FcOpMoreEqual: + case FcOpContains: + case FcOpListing: + case FcOpNotContains: case FcOpPlus: case FcOpMinus: case FcOpTimes: @@ -186,12 +264,14 @@ FcExprPrint (const FcExpr *expr) case FcOpOr: printf ("Or"); break; case FcOpAnd: printf ("And"); break; case FcOpEqual: printf ("Equal"); break; - case FcOpContains: printf ("Contains"); break; case FcOpNotEqual: printf ("NotEqual"); 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"); break; + case FcOpNotContains: printf ("NotContains"); break; case FcOpPlus: printf ("Plus"); break; case FcOpMinus: printf ("Minus"); break; case FcOpTimes: printf ("Times"); break; @@ -206,6 +286,22 @@ FcExprPrint (const FcExpr *expr) 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; } } @@ -220,6 +316,9 @@ FcTestPrint (const FcTest *test) case FcMatchFont: printf ("font "); break; + case FcMatchScan: + printf ("scan "); + break; } switch (test->qual) { case FcQualAny: @@ -235,7 +334,7 @@ FcTestPrint (const FcTest *test) printf ("not_first "); break; } - printf ("%s ", test->field); + printf ("%s ", FcObjectName (test->object)); FcOpPrint (test->op); printf (" "); FcExprPrint (test->expr); @@ -245,7 +344,7 @@ FcTestPrint (const FcTest *test) void FcEditPrint (const FcEdit *edit) { - printf ("Edit %s ", edit->field); + printf ("Edit %s ", FcObjectName (edit->object)); FcOpPrint (edit->op); printf (" "); FcExprPrint (edit->expr); @@ -256,7 +355,7 @@ FcSubstPrint (const FcSubst *subst) { FcEdit *e; FcTest *t; - + printf ("match\n"); for (t = subst->test; t; t = t->next) { @@ -286,25 +385,22 @@ FcFontSetPrint (const FcFontSet *s) } } -int -FcDebug (void) +int FcDebugVal; + +void +FcInitDebug (void) { - static int initialized; - static int debug; + char *e; - if (!initialized) + e = getenv ("FC_DEBUG"); + if (e) { - char *e; - - initialized = 1; - e = getenv ("FC_DEBUG"); - if (e) - { - printf ("FC_DEBUG=%s\n", e); - debug = atoi (e); - if (debug < 0) - debug = 0; - } + printf ("FC_DEBUG=%s\n", e); + FcDebugVal = atoi (e); + if (FcDebugVal < 0) + FcDebugVal = 0; } - return debug; } +#define __fcdbg__ +#include "fcaliastail.h" +#undef __fcdbg__