diff options
Diffstat (limited to 'pango/mini-xft/minixftint.h')
-rw-r--r-- | pango/mini-xft/minixftint.h | 395 |
1 files changed, 395 insertions, 0 deletions
diff --git a/pango/mini-xft/minixftint.h b/pango/mini-xft/minixftint.h new file mode 100644 index 00000000..22f937a9 --- /dev/null +++ b/pango/mini-xft/minixftint.h @@ -0,0 +1,395 @@ +/* + * $XFree86: xc/lib/MiniXft/minixftint.h,v 1.26 2001/07/13 18:16:10 keithp Exp $ + * + * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _XFTINT_H_ +#define _XFTINT_H_ + +#include "MiniXftFreetype.h" + +typedef struct _MiniXftMatcher { + char *object; + double (*compare) (char *object, MiniXftValue value1, MiniXftValue value2); +} MiniXftMatcher; + +typedef struct _MiniXftSymbolic { + const char *name; + int value; +} MiniXftSymbolic; + +#define XFT_DRAW_N_SRC 2 + +#define XFT_DRAW_SRC_TEXT 0 +#define XFT_DRAW_SRC_RECT 1 + +typedef struct _MiniXftDisplayInfo { + struct _MiniXftDisplayInfo *next; + Display *display; + // XExtCodes *codes; + MiniXftPattern *defaults; + // MiniXftFontSet *coreFonts; + Bool hasRender; +} MiniXftDisplayInfo; + +extern MiniXftDisplayInfo *_MiniXftDisplayInfo; +extern MiniXftFontSet *_MiniXftGlobalFontSet; +extern char **MiniXftConfigDirs; +extern MiniXftFontSet *_MiniXftFontSet; + +#define XFT_NMISSING 256 + +#ifndef XFT_DEFAULT_PATH +#define XFT_DEFAULT_PATH "/usr/X11R6/lib/X11/XftConfig" +#endif + +#define XFT_DBG_OPEN 1 +#define XFT_DBG_OPENV 2 +#define XFT_DBG_RENDER 4 +#define XFT_DBG_DRAW 8 +#define XFT_DBG_REF 16 +#define XFT_DBG_GLYPH 32 +#define XFT_DBG_GLYPHV 64 +#define XFT_DBG_CACHE 128 +#define XFT_DBG_CACHEV 256 +#define XFT_DBG_MATCH 512 +#define XFT_DBG_MATCHV 1024 + +typedef enum _MiniXftOp { + MiniXftOpInteger, MiniXftOpDouble, MiniXftOpString, MiniXftOpMatrix, MiniXftOpBool, MiniXftOpNil, + MiniXftOpField, + MiniXftOpAssign, MiniXftOpPrepend, MiniXftOpAppend, + MiniXftOpQuest, + MiniXftOpOr, MiniXftOpAnd, MiniXftOpEqual, MiniXftOpNotEqual, + MiniXftOpLess, MiniXftOpLessEqual, MiniXftOpMore, MiniXftOpMoreEqual, + MiniXftOpPlus, MiniXftOpMinus, MiniXftOpTimes, MiniXftOpDivide, + MiniXftOpNot +} MiniXftOp; + +typedef struct _MiniXftExpr { + MiniXftOp op; + union { + int ival; + double dval; + char *sval; + MiniXftMatrix *mval; + Bool bval; + char *field; + struct { + struct _MiniXftExpr *left, *right; + } tree; + } u; +} MiniXftExpr; + +typedef enum _MiniXftQual { + MiniXftQualAny, MiniXftQualAll +} MiniXftQual; + +typedef struct _MiniXftTest { + struct _MiniXftTest *next; + MiniXftQual qual; + const char *field; + MiniXftOp op; + MiniXftValue value; +} MiniXftTest; + +typedef struct _MiniXftEdit { + struct _MiniXftEdit *next; + const char *field; + MiniXftOp op; + MiniXftExpr *expr; +} MiniXftEdit; + +typedef struct _MiniXftSubst { + struct _MiniXftSubst *next; + MiniXftTest *test; + MiniXftEdit *edit; +} MiniXftSubst; + +/* + * I tried this with functions that took va_list* arguments + * but portability concerns made me change these functions + * into macros (sigh). + */ + +#define _MiniXftPatternVapBuild(result, orig, va) \ +{ \ + MiniXftPattern *__p__ = (orig); \ + const char *__o__; \ + MiniXftValue __v__; \ + \ + if (!__p__) \ + { \ + __p__ = MiniXftPatternCreate (); \ + if (!__p__) \ + goto _MiniXftPatternVapBuild_bail0; \ + } \ + for (;;) \ + { \ + __o__ = va_arg (va, const char *); \ + if (!__o__) \ + break; \ + __v__.type = va_arg (va, MiniXftType); \ + switch (__v__.type) { \ + case MiniXftTypeVoid: \ + goto _MiniXftPatternVapBuild_bail1; \ + case MiniXftTypeInteger: \ + __v__.u.i = va_arg (va, int); \ + break; \ + case MiniXftTypeDouble: \ + __v__.u.d = va_arg (va, double); \ + break; \ + case MiniXftTypeString: \ + __v__.u.s = va_arg (va, char *); \ + break; \ + case MiniXftTypeBool: \ + __v__.u.b = va_arg (va, Bool); \ + break; \ + case MiniXftTypeMatrix: \ + __v__.u.m = va_arg (va, MiniXftMatrix *); \ + break; \ + } \ + if (!MiniXftPatternAdd (__p__, __o__, __v__, True)) \ + goto _MiniXftPatternVapBuild_bail1; \ + } \ + result = __p__; \ + goto _MiniXftPatternVapBuild_return; \ + \ +_MiniXftPatternVapBuild_bail1: \ + if (!orig) \ + MiniXftPatternDestroy (__p__); \ +_MiniXftPatternVapBuild_bail0: \ + result = 0; \ + \ +_MiniXftPatternVapBuild_return: \ + ; \ +} + + +/* xftcache.c */ + +char * +MiniXftFileCacheFind (char *file, int id, int *count); + +void +MiniXftFileCacheDispose (void); + +void +MiniXftFileCacheLoad (char *cache); + +Bool +MiniXftFileCacheUpdate (char *file, int id, char *name); + +Bool +MiniXftFileCacheSave (char *cache); + +Bool +MiniXftFileCacheReadDir (MiniXftFontSet *set, const char *cache_file); + +Bool +MiniXftFileCacheWriteDir (MiniXftFontSet *set, const char *cache_file); + +/* xftcfg.c */ +Bool +MiniXftConfigAddDir (char *d); + +Bool +MiniXftConfigSetCache (char *c); + +char * +MiniXftConfigGetCache (void); + +Bool +MiniXftConfigAddEdit (MiniXftTest *test, MiniXftEdit *edit); + +Bool +_MiniXftConfigCompareValue (MiniXftValue m, + MiniXftOp op, + MiniXftValue v); + +/* xftdbg.c */ +void +MiniXftOpPrint (MiniXftOp op); + +void +MiniXftTestPrint (MiniXftTest *test); + +void +MiniXftExprPrint (MiniXftExpr *expr); + +void +MiniXftEditPrint (MiniXftEdit *edit); + +void +MiniXftSubstPrint (MiniXftSubst *subst); + +/* xftdpy.c */ +int +MiniXftDefaultParseBool (char *v); + +Bool +MiniXftDefaultGetBool (Display *dpy, const char *object, int screen, Bool def); + +int +MiniXftDefaultGetInteger (Display *dpy, const char *object, int screen, int def); + +double +MiniXftDefaultGetDouble (Display *dpy, const char *object, int screen, double def); + +MiniXftFontSet * +MiniXftDisplayGetFontSet (Display *dpy); + +/* xftextent.c */ +/* xftfont.c */ +int +_MiniXftFontDebug (void); + +/* xftfs.c */ +/* xftgram.y */ +int +MiniXftConfigparse (void); + +int +MiniXftConfigwrap (void); + +void +MiniXftConfigerror (char *fmt, ...); + +char * +MiniXftConfigSaveField (const char *field); + +MiniXftTest * +MiniXftTestCreate (MiniXftQual qual, const char *field, MiniXftOp compare, MiniXftValue value); + +MiniXftExpr * +MiniXftExprCreateInteger (int i); + +MiniXftExpr * +MiniXftExprCreateDouble (double d); + +MiniXftExpr * +MiniXftExprCreateString (const char *s); + +MiniXftExpr * +MiniXftExprCreateMatrix (const MiniXftMatrix *m); + +MiniXftExpr * +MiniXftExprCreateBool (Bool b); + +MiniXftExpr * +MiniXftExprCreateNil (void); + +MiniXftExpr * +MiniXftExprCreateField (const char *field); + +MiniXftExpr * +MiniXftExprCreateOp (MiniXftExpr *left, MiniXftOp op, MiniXftExpr *right); + +void +MiniXftExprDestroy (MiniXftExpr *e); + +MiniXftEdit * +MiniXftEditCreate (const char *field, MiniXftOp op, MiniXftExpr *expr); + +void +MiniXftEditDestroy (MiniXftEdit *e); + +/* xftinit.c */ + +/* xftlex.l */ +extern int MiniXftConfigLineno; +extern char *MiniXftConfigFile; + +int +MiniXftConfiglex (void); + +Bool +MiniXftConfigLexFile(char *s); + +Bool +MiniXftConfigPushInput (char *s, Bool complain); + +/* xftlist.c */ +Bool +MiniXftListValueCompare (MiniXftValue v1, + MiniXftValue v2); + +Bool +MiniXftListValueListCompare (MiniXftValueList *v1orig, + MiniXftValueList *v2orig, + MiniXftQual qual); + +Bool +MiniXftListMatch (MiniXftPattern *p, + MiniXftPattern *font, + MiniXftQual qual); + +Bool +MiniXftListAppend (MiniXftFontSet *s, + MiniXftPattern *font, + MiniXftObjectSet *os); + + +/* xftmatch.c */ + +/* xftname.c */ +Bool +MiniXftNameConstant (char *string, int *result); + +/* xftpat.c */ + +/* xftrender.c */ + +/* xftmatrix.c */ +MiniXftMatrix * +_MiniXftSaveMatrix (const MiniXftMatrix *mat); + +/* xftstr.c */ +char * +_MiniXftSaveString (const char *s); + +const char * +_MiniXftGetInt(const char *ptr, int *val); + +char * +_MiniXftSplitStr (const char *field, char *save); + +char * +_MiniXftDownStr (const char *field, char *save); + +const char * +_MiniXftSplitField (const char *field, char *save); + +const char * +_MiniXftSplitValue (const char *field, char *save); + +int +_MiniXftMatchSymbolic (MiniXftSymbolic *s, int n, const char *name, int def); + +int +_MiniXftStrCmpIgnoreCase (const char *s1, const char *s2); + +/* xftxlfd.c */ +Bool +MiniXftCoreAddFonts (MiniXftFontSet *set, Display *dpy, Bool ignore_scalable); + +#endif /* _XFT_INT_H_ */ |