]> git.wh0rd.org - fontconfig.git/blobdiff - fontconfig/fontconfig.h
Rewrite global cache handling code in fontconfig to eliminate per-file
[fontconfig.git] / fontconfig / fontconfig.h
index 0f6dc7f200257600406c3e60d6fbc69ef50b4140..2a87aa7ee8a315928078d55adc3f7ad689c3b9bd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.4 2002/02/28 16:51:48 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.21 2002/07/11 02:47:50 keithp Exp $
  *
  * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -37,7 +37,7 @@ typedef int           FcBool;
  */
 #define FC_MAJOR       1
 #define FC_MINOR       0
-#define FC_REVISION    0
+#define FC_REVISION    1
 
 #define FC_VERSION     ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
 
@@ -49,6 +49,7 @@ typedef int           FcBool;
 #define FC_SLANT           "slant"             /* Int */
 #define FC_WEIGHT          "weight"            /* Int */
 #define FC_SIZE                    "size"              /* Double */
+#define FC_ASPECT          "aspect"            /* Double */
 #define FC_PIXEL_SIZE      "pixelsize"         /* Double */
 #define FC_SPACING         "spacing"           /* Int */
 #define FC_FOUNDRY         "foundry"           /* String */
@@ -59,6 +60,7 @@ typedef int           FcBool;
 #define FC_GLOBAL_ADVANCE   "globaladvance"    /* Bool (true) */
 #define FC_FILE                    "file"              /* String */
 #define FC_INDEX           "index"             /* Int */
+#define FC_FT_FACE         "ftface"            /* FT_Face */
 #define FC_RASTERIZER      "rasterizer"        /* String */
 #define FC_OUTLINE         "outline"           /* Bool */
 #define FC_SCALABLE        "scalable"          /* Bool */
@@ -99,45 +101,6 @@ typedef int         FcBool;
 #define FC_RGBA_VRGB       3
 #define FC_RGBA_VBGR       4
 
