/*
- * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.11 2002/07/06 23:47:44 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;
}
case FcTypeCharSet:
FcCharSetDestroy ((FcCharSet *) value.u.c);
break;
+ case FcTypePattern:
+ FcPatternDestroy ((FcPattern *) value.u.p);
+ break;
default:
break;
}
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)
{