Imported Upstream version 2.11.93
[platform/upstream/fontconfig.git] / src / fcdbg.c
index 270d791..ef038f0 100644 (file)
 static void
 _FcValuePrintFile (FILE *f, const FcValue v)
 {
+    FcRange r;
+
     switch (v.type) {
+    case FcTypeUnknown:
+       fprintf (f, "<unknown>");
+       break;
     case FcTypeVoid:
        fprintf (f, "<void>");
        break;
@@ -58,6 +63,10 @@ _FcValuePrintFile (FILE *f, const FcValue v)
     case FcTypeFTFace:
        fprintf (f, "face");
        break;
+    case FcTypeRange:
+       r = FcRangeCanonicalize (v.u.r);
+       fprintf (f, "(%g, %g)", r.u.d.begin, r.u.d.end);
+       break;
     }
 }
 
@@ -79,7 +88,7 @@ void
 FcValuePrintWithPosition (const FcValue v, FcBool show_pos_mark)
 {
     if (show_pos_mark)
-       printf (" [insert here] ");
+       printf (" [marker] ");
     else
        printf (" ");
     _FcValuePrintFile (stdout, v);
@@ -98,6 +107,10 @@ FcValueBindingPrint (const FcValueListPtr l)
     case FcValueBindingSame:
        printf ("(=)");
        break;
+    default:
+       /* shouldn't be reached */
+       printf ("(?)");
+       break;
     }
 }
 
@@ -110,7 +123,7 @@ FcValueListPrintWithPosition (FcValueListPtr l, const FcValueListPtr pos)
        FcValueBindingPrint (l);
     }
     if (!pos)
-       printf (" [insert here]");
+       printf (" [marker]");
 }
 
 void
@@ -222,6 +235,8 @@ FcOpPrint (FcOp op_)
     case FcOpPrependFirst: printf ("PrependFirst"); break;
     case FcOpAppend: printf ("Append"); break;
     case FcOpAppendLast: printf ("AppendLast"); break;
+    case FcOpDelete: printf ("Delete"); break;
+    case FcOpDeleteAll: printf ("DeleteAll"); break;
     case FcOpQuest: printf ("Quest"); break;
     case FcOpOr: printf ("Or"); break;
     case FcOpAnd: printf ("And"); break;
@@ -252,6 +267,8 @@ FcOpPrint (FcOp op_)
 void
 FcExprPrint (const FcExpr *expr)
 {
+    FcRange r;
+
     if (!expr) printf ("none");
     else switch (FC_OP_GET_OP (expr->op)) {
     case FcOpInteger: printf ("%d", expr->u.ival); break;
@@ -268,7 +285,10 @@ FcExprPrint (const FcExpr *expr)
        FcExprPrint (expr->u.mexpr->yy);
        printf ("]");
        break;
-    case FcOpRange: break;
+    case FcOpRange:
+       r = FcRangeCanonicalize (expr->u.rval);
+       printf ("(%g, %g)", r.u.d.begin, r.u.d.end);
+       break;
     case FcOpBool: printf ("%s", expr->u.bval ? "true" : "false"); break;
     case FcOpCharSet: printf ("charset\n"); break;
     case FcOpLangSet:
@@ -418,21 +438,38 @@ FcEditPrint (const FcEdit *edit)
 void
 FcSubstPrint (const FcSubst *subst)
 {
-    FcEdit     *e;
-    FcTest     *t;
+    FcRule *r;
+    FcRuleType last_type = FcRuleUnknown;
 
     printf ("match\n");
-    for (t = subst->test; t; t = t->next)
-    {
-       printf ("\t");
-       FcTestPrint (t);
-    }
-    printf ("edit\n");
-    for (e = subst->edit; e; e = e->next)
+    for (r = subst->rule; r; r = r->next)
     {
+       if (last_type != r->type)
+       {
+           switch (r->type) {
+           case FcRuleTest:
+               printf ("[test]\n");
+               break;
+           case FcRuleEdit:
+               printf ("[edit]\n");
+               break;
+           default:
+               break;
+           }
+           last_type = r->type;
+       }
        printf ("\t");
-       FcEditPrint (e);
-       printf (";\n");
+       switch (r->type) {
+       case FcRuleTest:
+           FcTestPrint (r->u.test);
+           break;
+       case FcRuleEdit:
+           FcEditPrint (r->u.edit);
+           printf (";\n");
+           break;
+       default:
+           break;
+       }
     }
     printf ("\n");
 }