/*
- * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.7 2002/06/03 08:31:15 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.12 2002/08/07 01:45:59 keithp Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
*
case FcTypeCharSet:
FcCharSetDestroy ((FcCharSet *) v.u.c);
break;
+ case FcTypePattern:
+ FcPatternDestroy ((FcPattern *) v.u.p);
+ break;
default:
break;
}
if (!v.u.c)
v.type = FcTypeVoid;
break;
+ case FcTypePattern:
+ FcPatternReference ((FcPattern *) v.u.p);
+ break;
default:
break;
}
case FcTypeCharSet:
FcCharSetDestroy ((FcCharSet *) l->value.u.c);
break;
+ case FcTypePattern:
+ FcPatternDestroy ((FcPattern *) l->value.u.p);
+ break;
default:
break;
}
return FcCharSetEqual (va.u.c, vb.u.c);
case FcTypeFTFace:
return va.u.f == vb.u.f;
+ case FcTypePattern:
+ return FcPatternEqual (va.u.p, vb.u.p);
}
return FcFalse;
}
case FcTypeFTFace:
return FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->family_name) ^
FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->style_name);
+ case FcTypePattern:
+ return (FcChar32) v.u.p->num;
}
return FcFalse;
}
{
int i;
+ if (pa == pb)
+ return FcTrue;
+
if (pa->num != pb->num)
return FcFalse;
for (i = 0; i < pa->num; i++)
}
FcBool
-FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append)
+FcPatternAddWithBinding (FcPattern *p,
+ const char *object,
+ FcValue value,
+ FcValueBinding binding,
+ FcBool append)
{
FcPatternElt *e;
FcValueList *new, **prev;
goto bail1;
new->value = value;
+ new->binding = binding;
new->next = 0;
e = FcPatternInsertElt (p, object);
case FcTypeCharSet:
FcCharSetDestroy ((FcCharSet *) value.u.c);
break;
+ case FcTypePattern:
+ FcPatternDestroy ((FcPattern *) value.u.p);
+ break;
default:
break;
}
return FcFalse;
}
+FcBool
+FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append)
+{
+ return FcPatternAddWithBinding (p, object, value, FcValueBindingStrong, append);
+}
+
+FcBool
+FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append)
+{
+ return FcPatternAddWithBinding (p, object, value, FcValueBindingWeak, append);
+}
+
FcBool
FcPatternDel (FcPattern *p, const char *object)
{
return FcPatternAdd (p, object, v, FcTrue);
}
+FcBool
+FcPatternAddPattern (FcPattern *p, const char *object, const FcPattern *pp)
+{
+ FcValue v;
+
+ v.type = FcTypePattern;
+ v.u.p = pp;
+ return FcPatternAdd (p, object, v, FcTrue);
+}
+
FcResult
FcPatternGet (FcPattern *p, const char *object, int id, FcValue *v)
{
return FcResultMatch;
}
+FcResult
+FcPatternGetPattern (FcPattern *p, const char *object, int id, FcPattern **pp)
+{
+ FcValue v;
+ FcResult r;
+
+ r = FcPatternGet (p, object, id, &v);
+ if (r != FcResultMatch)
+ return r;
+ if (v.type != FcTypePattern)
+ return FcResultTypeMismatch;
+ *pp = (FcPattern *) v.u.p;
+ return FcResultMatch;
+}
+
FcPattern *
FcPatternDuplicate (FcPattern *orig)
{