]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcname.c
Add ref counting to font config patterns so that FcFontSort return values
[fontconfig.git] / src / fcname.c
index 784171c9e6bcf672f7a1aaac5b204fc7a9f02e10..ad78c3db4cb07d5df22e473edac9ae37db0ea91b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/Fc/xftname.c,v 1.10 2001/03/30 18:50:18 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcname.c,v 1.7 2002/06/03 08:31:15 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -34,6 +34,7 @@ static const FcObjectType _FcBaseObjectTypes[] = {
     { FC_SLANT,                FcTypeInteger, },
     { FC_WEIGHT,       FcTypeInteger, },
     { FC_SIZE,         FcTypeDouble, },
+    { FC_ASPECT,       FcTypeDouble, },
     { FC_PIXEL_SIZE,   FcTypeDouble, },
     { FC_SPACING,      FcTypeInteger, },
     { FC_FOUNDRY,      FcTypeString, },
@@ -120,7 +121,7 @@ FcNameGetObjectType (const char *object)
        for (i = 0; i < l->ntypes; i++)
        {
            t = &l->types[i];
-           if (!FcStrCmpIgnoreCase ((FcChar8 *) object, (FcChar8 *) t->object))
+           if (!strcmp (object, t->object))
                return t;
        }
     }
@@ -142,6 +143,7 @@ static const FcConstant _FcBaseConstants[] = {
     { (FcChar8 *) "mono",          "spacing",  FC_MONO, },
     { (FcChar8 *) "charcell",      "spacing",  FC_CHARCELL, },
 
+    { (FcChar8 *) "none",          "rgba",         FC_RGBA_NONE },
     { (FcChar8 *) "rgb",           "rgba",         FC_RGBA_RGB, },
     { (FcChar8 *) "bgr",           "rgba",         FC_RGBA_BGR, },
     { (FcChar8 *) "vrgb",          "rgba",         FC_RGBA_VRGB },
@@ -418,86 +420,8 @@ bail1:
 bail0:
     return 0;
 }
-
-static void
-FcNameBufInit (FcNameBuf *buf, FcChar8 *init, int size)
-{
-    buf->buf = init;
-    buf->allocated = FcFalse;
-    buf->failed = FcFalse;
-    buf->len = 0;
-    buf->size = size;
-}
-
-static void
-FcNameBufDestroy (FcNameBuf *buf)
-{
-    if (buf->allocated)
-       free (buf->buf);
-}
-
-static FcChar8 *
-FcNameBufDone (FcNameBuf *buf)
-{
-    FcChar8 *ret;
-
-    ret = malloc (buf->len + 1);
-    if (ret)
-    {
-       memcpy (ret, buf->buf, buf->len);
-       ret[buf->len] = '\0';
-    }
-    FcNameBufDestroy (buf);
-    return ret;
-}
-
-FcBool
-FcNameBufChar (FcNameBuf *buf, FcChar8 c)
-{
-    if (buf->len == buf->size)
-    {
-       FcChar8     *new;
-       int         size;
-
-       if (buf->allocated)
-       {
-           size = buf->size * 2;
-           new = realloc (buf->buf, size);
-       }
-       else
-       {
-           size = buf->size + 1024;
-           new = malloc (size);
-           if (new)
-           {
-               buf->allocated = FcTrue;
-               memcpy (new, buf->buf, buf->len);
-           }
-       }
-       if (!new)
-       {
-           buf->failed = FcTrue;
-           return FcFalse;
-       }
-       buf->size = size;
-       buf->buf = new;
-    }
-    buf->buf[buf->len++] = c;
-    return FcTrue;
-}
-
-FcBool
-FcNameBufString (FcNameBuf *buf, const FcChar8 *s)
-{
-    FcChar8 c;
-    while ((c = *s++))
-       if (!FcNameBufChar (buf, c))
-           return FcFalse;
-    return FcTrue;
-}
-
 static FcBool
-FcNameUnparseString (FcNameBuf     *buf, 
+FcNameUnparseString (FcStrBuf      *buf, 
                     const FcChar8  *string,
                     const FcChar8  *escape)
 {
@@ -506,17 +430,17 @@ FcNameUnparseString (FcNameBuf        *buf,
     {
        if (escape && strchr ((char *) escape, (char) c))
        {
-           if (!FcNameBufChar (buf, escape[0]))
+           if (!FcStrBufChar (buf, escape[0]))
                return FcFalse;
        }
-       if (!FcNameBufChar (buf, c))
+       if (!FcStrBufChar (buf, c))
            return FcFalse;
     }
     return FcTrue;
 }
 
 static FcBool
-FcNameUnparseValue (FcNameBuf  *buf,
+FcNameUnparseValue (FcStrBuf   *buf,
                    FcValue     v,
                    FcChar8     *escape)
 {
@@ -541,12 +465,14 @@ FcNameUnparseValue (FcNameBuf     *buf,
        return FcNameUnparseString (buf, temp, 0);
     case FcTypeCharSet:
        return FcNameUnparseCharSet (buf, v.u.c);
+    case FcTypeFTFace:
+       return FcTrue;
     }
     return FcFalse;
 }
 
 static FcBool
-FcNameUnparseValueList (FcNameBuf      *buf,
+FcNameUnparseValueList (FcStrBuf       *buf,
                        FcValueList     *v,
                        FcChar8         *escape)
 {
@@ -567,21 +493,21 @@ FcNameUnparseValueList (FcNameBuf *buf,
 FcChar8 *
 FcNameUnparse (FcPattern *pat)
 {
-    FcNameBuf              buf;
+    FcStrBuf               buf;
     FcChar8                buf_static[8192];
     int                            i;
     FcPatternElt           *e;
     const FcObjectTypeList  *l;
     const FcObjectType     *o;
 
-    FcNameBufInit (&buf, buf_static, sizeof (buf_static));
-    e = FcPatternFind (pat, FC_FAMILY, FcFalse);
+    FcStrBufInit (&buf, buf_static, sizeof (buf_static));
+    e = FcPatternFindElt (pat, FC_FAMILY);
     if (e)
     {
        if (!FcNameUnparseValueList (&buf, e->values, (FcChar8 *) FC_ESCAPE_FIXED))
            goto bail0;
     }
-    e = FcPatternFind (pat, FC_SIZE, FcFalse);
+    e = FcPatternFindElt (pat, FC_SIZE);
     if (e)
     {
        if (!FcNameUnparseString (&buf, (FcChar8 *) "-", 0))
@@ -599,7 +525,7 @@ FcNameUnparse (FcPattern *pat)
                !strcmp (o->object, FC_FILE))
                continue;
            
-           e = FcPatternFind (pat, o->object, FcFalse);
+           e = FcPatternFindElt (pat, o->object);
            if (e)
            {
                if (!FcNameUnparseString (&buf, (FcChar8 *) ":", 0))
@@ -614,8 +540,8 @@ FcNameUnparse (FcPattern *pat)
            }
        }
     }
-    return FcNameBufDone (&buf);
+    return FcStrBufDone (&buf);
 bail0:
-    FcNameBufDestroy (&buf);
+    FcStrBufDestroy (&buf);
     return 0;
 }