1 #ifndef FONTCONFIG_PROTOS_H
    2 #define FONTCONFIG_PROTOS_H
    3 
    4 /*
    5  * fontconfig.library include
    6  *
    7  * Copyright (C) 2012 The MorphOS Development Team, All Rights Reserved.
    8  */
    9 
   10 #ifndef FONTCONFIG_FONTCONFIG_H
   11 #include <fontconfig/fontconfig.h>
   12 #endif
   13 
   14 #include <ft2build.h>
   15 // ft2build.h should include these but Linux is sooooooo silly and it wont
   16 #include <freetype/freetype.h>
   17 #include <freetype/fttypes.h>
   18 
   19 #if 0
   20 /* These are already defined in fontconfig.h */
   21 
   22 #ifdef __cplusplus
   23 extern "C" {
   24 #endif /* __cplusplus */
   25 
   26 #define FC_CHARSET_MAP_SIZE (256/32)
   27 #define FC_CHARSET_DONE	((FcChar32) -1)
   28 #define FC_UTF8_MAX_LEN	6
   29 
   30 FcBlanks *FcBlanksCreate (void);
   31 void FcBlanksDestroy (FcBlanks *b);
   32 FcBool FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
   33 FcBool FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
   34 
   35 const FcChar8 *FcCacheDir(const FcCache *c);
   36 FcFontSet *FcCacheCopySet(const FcCache *c);
   37 const FcChar8 *FcCacheSubdir (const FcCache *c, int i);
   38 int FcCacheNumSubdir (const FcCache *c);
   39 int FcCacheNumFont (const FcCache *c);
   40 FcBool FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config);
   41 FcBool FcDirCacheValid (const FcChar8 *cache_file);
   42 
   43 FcChar8 *FcConfigHome (void);
   44 FcBool FcConfigEnableHome (FcBool enable);
   45 FcChar8 *FcConfigFilename (const FcChar8 *url);
   46 FcConfig *FcConfigCreate (void);
   47 FcConfig *FcConfigReference (FcConfig *config);
   48 void FcConfigDestroy (FcConfig *config);
   49 FcBool FcConfigSetCurrent (FcConfig *config);
   50 FcConfig *FcConfigGetCurrent (void);
   51 FcBool FcConfigUptoDate (FcConfig *config);
   52 FcBool FcConfigBuildFonts (FcConfig *config);
   53 FcStrList *FcConfigGetFontDirs (FcConfig   *config);
   54 FcStrList *FcConfigGetConfigDirs (FcConfig   *config);
   55 FcStrList *FcConfigGetConfigFiles (FcConfig    *config);
   56 FcChar8 *FcConfigGetCache (FcConfig  *config);
   57 FcBlanks *FcConfigGetBlanks (FcConfig *config);
   58 FcStrList *FcConfigGetCacheDirs (FcConfig	*config);
   59 int FcConfigGetRescanInterval (FcConfig *config);
   60 FcBool FcConfigSetRescanInterval (FcConfig *config, int rescanInterval);
   61 FcFontSet *FcConfigGetFonts (FcConfig	*config,		  FcSetName	set);
   62 FcBool FcConfigAppFontAddFile (FcConfig    *config,			const FcChar8  *file);
   63 FcBool FcConfigAppFontAddDir (FcConfig	    *config,const FcChar8   *dir);
   64 void FcConfigAppFontClear (FcConfig	    *config);
   65 FcBool FcConfigSubstituteWithPat (FcConfig	*config,			   FcPattern	*p,			   FcPattern	*p_pat,			   FcMatchKind	kind);
   66 FcBool FcConfigSubstitute (FcConfig	*config,		    FcPattern	*p,		    FcMatchKind	kind);
   67 const FcChar8 *FcConfigGetSysRoot (const FcConfig *config);
   68 void FcConfigSetSysRoot (FcConfig *config, const FcChar8 *sysroot);
   69 
   70 FcCharSet*FcCharSetCreate (void);
   71 void FcCharSetDestroy (FcCharSet *fcs);
   72 FcBool FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
   73 FcBool FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4);
   74 FcCharSet*FcCharSetCopy (FcCharSet *src);
   75 FcBool FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
   76 FcCharSet*FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
   77 FcCharSet*FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
   78 FcCharSet*FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
   79 FcBool FcCharSetMerge (FcCharSet *a, const FcCharSet *b, FcBool *changed);
   80 FcBool FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
   81 FcChar32 FcCharSetCount (const FcCharSet *a);
   82 FcChar32 FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
   83 FcChar32 FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
   84 FcBool FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
   85 FcChar32 FcCharSetFirstPage(const FcCharSet *a, FcChar32	map[FC_CHARSET_MAP_SIZE],		    FcChar32	    *next);
   86 FcChar32 FcCharSetNextPage(const FcCharSet *a, FcChar32 map[FC_CHARSET_MAP_SIZE],		   FcChar32	    *next);
   87 
   88 void FcValuePrint (const FcValue v);
   89 void FcPatternPrint (const FcPattern *p);
   90 void FcFontSetPrint (const FcFontSet *s);
   91 
   92 void FcDefaultSubstitute (FcPattern *pattern);
   93 
   94 FcBool FcFileIsDir (const FcChar8 *file);
   95 FcBool FcFileScan (FcFontSet	    *set,	    FcStrSet	    *dirs,	    FcFileCache	    *cache,	    FcBlanks	    *blanks,	    const FcChar8   *file,	    FcBool	    force);
   96 FcBool FcDirScan (FcFontSet	    *set,	   FcStrSet	    *dirs,	   FcFileCache	    *cache,	   FcBlanks	    *blanks,	   const FcChar8    *dir,	   FcBool	    force);
   97 FcBool FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
   98 FcCache *FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
   99 FcCache *FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
  100 FcCache *FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
  101 FcCache *FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat);
  102 void FcDirCacheUnload (FcCache *cache);
  103 
  104 FcPattern * FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count);
  105 
  106 FcFontSet *FcFontSetCreate (void);
  107 
  108 void FcFontSetDestroy (FcFontSet *s);
  109 FcBool FcFontSetAdd (FcFontSet *s, FcPattern *font);
  110 
  111 FcConfig *FcInitLoadConfig (void);
  112 FcConfig *FcInitLoadConfigAndFonts (void);
  113 FcBool FcInit (void);
  114 void FcFini (void);
  115 int FcGetVersion (void);
  116 FcBool FcInitReinitialize (void);
  117 FcBool FcInitBringUptoDate (void);
  118 
  119 FcStrSet *FcGetLangs (void);
  120 const FcCharSet *FcLangGetCharSet (const FcChar8 *lang);
  121 FcLangSet *FcLangSetCreate (void);
  122 void FcLangSetDestroy (FcLangSet *ls);
  123 FcLangSet* FcLangSetCopy (const FcLangSet *ls);
  124 FcBool FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
  125 FcBool FcLangSetDel (FcLangSet *ls, const FcChar8 *lang);
  126 FcLangResult FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
  127 FcLangResult FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
  128 FcBool FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
  129 FcBool FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
  130 FcChar32 FcLangSetHash (const FcLangSet *ls);
  131 FcStrSet *FcLangSetGetLangs (const FcLangSet *ls);
  132 FcLangSet * FcLangSetUnion (const FcLangSet *a, const FcLangSet *b);
  133 FcLangSet * FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b);
  134 
  135 FcObjectSet *FcObjectSetCreate (void);
  136 FcBool FcObjectSetAdd (FcObjectSet *os, const char *object);
  137 void FcObjectSetDestroy (FcObjectSet *os);
  138 FcObjectSet *FcObjectSetVaBuild (const char *first, va_list va);
  139 FcObjectSet *FcObjectSetBuild (const char *first, ...); /* FC_ATTRIBUTE_SENTINEL(0); */
  140 FcFontSet *FcFontSetList (FcConfig	    *config,	       FcFontSet    **sets,	       int	    nsets,	       FcPattern    *p,	       FcObjectSet  *os);
  141 FcFontSet *FcFontList (FcConfig	*config,	    FcPattern	*p,	    FcObjectSet *os);
  142 
  143 FcAtomic *FcAtomicCreate (const FcChar8   *file);
  144 FcBool FcAtomicLock (FcAtomic *atomic);
  145 FcChar8 *FcAtomicNewFile (FcAtomic *atomic);
  146 FcChar8 *FcAtomicOrigFile (FcAtomic *atomic);
  147 FcBool FcAtomicReplaceOrig (FcAtomic *atomic);
  148 void FcAtomicDeleteNew (FcAtomic *atomic);
  149 void FcAtomicUnlock (FcAtomic *atomic);
  150 void FcAtomicDestroy (FcAtomic *atomic);
  151 
  152 FcPattern *FcFontSetMatch (FcConfig    *config,		FcFontSet   **sets,		int	    nsets,		FcPattern   *p,		FcResult    *result);
  153 FcPattern *FcFontMatch (FcConfig	*config,	     FcPattern	*p, 	     FcResult	*result);
  154 FcPattern *FcFontRenderPrepare (FcConfig	    *config,		     FcPattern	    *pat,		     FcPattern	    *font);
  155 FcFontSet *FcFontSetSort (FcConfig	    *config,	       FcFontSet    **sets,	       int	    nsets,	       FcPattern    *p,	       FcBool	    trim,	       FcCharSet    **csp,	       FcResult	    *result);
  156 FcFontSet *FcFontSort (FcConfig	 *config,	    FcPattern    *p,	    FcBool	 trim,	    FcCharSet    **csp,	    FcResult	 *result);
  157 void FcFontSetSortDestroy (FcFontSet *fs);
  158 
  159 FcMatrix *FcMatrixCopy (const FcMatrix *mat);
  160 FcBool FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
  161 void FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
  162 void FcMatrixRotate (FcMatrix *m, double c, double s);
  163 void FcMatrixScale (FcMatrix *m, double sx, double sy);
  164 void FcMatrixShear (FcMatrix *m, double sh, double sv);
  165 
  166 FcBool FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
  167 FcBool FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
  168 const FcObjectType *FcNameGetObjectType (const char *object);
  169 FcBool FcNameRegisterConstants (const FcConstant *consts, int nconsts);
  170 FcBool FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
  171 const FcConstant *FcNameGetConstant (FcChar8 *string);
  172 FcBool FcNameConstant (FcChar8 *string, int *result);
  173 FcPattern *FcNameParse (const FcChar8 *name);
  174 FcChar8 * FcNameUnparse (FcPattern *pat);
  175 
  176 FcPattern *FcPatternCreate (void);
  177 FcPattern *FcPatternDuplicate (const FcPattern *p);
  178 void FcPatternReference (FcPattern *p);
  179 FcPattern *FcPatternFilter (FcPattern *p, const FcObjectSet *os);
  180 void FcValueDestroy (FcValue v);
  181 FcBool FcValueEqual (FcValue va, FcValue vb);
  182 FcValue FcValueSave (FcValue v);
  183 void FcPatternDestroy (FcPattern *p);
  184 FcBool FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
  185 FcBool FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
  186 FcChar32 FcPatternHash (const FcPattern *p);
  187 FcBool FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
  188 FcBool FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
  189 FcResult FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
  190 FcBool FcPatternDel (FcPattern *p, const char *object);
  191 FcBool FcPatternRemove (FcPattern *p, const char *object, int id);
  192 FcBool FcPatternAddInteger (FcPattern *p, const char *object, int i);
  193 FcBool FcPatternAddDouble (FcPattern *p, const char *object, double d);
  194 FcBool FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
  195 FcBool FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
  196 FcBool FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
  197 FcBool FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
  198 FcBool FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
  199 FcResult FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
  200 FcResult FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
  201 FcResult FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
  202 FcResult FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
  203 FcResult FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
  204 FcResult FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
  205 FcResult FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
  206 FcPattern *FcPatternVaBuild (FcPattern *p, va_list va);
  207 FcPattern *FcPatternBuild (FcPattern *p, ...);	/* FC_ATTRIBUTE_SENTINEL(0); */
  208 FcChar8 *FcPatternFormat (FcPattern *pat, const FcChar8 *format);
  209 
  210 FcChar8 *FcStrCopy (const FcChar8 *s);
  211 FcChar8 *FcStrCopyFilename (const FcChar8 *s);
  212 FcChar8 *FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
  213 void FcStrFree (FcChar8 *s);
  214 FcChar8 *FcStrDowncase (const FcChar8 *s);
  215 int FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
  216 int FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
  217 const FcChar8 * FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
  218 const FcChar8 *FcStrStr (const FcChar8 *s1, const FcChar8 *s2);
  219 int FcUtf8ToUcs4 (const FcChar8 *src_orig, FcChar32	    *dst, int	    len);
  220 FcBool FcUtf8Len (const FcChar8    *string,	   int		    len,	   int		    *nchar,	   int		    *wchar);
  221 int FcUcs4ToUtf8 (FcChar32	ucs4,	      FcChar8	dest[FC_UTF8_MAX_LEN]);
  222 int FcUtf16ToUcs4 (const FcChar8	*src_orig,	       FcEndian		endian,	       FcChar32		*dst,	       int		len);	    /* in bytes */
  223 FcBool FcUtf16Len (const FcChar8   *string,	    FcEndian	    endian,	    int		    len,	    /* in bytes */	    int		    *nchar,	    int		    *wchar);
  224 FcChar8 *FcStrDirname (const FcChar8 *file);
  225 FcChar8 *FcStrBasename (const FcChar8 *file);
  226 FcStrSet *FcStrSetCreate (void);
  227 FcBool FcStrSetMember (FcStrSet *set, const FcChar8 *s);
  228 FcBool FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
  229 FcBool FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
  230 FcBool FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
  231 FcBool FcStrSetDel (FcStrSet *set, const FcChar8 *s);
  232 void FcStrSetDestroy (FcStrSet *set);
  233 FcStrList *FcStrListCreate (FcStrSet *set);
  234 FcChar8 *FcStrListNext (FcStrList *list);
  235 void FcStrListDone (FcStrList *list);
  236 FcBool FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
  237 
  238 FT_UInt FcFreeTypeCharIndex (FT_Face face, FcChar32 ucs4);
  239 FcCharSet *FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing);
  240 FcCharSet *FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks);
  241 FcResult FcPatternGetFTFace (const FcPattern *p, const char *object, int n, FT_Face *f);
  242 FcBool FcPatternAddFTFace (FcPattern *p, const char *object, const FT_Face f);
  243 FcPattern *FcFreeTypeQueryFace (const FT_Face  face, const FcChar8  *file, int	    id, FcBlanks	    *blanks);
  244 
  245 FcBool FcCharSetDelChar (FcCharSet *fcs, FcChar32 ucs4);
  246 FcBool FcLangSetDel (FcLangSet *ls, const FcChar8 *lang);
  247 FcLangSet *FcLangSetUnion (const FcLangSet *a, const FcLangSet *b);
  248 FcLangSet *FcLangSetSubtract (const FcLangSet *a, const FcLangSet *b);
  249 
  250 /* V53.2 */
  251 FcBool FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose);
  252 void FcCacheCreateTagFile (const FcConfig *config);
  253 FcStrSet * FcGetDefaultLangs (void);
  254 
  255 /* MorphOS extensions */
  256 void FcExtInsertProgressCallback(FcExtProgressCallback call);
  257 void FcExtRemoveProgressCallback(FcExtProgressCallback call);
  258 
  259 /* V55 */
  260 FcBool FcDirCacheCreateUUID (FcChar8 *dir, FcBool force, FcConfig *config);
  261 FcBool FcDirCacheDeleteUUID (const FcChar8 *dir, FcConfig  *config);
  262 int FcPatternObjectCount (const FcPattern *pat);
  263 FcResult FcPatternGetWithBinding (const FcPattern *p, const char *object, int id, FcValue *v, FcValueBinding *b);
  264 void FcPatternIterStart (const FcPattern *pat, FcPatternIter *iter);
  265 FcBool FcPatternIterNext (const FcPattern *pat, FcPatternIter *iter);
  266 FcBool FcPatternIterEqual (const FcPattern *p1, FcPatternIter *i1, const FcPattern *p2, FcPatternIter *i2);
  267 FcBool FcPatternFindIter (const FcPattern *pat, FcPatternIter *iter, const char *object);
  268 FcBool FcPatternIterIsValid (const FcPattern *pat, FcPatternIter *iter);
  269 const char *FcPatternIterGetObject (const FcPattern *pat, FcPatternIter *iter);
  270 int FcPatternIterValueCount (const FcPattern *pat, FcPatternIter *iter);
  271 FcResult FcPatternIterGetValue (const FcPattern *pat, FcPatternIter *iter, int id, FcValue *v, FcValueBinding *b);
  272 unsigned int FcFreeTypeQueryAll(const FcChar8 *file, unsigned int id, FcBlanks *blanks, int *count, FcFontSet *set);
  273 FcChar8 *FcLangNormalize (const FcChar8 *lang);
  274 FcRange *FcRangeCopy (const FcRange *r);
  275 FcRange *FcRangeCreateDouble (double begin, double end);
  276 FcRange *FcRangeCreateInteger (FcChar32 begin, FcChar32 end);
  277 void FcRangeDestroy (FcRange *range);
  278 FcBool FcRangeGetDouble(const FcRange *range, double *begin, double *end);
  279 FcBool FcConfigParseAndLoadFromMemory (FcConfig *config, const FcChar8 *buffer, FcBool complain);
  280 void FcConfigFileInfoIterInit (FcConfig *config, FcConfigFileInfoIter *iter);
  281 FcBool FcConfigFileInfoIterNext (FcConfig *config, FcConfigFileInfoIter *iter);
  282 FcBool FcConfigFileInfoIterGet (FcConfig *config, FcConfigFileInfoIter *iter, FcChar8 **name, FcChar8 **description, FcBool *enabled);
  283 double FcWeightFromOpenTypeDouble (double ot_weight);
  284 double FcWeightToOpenTypeDouble (double fc_weight);
  285 int FcWeightFromOpenType (int ot_weight);
  286 int FcWeightToOpenType (int fc_weight);
  287 FcChar8 *FcConfigGetFilename (FcConfig *config, const FcChar8 *url);
  288 FcBool FcConfigAcceptFont (FcConfig *config, const FcPattern *font);
  289 FcBool FcConfigAcceptFilter (FcConfig *config, const FcPattern *font);
  290 FcConfig *FcConfigSetFontSetFilter (FcConfig *config, FcFilterFontSetFunc filter_func, FcDestroyFunc destroy_data_func, void *user_data);
  291 const FcConstant *FcNameGetConstantFor (const FcChar8 *string, const char *object);
  292 FcBool FcPatternAddRange (FcPattern *p, const char *object, const FcRange *r);
  293 FcResult FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r);
  294 FcChar8 * FcStrBuildFilename (const FcChar8 *path, ...);
  295 void FcStrListFirst (FcStrList *list);
  296 void FcConfigPreferAppFont (FcConfig *config, FcBool flag);
  297 #ifdef __cplusplus
  298 }
  299 #endif /* __cplusplus */
  300 
  301 #endif
  302 
  303 #endif /* FONTCONFIG_PROTOS_H */