-/* language groups from the OS/2 CodePageRange bits */
-#define FC_LANG_LATIN_1                        "latin1"                /* 0 */
-#define FC_LANG_LATIN_2_EASTERN_EUROPE "latin2easterneurope"   /* 1 */
-#define FC_LANG_CYRILLIC               "cyrillic"              /* 2 */
-#define FC_LANG_GREEK                  "greek"                 /* 3 */
-#define FC_LANG_TURKISH                        "turkish"               /* 4 */
-#define FC_LANG_HEBREW                 "hebrew"                /* 5 */
-#define FC_LANG_ARABIC                 "arabic"                /* 6 */
-#define FC_LANG_WINDOWS_BALTIC         "windowsbaltic"         /* 7 */
-#define FC_LANG_VIETNAMESE             "vietnamese"            /* 8 */
-/* 9-15 reserved for Alternate ANSI */
-#define FC_LANG_THAI                   "thai"                  /* 16 */
-#define FC_LANG_JAPANESE               "japanese"              /* 17 */
-#define FC_LANG_SIMPLIFIED_CHINESE     "simplifiedchinese"     /* 18 */
-#define FC_LANG_KOREAN_WANSUNG         "koreanwansung"         /* 19 */
-#define FC_LANG_TRADITIONAL_CHINESE    "traditionalchinese"    /* 20 */
-#define FC_LANG_KOREAN_JOHAB           "koreanjohab"           /* 21 */
-/* 22-28 reserved for Alternate ANSI & OEM */
-#define FC_LANG_MACINTOSH              "macintosh"             /* 29 */
-#define FC_LANG_OEM                    "oem"                   /* 30 */
-#define FC_LANG_SYMBOL                 "symbol"                /* 31 */
-/* 32-47 reserved for OEM */
-#define FC_LANG_IBM_GREEK              "ibmgreek"              /* 48 */
-#define FC_LANG_MSDOS_RUSSIAN          "msdosrussian"          /* 49 */
-#define FC_LANG_MSDOS_NORDIC           "msdosnordic"           /* 50 */
-#define FC_LANG_ARABIC_864             "arabic864"             /* 51 */
-#define FC_LANG_MSDOS_CANADIAN_FRENCH  "msdoscanadianfrench"   /* 52 */
-#define FC_LANG_HEBREW_862             "hebrew862"             /* 53 */
-#define FC_LANG_MSDOS_ICELANDIC                "msdosicelandic"        /* 54 */
-#define FC_LANG_MSDOS_PORTUGUESE       "msdosportuguese"       /* 55 */
-#define FC_LANG_IBM_TURKISH            "ibmturkish"            /* 56 */
-#define FC_LANG_IBM_CYRILLIC           "ibmcyrillic"           /* 57 */
-#define FC_LANG_LATIN_2                        "latin2"                /* 58 */
-#define FC_LANG_MSDOS_BALTIC           "msdosbaltic"           /* 59 */
-#define FC_LANG_GREEK_437_G            "greek437g"             /* 60 */
-#define FC_LANG_ARABIC_ASMO_708                "arabicasmo708"         /* 61 */
-#define FC_LANG_WE_LATIN_1             "welatin1"              /* 62 */
-#define FC_LANG_US                     "us"                    /* 63 */
-
 typedef enum _FcType {
     FcTypeVoid, 
     FcTypeInteger, 
@@ -145,7 +108,8 @@ typedef enum _FcType {
     FcTypeString, 
     FcTypeBool,
     FcTypeMatrix,
-    FcTypeCharSet
+    FcTypeCharSet,
+    FcTypeFTFace
 } FcType;
 
 typedef struct _FcMatrix {
@@ -186,6 +150,7 @@ typedef struct _FcValue {
        double          d;
        const FcMatrix  *m;
        const FcCharSet *c;
+       void            *f;
     } u;
 } FcValue;
 
@@ -212,6 +177,8 @@ typedef enum _FcSetName {
     FcSetApplication = 1
 } FcSetName;
 
+typedef struct _FcAtomic FcAtomic;
+
 #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
 #define _FCFUNCPROTOBEGIN extern "C" { /* do not leave open across includes */
 #define _FCFUNCPROTOEND }
@@ -220,12 +187,18 @@ typedef enum _FcSetName {
 #define _FCFUNCPROTOEND
 #endif
 
+typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
+
 typedef struct _FcConfig    FcConfig;
 
-typedef struct _FcFileCache FcFileCache;
+typedef struct _FcGlobalCache  FcFileCache;
 
 typedef struct _FcBlanks    FcBlanks;
 
+typedef struct _FcStrList   FcStrList;
+
+typedef struct _FcStrSet    FcStrSet;
+
 _FCFUNCPROTOBEGIN
 
 /* fcblanks.c */
@@ -257,13 +230,19 @@ FcConfigSetCurrent (FcConfig *config);
 FcConfig *
 FcConfigGetCurrent (void);
 
+FcBool
+FcConfigUptoDate (FcConfig *config);
+    
 FcBool
 FcConfigBuildFonts (FcConfig *config);
 
-FcChar8 **
-FcConfigGetDirs (FcConfig   *config);
+FcStrList *
+FcConfigGetFontDirs (FcConfig   *config);
+
+FcStrList *
+FcConfigGetConfigDirs (FcConfig   *config);
 
-FcChar8 **
+FcStrList *
 FcConfigGetConfigFiles (FcConfig    *config);
 
 FcChar8 *
@@ -272,6 +251,12 @@ FcConfigGetCache (FcConfig  *config);
 FcBlanks *
 FcConfigGetBlanks (FcConfig *config);
 
+int
+FcConfigGetRescanInverval (FcConfig *config);
+
+FcBool
+FcConfigSetRescanInverval (FcConfig *config, int rescanInterval);
+
 FcFontSet *
 FcConfigGetFonts (FcConfig     *config,
                  FcSetName     set);
@@ -329,8 +314,22 @@ FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
 FcChar32
 FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
 
+FcBool
+FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
+
+#define FC_CHARSET_MAP_SIZE (256/32)
+#define FC_CHARSET_DONE        ((FcChar32) -1)
+
 FcChar32
-FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result);
+FcCharSetFirstPage (const FcCharSet *a, 
+                   FcChar32        map[FC_CHARSET_MAP_SIZE],
+                   FcChar32        *next);
+
+FcChar32
+FcCharSetNextPage (const FcCharSet  *a, 
+                  FcChar32         map[FC_CHARSET_MAP_SIZE],
+                  FcChar32         *next);
+
 
 /* fcdbg.c */
 void
@@ -349,6 +348,7 @@ FcDefaultSubstitute (FcPattern *pattern);
 /* fcdir.c */
 FcBool
 FcFileScan (FcFontSet      *set,
+           FcStrSet        *dirs,
            FcFileCache     *cache,
            FcBlanks        *blanks,
            const FcChar8   *file,
@@ -356,13 +356,14 @@ FcFileScan (FcFontSet         *set,
 
 FcBool
 FcDirScan (FcFontSet       *set,
+          FcStrSet         *dirs,
           FcFileCache      *cache,
           FcBlanks         *blanks,
           const FcChar8    *dir,
           FcBool           force);
 
 FcBool
-FcDirSave (FcFontSet *set, const FcChar8 *dir);
+FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
 
 /* fcfreetype.c */
 FcPattern *
@@ -380,14 +381,23 @@ FcBool
 FcFontSetAdd (FcFontSet *s, FcPattern *font);
 
 /* fcinit.c */
+FcConfig *
+FcInitLoadConfig (void);
+
+FcConfig *
+FcInitLoadConfigAndFonts (void);
+
 FcBool
-FcInitFonts (void);
+FcInit (void);
+
+int
+FcGetVersion (void);
 
 FcBool
-FcInitConfig (void);
+FcInitReinitialize (void);
 
 FcBool
-FcInit (void);
+FcInitBringUptoDate (void);
 
 /* fclist.c */
 FcObjectSet *
@@ -417,6 +427,32 @@ FcFontList (FcConfig       *config,
            FcPattern   *p,
            FcObjectSet *os);
 
+/* fcatomic.c */
+
+FcAtomic *
+FcAtomicCreate (const FcChar8   *file);
+
+FcBool
+FcAtomicLock (FcAtomic *atomic);
+
+FcChar8 *
+FcAtomicNewFile (FcAtomic *atomic);
+
+FcChar8 *
+FcAtomicOrigFile (FcAtomic *atomic);
+
+FcBool
+FcAtomicReplaceOrig (FcAtomic *atomic);
+
+void
+FcAtomicDeleteNew (FcAtomic *atomic);
+
+void
+FcAtomicUnlock (FcAtomic *atomic);
+
+void
+FcAtomicDestroy (FcAtomic *atomic);
+
 /* fcmatch.c */
 FcPattern *
 FcFontSetMatch (FcConfig    *config,
@@ -430,6 +466,30 @@ FcFontMatch (FcConfig      *config,
             FcPattern  *p, 
             FcResult   *result);
 
+FcPattern *
+FcFontRenderPrepare (FcConfig      *config,
+                    FcPattern      *pat,
+                    FcPattern      *font);
+
+FcFontSet *
+FcFontSetSort (FcConfig            *config,
+              FcFontSet    **sets,
+              int          nsets,
+              FcPattern    *p,
+              FcBool       trim,
+              FcCharSet    **csp,
+              FcResult     *result);
+
+FcFontSet *
+FcFontSort (FcConfig    *config,
+           FcPattern    *p,
+           FcBool       trim,
+           FcCharSet    **csp,
+           FcResult     *result);
+
+void
+FcFontSetSortDestroy (FcFontSet *fs);
+
 /* fcmatrix.c */
 FcMatrix *
 FcMatrixCopy (const FcMatrix *mat);
@@ -485,18 +545,36 @@ FcPatternCreate (void);
 FcPattern *
 FcPatternDuplicate (FcPattern *p);
 
+void
+FcPatternReference (FcPattern *p);
+
 void
 FcValueDestroy (FcValue v);
 
+FcBool
+FcValueEqual (FcValue va, FcValue vb);
+
 FcValue
 FcValueSave (FcValue v);
 
 void
 FcPatternDestroy (FcPattern *p);
 
+FcBool
+FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
+
+FcBool
+FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
+
+FcChar32
+FcPatternHash (const FcPattern *p);
+
 FcBool
 FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
     
+FcBool
+FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
+    
 FcResult
 FcPatternGet (FcPattern *p, const char *object, int id, FcValue *v);
     
@@ -550,11 +628,17 @@ FcPatternBuild (FcPattern *orig, ...);
 FcChar8 *
 FcStrCopy (const FcChar8 *s);
 
+FcChar8 *
+FcStrCopyFilename (const FcChar8 *s);
+    
 #define FcToLower(c)   (('A' <= (c) && (c) <= 'Z') ? (c) - 'A' + 'a' : (c))
 
 int
 FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
 
+int
+FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
+
 int
 FcUtf8ToUcs4 (FcChar8   *src_orig,
              FcChar32  *dst,
@@ -566,6 +650,58 @@ FcUtf8Len (FcChar8 *string,
           int          *nchar,
           int          *wchar);
 
+#define FC_UTF8_MAX_LEN        6
+
+int
+FcUcs4ToUtf8 (FcChar32 ucs4,
+             FcChar8   dest[FC_UTF8_MAX_LEN]);
+
+int
+FcUtf16ToUcs4 (FcChar8 *src_orig,
+              FcEndian endian,
+              FcChar32 *dst,
+              int      len);       /* in bytes */
+
+FcBool
+FcUtf16Len (FcChar8    *string,
+           FcEndian    endian,
+           int         len,        /* in bytes */
+           int         *nchar,
+           int         *wchar);
+
+FcChar8 *
+FcStrDirname (const FcChar8 *file);
+
+FcChar8 *
+FcStrBasename (const FcChar8 *file);
+
+FcStrSet *
+FcStrSetCreate (void);
+
+FcBool
+FcStrSetMember (FcStrSet *set, const FcChar8 *s);
+
+FcBool
+FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
+
+FcBool
+FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
+
+FcBool
+FcStrSetDel (FcStrSet *set, const FcChar8 *s);
+
+void
+FcStrSetDestroy (FcStrSet *set);
+
+FcStrList *
+FcStrListCreate (FcStrSet *set);
+
+FcChar8 *
+FcStrListNext (FcStrList *list);
+
+void
+FcStrListDone (FcStrList *list);
+
 /* fcxml.c */
 FcBool
 FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);