]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcdbg.c
Fix up fc-cache and fc-cat for no global cache changes.
[fontconfig.git] / src / fcdbg.c
index 6acbce233bb9f467f7a98c6d8bcdd552226d1f44..9b7e8f7c9ba551043d978788d2f857f34ebd1c18 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcdbg.c,v 1.8 2002/08/19 19:32:05 keithp Exp $
+ * $RCSId: xc/lib/fontconfig/src/fcdbg.c,v 1.10 2002/08/22 18:53:22 keithp Exp $
  *
- * 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
@@ -22,9 +22,9 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
+#include "fcint.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include "fcint.h"
 
 void
 FcValuePrint (const FcValue v)
@@ -34,10 +34,10 @@ FcValuePrint (const FcValue v)
        printf (" <void>");
        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);
@@ -52,7 +52,8 @@ FcValuePrint (const FcValue v)
        printf (" set");
        break;
     case FcTypeLangSet:
-       printf (" langset");
+       printf (" ");
+       FcLangSetPrint (v.u.l);
        break;
     case FcTypeFTFace:
        printf (" face");
@@ -61,10 +62,37 @@ FcValuePrint (const FcValue v)
 }
 
 void
-FcValueListPrint (const FcValueList *l)
+FcValueListPrint (FcValueListPtr l)
 {
-    for (; l; l = l->next)
-       FcValuePrint (l->value);
+    for (; FcValueListPtrU(l); l = FcValueListPtrU(l)->next)
+    {
+       FcValuePrint (FcValueCanonicalize(&FcValueListPtrU(l)->value));
+       switch (FcValueListPtrU(l)->binding) {
+       case FcValueBindingWeak:
+           printf ("(w)");
+           break;
+       case FcValueBindingStrong:
+           printf ("(s)");
+           break;
+       case FcValueBindingSame:
+           printf ("(=)");
+           break;
+       }
+    }
+}
+
+void
+FcLangSetPrint (const FcLangSet *ls)
+{
+    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
@@ -78,12 +106,31 @@ FcPatternPrint (const FcPattern *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 = FcPatternEltU(p->elts) + i;
+       printf ("\t%s:", FcObjectPtrU(e->object));
+       /* so that fc-match properly displays file: foo... */
+       if (e->object == FcObjectToPtr(FC_FILE))
+       {
+           FcChar8 * s;
+           FcPatternGetString (p, FC_FILE, 0, &s);
+           printf (" \"%s\"", s);
+           switch (FcValueListPtrU(e->values)->binding) {
+           case FcValueBindingWeak:
+               printf ("(w)");
+               break;
+           case FcValueBindingStrong:
+               printf ("(s)");
+               break;
+           case FcValueBindingSame:
+               printf ("(=)");
+               break;
+           }
+       }
+       else
+           FcValueListPrint (e->values);
        printf ("\n");
     }
     printf ("\n");
@@ -125,6 +172,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;
     }
 }
@@ -132,7 +184,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;
@@ -168,6 +221,7 @@ FcExprPrint (const FcExpr *expr)
     case FcOpMore:
     case FcOpMoreEqual:
     case FcOpContains:
+    case FcOpListing:
     case FcOpNotContains:
     case FcOpPlus:
     case FcOpMinus:
@@ -192,6 +246,7 @@ FcExprPrint (const FcExpr *expr)
        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;
@@ -207,6 +262,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;
     }
 }
@@ -287,25 +358,19 @@ 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;
 }