xftint.h revision 8292847c
1c76ae52dSmrg/* 2c76ae52dSmrg * Copyright © 2000 Keith Packard 3c76ae52dSmrg * 4c76ae52dSmrg * Permission to use, copy, modify, distribute, and sell this software and its 5c76ae52dSmrg * documentation for any purpose is hereby granted without fee, provided that 6c76ae52dSmrg * the above copyright notice appear in all copies and that both that 7c76ae52dSmrg * copyright notice and this permission notice appear in supporting 8c76ae52dSmrg * documentation, and that the name of Keith Packard not be used in 9c76ae52dSmrg * advertising or publicity pertaining to distribution of the software without 10c76ae52dSmrg * specific, written prior permission. Keith Packard makes no 11c76ae52dSmrg * representations about the suitability of this software for any purpose. It 12c76ae52dSmrg * is provided "as is" without express or implied warranty. 13c76ae52dSmrg * 14c76ae52dSmrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15c76ae52dSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16c76ae52dSmrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17c76ae52dSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18c76ae52dSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19c76ae52dSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20c76ae52dSmrg * PERFORMANCE OF THIS SOFTWARE. 21c76ae52dSmrg */ 22c76ae52dSmrg 23c76ae52dSmrg/* 24c76ae52dSmrg * These definitions are solely for use by the implementation of Xft 25c76ae52dSmrg * and constitute no kind of standard. If you need any of these functions, 26c76ae52dSmrg * please drop me a note. Either the library needs new functionality, 27c76ae52dSmrg * or there's a way to do what you need using the existing published 28c76ae52dSmrg * interfaces. keithp@freedesktop.org 29c76ae52dSmrg */ 30c76ae52dSmrg 31c76ae52dSmrg#ifndef _XFTINT_H_ 32c76ae52dSmrg#define _XFTINT_H_ 33c76ae52dSmrg 34c76ae52dSmrg#ifdef HAVE_CONFIG_H 35c76ae52dSmrg#include "config.h" 36c76ae52dSmrg#else /* X monolithic tree */ 37c76ae52dSmrg#define HAVE_STDLIB_H 1 /* assumed since all ANSI C platforms require it */ 38c76ae52dSmrg#include <X11/Xosdefs.h> /* get string.h or strings.h as appropriate */ 39c76ae52dSmrg#endif 40c76ae52dSmrg 41c76ae52dSmrg#include <stdio.h> 42c76ae52dSmrg#if HAVE_STDLIB_H 43c76ae52dSmrg#include <stdlib.h> 44c76ae52dSmrg#endif 45c76ae52dSmrg#if HAVE_STRING_H 46c76ae52dSmrg#include <string.h> 47c76ae52dSmrg#else 48c76ae52dSmrg#if HAVE_STRINGS_H 49c76ae52dSmrg#include <strings.h> 50c76ae52dSmrg#endif 51c76ae52dSmrg#endif 52c76ae52dSmrg#include <ctype.h> 53c76ae52dSmrg 54c76ae52dSmrg#include <X11/Xlib.h> 55c76ae52dSmrg#include <X11/Xutil.h> 56c76ae52dSmrg#include <X11/Xmd.h> 57c76ae52dSmrg#include <X11/Xlibint.h> 58c76ae52dSmrg#define _XFT_NO_COMPAT_ 59c76ae52dSmrg#include "Xft.h" 60c76ae52dSmrg#include <fontconfig/fcprivate.h> 61c76ae52dSmrg#include <fontconfig/fcfreetype.h> 62c76ae52dSmrg 63c76ae52dSmrg/* Added to <X11/Xfuncproto.h> in X11R6.9 and later */ 64c76ae52dSmrg#ifndef _X_HIDDEN 65c76ae52dSmrg# define _X_HIDDEN /**/ 66c76ae52dSmrg#endif 67c76ae52dSmrg#ifndef _X_EXPORT 68c76ae52dSmrg# define _X_EXPORT /**/ 69c76ae52dSmrg#endif 70c76ae52dSmrg 71c76ae52dSmrgtypedef struct _XftMatcher { 72c76ae52dSmrg char *object; 73c76ae52dSmrg double (*compare) (char *object, FcValue value1, FcValue value2); 74c76ae52dSmrg} XftMatcher; 75c76ae52dSmrg 76c76ae52dSmrgtypedef struct _XftSymbolic { 77c76ae52dSmrg const char *name; 78c76ae52dSmrg int value; 79c76ae52dSmrg} XftSymbolic; 80c76ae52dSmrg 81c76ae52dSmrg/* 82c76ae52dSmrg * Glyphs are stored in this structure 83c76ae52dSmrg */ 84c76ae52dSmrgtypedef struct _XftGlyph { 85c76ae52dSmrg XGlyphInfo metrics; 86c76ae52dSmrg void *bitmap; 87c76ae52dSmrg unsigned long glyph_memory; 88c76ae52dSmrg} XftGlyph; 89c76ae52dSmrg 90c76ae52dSmrg/* 91c76ae52dSmrg * A hash table translates Unicode values into glyph indicies 92c76ae52dSmrg */ 93c76ae52dSmrgtypedef struct _XftUcsHash { 94c76ae52dSmrg FcChar32 ucs4; 95c76ae52dSmrg FT_UInt glyph; 96c76ae52dSmrg} XftUcsHash; 97c76ae52dSmrg 98c76ae52dSmrg/* 99c76ae52dSmrg * Many fonts can share the same underlying face data; this 100c76ae52dSmrg * structure references that. Note that many faces may in fact 101c76ae52dSmrg * live in the same font file; that is irrelevant to this structure 102c76ae52dSmrg * which is concerned only with the individual faces themselves 103c76ae52dSmrg */ 104c76ae52dSmrg 105c76ae52dSmrgtypedef struct _XftFtFile { 106c76ae52dSmrg struct _XftFtFile *next; 107c76ae52dSmrg int ref; /* number of font infos using this file */ 1082836776bSmrg 109c76ae52dSmrg char *file; /* file name */ 110c76ae52dSmrg int id; /* font index within that file */ 111c76ae52dSmrg 112c76ae52dSmrg FT_F26Dot6 xsize; /* current xsize setting */ 113c76ae52dSmrg FT_F26Dot6 ysize; /* current ysize setting */ 114c76ae52dSmrg FT_Matrix matrix; /* current matrix setting */ 1152836776bSmrg 116c76ae52dSmrg int lock; /* lock count; can't unload unless 0 */ 117c76ae52dSmrg FT_Face face; /* pointer to face; only valid when lock */ 118c76ae52dSmrg} XftFtFile; 119c76ae52dSmrg 120c76ae52dSmrg/* 121c76ae52dSmrg * This structure holds the data extracted from a pattern 122c76ae52dSmrg * needed to create a unique font object. 123c76ae52dSmrg */ 124c76ae52dSmrg 125c76ae52dSmrgstruct _XftFontInfo { 126c76ae52dSmrg /* 127c76ae52dSmrg * Hash value (not include in hash value computation) 128c76ae52dSmrg */ 129c76ae52dSmrg FcChar32 hash; 130c76ae52dSmrg XftFtFile *file; /* face source */ 131c76ae52dSmrg /* 132c76ae52dSmrg * Rendering options 133c76ae52dSmrg */ 134c76ae52dSmrg FT_F26Dot6 xsize, ysize; /* pixel size */ 135c76ae52dSmrg FcBool antialias; /* doing antialiasing */ 136c76ae52dSmrg FcBool embolden; /* force emboldening */ 137c76ae52dSmrg int rgba; /* subpixel order */ 1382836776bSmrg int lcd_filter; /* lcd filter */ 139c76ae52dSmrg FT_Matrix matrix; /* glyph transformation matrix */ 140c76ae52dSmrg FcBool transform; /* non-identify matrix? */ 141c76ae52dSmrg FT_Int load_flags; /* glyph load flags */ 142c76ae52dSmrg FcBool render; /* whether to use the Render extension */ 143c76ae52dSmrg /* 144c76ae52dSmrg * Internal fields 145c76ae52dSmrg */ 146c76ae52dSmrg int spacing; 147c76ae52dSmrg FcBool minspace; 148c76ae52dSmrg int char_width; 149c76ae52dSmrg}; 150c76ae52dSmrg 151c76ae52dSmrg/* 152c76ae52dSmrg * Internal version of the font with private data 153c76ae52dSmrg */ 154c76ae52dSmrg 155c76ae52dSmrgtypedef struct _XftFontInt { 156c76ae52dSmrg XftFont public; /* public fields */ 157c76ae52dSmrg XftFont *next; /* all fonts on display */ 158c76ae52dSmrg XftFont *hash_next; /* fonts in this hash chain */ 159c76ae52dSmrg XftFontInfo info; /* Data from pattern */ 160c76ae52dSmrg int ref; /* reference count */ 161c76ae52dSmrg /* 162c76ae52dSmrg * Per-glyph information, indexed by glyph ID 163c76ae52dSmrg * This array follows the font in memory 164c76ae52dSmrg */ 165c76ae52dSmrg XftGlyph **glyphs; 166c76ae52dSmrg int num_glyphs; /* size of glyphs/bitmaps arrays */ 167c76ae52dSmrg /* 168c76ae52dSmrg * Hash table to get from Unicode value to glyph ID 169c76ae52dSmrg * This array follows the glyphs in memory 170c76ae52dSmrg */ 171c76ae52dSmrg XftUcsHash *hash_table; 172c76ae52dSmrg int hash_value; 173c76ae52dSmrg int rehash_value; 174c76ae52dSmrg /* 175c76ae52dSmrg * X specific fields 176c76ae52dSmrg */ 177c76ae52dSmrg GlyphSet glyphset; /* Render glyphset */ 178c76ae52dSmrg XRenderPictFormat *format; /* Render format for glyphs */ 179c76ae52dSmrg /* 180c76ae52dSmrg * Glyph memory management fields 181c76ae52dSmrg */ 182c76ae52dSmrg unsigned long glyph_memory; 183c76ae52dSmrg unsigned long max_glyph_memory; 184c76ae52dSmrg FcBool use_free_glyphs; /* Use XRenderFreeGlyphs */ 185c76ae52dSmrg} XftFontInt; 186c76ae52dSmrg 187c76ae52dSmrgtypedef enum _XftClipType { 188c76ae52dSmrg XftClipTypeNone, XftClipTypeRegion, XftClipTypeRectangles 189c76ae52dSmrg} XftClipType; 190c76ae52dSmrg 191c76ae52dSmrgtypedef struct _XftClipRect { 192c76ae52dSmrg int xOrigin; 193c76ae52dSmrg int yOrigin; 194c76ae52dSmrg int n; 195c76ae52dSmrg} XftClipRect; 196c76ae52dSmrg 197c76ae52dSmrg#define XftClipRects(cr) ((XRectangle *) ((cr) + 1)) 198c76ae52dSmrg 199c76ae52dSmrgtypedef union _XftClip { 200c76ae52dSmrg XftClipRect *rect; 201c76ae52dSmrg Region region; 202c76ae52dSmrg} XftClip; 203c76ae52dSmrg 204c76ae52dSmrgstruct _XftDraw { 205c76ae52dSmrg Display *dpy; 206c76ae52dSmrg int screen; 207c76ae52dSmrg unsigned int bits_per_pixel; 208c76ae52dSmrg unsigned int depth; 209c76ae52dSmrg Drawable drawable; 210c76ae52dSmrg Visual *visual; /* NULL for bitmaps */ 211c76ae52dSmrg Colormap colormap; 212c76ae52dSmrg XftClipType clip_type; 213c76ae52dSmrg XftClip clip; 214c76ae52dSmrg int subwindow_mode; 215c76ae52dSmrg struct { 216c76ae52dSmrg Picture pict; 217c76ae52dSmrg } render; 218c76ae52dSmrg struct { 219c76ae52dSmrg GC gc; 220c76ae52dSmrg int use_pixmap; 221c76ae52dSmrg } core; 222c76ae52dSmrg}; 223c76ae52dSmrg 224c76ae52dSmrg/* 225c76ae52dSmrg * Instead of taking two round trips for each blending request, 226c76ae52dSmrg * assume that if a particular drawable fails GetImage that it will 227c76ae52dSmrg * fail for a "while"; use temporary pixmaps to avoid the errors 228c76ae52dSmrg */ 229c76ae52dSmrg 230c76ae52dSmrg#define XFT_ASSUME_PIXMAP 20 231c76ae52dSmrg 232c76ae52dSmrgtypedef struct _XftSolidColor { 233c76ae52dSmrg XRenderColor color; 234c76ae52dSmrg int screen; 235c76ae52dSmrg Picture pict; 236c76ae52dSmrg} XftSolidColor; 237c76ae52dSmrg 238c76ae52dSmrg#define XFT_NUM_SOLID_COLOR 16 239c76ae52dSmrg 240c76ae52dSmrg#define XFT_NUM_FONT_HASH 127 241c76ae52dSmrg 242c76ae52dSmrgtypedef struct _XftDisplayInfo { 243c76ae52dSmrg struct _XftDisplayInfo *next; 244c76ae52dSmrg Display *display; 245c76ae52dSmrg XExtCodes *codes; 246c76ae52dSmrg FcPattern *defaults; 247c76ae52dSmrg FcBool hasRender; 2488292847cSmrg FcBool hasSolid; 249c76ae52dSmrg XftFont *fonts; 250c76ae52dSmrg XRenderPictFormat *solidFormat; 251c76ae52dSmrg unsigned long glyph_memory; 252c76ae52dSmrg unsigned long max_glyph_memory; 253c76ae52dSmrg FcBool use_free_glyphs; 254c76ae52dSmrg int num_unref_fonts; 255c76ae52dSmrg int max_unref_fonts; 256c76ae52dSmrg XftSolidColor colors[XFT_NUM_SOLID_COLOR]; 257c76ae52dSmrg XftFont *fontHash[XFT_NUM_FONT_HASH]; 258c76ae52dSmrg} XftDisplayInfo; 259c76ae52dSmrg 260c76ae52dSmrg/* 261c76ae52dSmrg * By default, use no more than 4 meg of server memory total, and no 262c76ae52dSmrg * more than 1 meg for any one font 263c76ae52dSmrg */ 264c76ae52dSmrg#define XFT_DPY_MAX_GLYPH_MEMORY (4 * 1024 * 1024) 265c76ae52dSmrg#define XFT_FONT_MAX_GLYPH_MEMORY (1024 * 1024) 266c76ae52dSmrg 267c76ae52dSmrg/* 268c76ae52dSmrg * By default, keep the last 16 unreferenced fonts around to 269c76ae52dSmrg * speed reopening them. Note that the glyph caching code 270c76ae52dSmrg * will keep the global memory usage reasonably limited 271c76ae52dSmrg */ 272c76ae52dSmrg#define XFT_DPY_MAX_UNREF_FONTS 16 273c76ae52dSmrg 274c76ae52dSmrgextern XftDisplayInfo *_XftDisplayInfo; 275c76ae52dSmrg 276c76ae52dSmrg#define XFT_DBG_OPEN 1 277c76ae52dSmrg#define XFT_DBG_OPENV 2 278c76ae52dSmrg#define XFT_DBG_RENDER 4 279c76ae52dSmrg#define XFT_DBG_DRAW 8 280c76ae52dSmrg#define XFT_DBG_REF 16 281c76ae52dSmrg#define XFT_DBG_GLYPH 32 282c76ae52dSmrg#define XFT_DBG_GLYPHV 64 283c76ae52dSmrg#define XFT_DBG_CACHE 128 284c76ae52dSmrg#define XFT_DBG_CACHEV 256 285c76ae52dSmrg#define XFT_DBG_MEMORY 512 286c76ae52dSmrg 287c76ae52dSmrg#define XFT_MEM_DRAW 0 288c76ae52dSmrg#define XFT_MEM_FONT 1 289c76ae52dSmrg#define XFT_MEM_FILE 2 290c76ae52dSmrg#define XFT_MEM_GLYPH 3 291c76ae52dSmrg#define XFT_MEM_NUM 4 292c76ae52dSmrg 293c76ae52dSmrg/* xftcompat.c */ 294c76ae52dSmrgvoid XftFontSetDestroy (FcFontSet *s); 295c76ae52dSmrgFcBool XftMatrixEqual (_Xconst FcMatrix *mat1, _Xconst FcMatrix *mat2); 296c76ae52dSmrgvoid XftMatrixMultiply (FcMatrix *result, FcMatrix *a, FcMatrix *b); 297c76ae52dSmrgvoid XftMatrixRotate (FcMatrix *m, double c, double s); 298c76ae52dSmrgvoid XftMatrixScale (FcMatrix *m, double sx, double sy); 299c76ae52dSmrgvoid XftMatrixShear (FcMatrix *m, double sh, double sv); 300c76ae52dSmrgFcPattern *XftPatternCreate (void); 301c76ae52dSmrgvoid XftValueDestroy (FcValue v); 302c76ae52dSmrgvoid XftPatternDestroy (FcPattern *p); 303c76ae52dSmrgFcBool XftPatternAdd (FcPattern *p, _Xconst char *object, FcValue value, FcBool append); 304c76ae52dSmrgFcBool XftPatternDel (FcPattern *p, _Xconst char *object); 305c76ae52dSmrgFcBool XftPatternAddInteger (FcPattern *p, _Xconst char *object, int i); 306c76ae52dSmrgFcBool XftPatternAddDouble (FcPattern *p, _Xconst char *object, double i); 307c76ae52dSmrgFcBool XftPatternAddMatrix (FcPattern *p, _Xconst char *object, FcMatrix *i); 308c76ae52dSmrgFcBool XftPatternAddString (FcPattern *p, _Xconst char *object, char *i); 309c76ae52dSmrgFcBool XftPatternAddBool (FcPattern *p, _Xconst char *object, FcBool i); 310c76ae52dSmrgFcResult XftPatternGet (FcPattern *p, _Xconst char *object, int id, FcValue *v); 311c76ae52dSmrgFcResult XftPatternGetInteger (FcPattern *p, _Xconst char *object, int id, int *i); 312c76ae52dSmrgFcResult XftPatternGetDouble (FcPattern *p, _Xconst char *object, int id, double *i); 313c76ae52dSmrgFcResult XftPatternGetString (FcPattern *p, _Xconst char *object, int id, char **i); 314c76ae52dSmrgFcResult XftPatternGetMatrix (FcPattern *p, _Xconst char *object, int id, FcMatrix **i); 315c76ae52dSmrgFcResult XftPatternGetBool (FcPattern *p, _Xconst char *object, int id, FcBool *i); 316c76ae52dSmrgFcPattern *XftPatternDuplicate (FcPattern *orig); 317c76ae52dSmrgFcPattern *XftPatternVaBuild (FcPattern *orig, va_list va); 318c76ae52dSmrgFcPattern *XftPatternBuild (FcPattern *orig, ...); 319c76ae52dSmrgFcBool XftNameUnparse (FcPattern *pat, char *dest, int len); 320c76ae52dSmrgFcBool XftGlyphExists (Display *dpy, XftFont *font, FcChar32 ucs4); 321c76ae52dSmrgFcObjectSet *XftObjectSetCreate (void); 322c76ae52dSmrgBool XftObjectSetAdd (FcObjectSet *os, _Xconst char *object); 323c76ae52dSmrgvoid XftObjectSetDestroy (FcObjectSet *os); 324c76ae52dSmrgFcObjectSet *XftObjectSetVaBuild (_Xconst char *first, va_list va); 325c76ae52dSmrgFcObjectSet *XftObjectSetBuild (_Xconst char *first, ...); 326c76ae52dSmrgFcFontSet *XftListFontSets (FcFontSet **sets, int nsets, FcPattern *p, FcObjectSet *os); 327c76ae52dSmrg 328c76ae52dSmrg/* xftcore.c */ 329c76ae52dSmrgvoid 330c76ae52dSmrgXftRectCore (XftDraw *draw, 331c76ae52dSmrg _Xconst XftColor *color, 3322836776bSmrg int x, 333c76ae52dSmrg int y, 334c76ae52dSmrg unsigned int width, 335c76ae52dSmrg unsigned int height); 336c76ae52dSmrg 337c76ae52dSmrgvoid 338c76ae52dSmrgXftGlyphCore (XftDraw *draw, 339c76ae52dSmrg _Xconst XftColor *color, 340c76ae52dSmrg XftFont *public, 341c76ae52dSmrg int x, 342c76ae52dSmrg int y, 343c76ae52dSmrg _Xconst FT_UInt *glyphs, 344c76ae52dSmrg int nglyphs); 345c76ae52dSmrg 346c76ae52dSmrgvoid 347c76ae52dSmrgXftGlyphSpecCore (XftDraw *draw, 348c76ae52dSmrg _Xconst XftColor *color, 349c76ae52dSmrg XftFont *public, 350c76ae52dSmrg _Xconst XftGlyphSpec *glyphs, 351c76ae52dSmrg int nglyphs); 352c76ae52dSmrg 353c76ae52dSmrgvoid 354c76ae52dSmrgXftGlyphFontSpecCore (XftDraw *draw, 355c76ae52dSmrg _Xconst XftColor *color, 356c76ae52dSmrg _Xconst XftGlyphFontSpec *glyphs, 357c76ae52dSmrg int nglyphs); 358c76ae52dSmrg 359c76ae52dSmrg/* xftdbg.c */ 360c76ae52dSmrgint 361c76ae52dSmrgXftDebug (void); 362c76ae52dSmrg 363c76ae52dSmrg/* xftdpy.c */ 364c76ae52dSmrgXftDisplayInfo * 365c76ae52dSmrg_XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary); 366c76ae52dSmrg 367c76ae52dSmrgvoid 368c76ae52dSmrg_XftDisplayManageMemory (Display *dpy); 369c76ae52dSmrg 370c76ae52dSmrgint 3712836776bSmrgXftDefaultParseBool (const char *v); 372c76ae52dSmrg 373c76ae52dSmrgFcBool 374c76ae52dSmrgXftDefaultGetBool (Display *dpy, const char *object, int screen, FcBool def); 375c76ae52dSmrg 376c76ae52dSmrgint 377c76ae52dSmrgXftDefaultGetInteger (Display *dpy, const char *object, int screen, int def); 378c76ae52dSmrg 379c76ae52dSmrgdouble 380c76ae52dSmrgXftDefaultGetDouble (Display *dpy, const char *object, int screen, double def); 381c76ae52dSmrg 382c76ae52dSmrgFcFontSet * 383c76ae52dSmrgXftDisplayGetFontSet (Display *dpy); 384c76ae52dSmrg 385c76ae52dSmrg/* xftdraw.c */ 386c76ae52dSmrgunsigned int 387c76ae52dSmrgXftDrawDepth (XftDraw *draw); 388c76ae52dSmrg 389c76ae52dSmrgunsigned int 390c76ae52dSmrgXftDrawBitsPerPixel (XftDraw *draw); 391c76ae52dSmrg 392c76ae52dSmrgFcBool 393c76ae52dSmrgXftDrawRenderPrepare (XftDraw *draw); 394c76ae52dSmrg 395c76ae52dSmrg/* xftextent.c */ 3962836776bSmrg 397c76ae52dSmrg/* xftfont.c */ 398c76ae52dSmrg 399c76ae52dSmrg/* xftfreetype.c */ 400c76ae52dSmrgFcBool 401c76ae52dSmrg_XftSetFace (XftFtFile *f, FT_F26Dot6 xsize, FT_F26Dot6 ysize, FT_Matrix *matrix); 402c76ae52dSmrg 403c76ae52dSmrgvoid 404c76ae52dSmrgXftFontManageMemory (Display *dpy); 405c76ae52dSmrg 406c76ae52dSmrg/* xftglyph.c */ 407c76ae52dSmrgvoid 408c76ae52dSmrg_XftFontUncacheGlyph (Display *dpy, XftFont *public); 409c76ae52dSmrg 410c76ae52dSmrgvoid 411c76ae52dSmrg_XftFontManageMemory (Display *dpy, XftFont *public); 412c76ae52dSmrg 413c76ae52dSmrg/* xftinit.c */ 414c76ae52dSmrgvoid 415c76ae52dSmrgXftMemReport (void); 416c76ae52dSmrg 417c76ae52dSmrgvoid 418c76ae52dSmrgXftMemAlloc (int kind, int size); 419c76ae52dSmrg 420c76ae52dSmrgvoid 421c76ae52dSmrgXftMemFree (int kind, int size); 422c76ae52dSmrg 423c76ae52dSmrg/* xftlist.c */ 424c76ae52dSmrgFcFontSet * 425c76ae52dSmrgXftListFontsPatternObjects (Display *dpy, 426c76ae52dSmrg int screen, 427c76ae52dSmrg FcPattern *pattern, 428c76ae52dSmrg FcObjectSet *os); 429c76ae52dSmrg 430c76ae52dSmrg/* xftname.c */ 4312836776bSmrgvoid 432c76ae52dSmrg_XftNameInit (void); 433c76ae52dSmrg 434c76ae52dSmrg/* xftrender.c */ 435c76ae52dSmrg 436c76ae52dSmrg/* xftstr.c */ 437c76ae52dSmrgint 438c76ae52dSmrg_XftMatchSymbolic (XftSymbolic *s, int n, const char *name, int def); 439c76ae52dSmrg 440c76ae52dSmrg/* xftswap.c */ 441c76ae52dSmrgint 442c76ae52dSmrgXftNativeByteOrder (void); 443c76ae52dSmrg 444c76ae52dSmrgvoid 445c76ae52dSmrgXftSwapCARD32 (CARD32 *data, int n); 446c76ae52dSmrg 447c76ae52dSmrgvoid 448c76ae52dSmrgXftSwapCARD24 (CARD8 *data, int width, int height); 449c76ae52dSmrg 450c76ae52dSmrgvoid 451c76ae52dSmrgXftSwapCARD16 (CARD16 *data, int n); 452c76ae52dSmrg 453c76ae52dSmrgvoid 454c76ae52dSmrgXftSwapImage (XImage *image); 455c76ae52dSmrg 456c76ae52dSmrg/* xftxlfd.c */ 457c76ae52dSmrg#endif /* _XFT_INT_H_ */ 458