xftint.h revision 2836776b
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;
248c76ae52dSmrg    XftFont		    *fonts;
249c76ae52dSmrg    XRenderPictFormat	    *solidFormat;
250c76ae52dSmrg    unsigned long	    glyph_memory;
251c76ae52dSmrg    unsigned long	    max_glyph_memory;
252c76ae52dSmrg    FcBool		    use_free_glyphs;
253c76ae52dSmrg    int			    num_unref_fonts;
254c76ae52dSmrg    int			    max_unref_fonts;
255c76ae52dSmrg    XftSolidColor	    colors[XFT_NUM_SOLID_COLOR];
256c76ae52dSmrg    XftFont		    *fontHash[XFT_NUM_FONT_HASH];
257c76ae52dSmrg} XftDisplayInfo;
258c76ae52dSmrg
259c76ae52dSmrg/*
260c76ae52dSmrg * By default, use no more than 4 meg of server memory total, and no
261c76ae52dSmrg * more than 1 meg for any one font
262c76ae52dSmrg */
263c76ae52dSmrg#define XFT_DPY_MAX_GLYPH_MEMORY    (4 * 1024 * 1024)
264c76ae52dSmrg#define XFT_FONT_MAX_GLYPH_MEMORY   (1024 * 1024)
265c76ae52dSmrg
266c76ae52dSmrg/*
267c76ae52dSmrg * By default, keep the last 16 unreferenced fonts around to
268c76ae52dSmrg * speed reopening them.  Note that the glyph caching code
269c76ae52dSmrg * will keep the global memory usage reasonably limited
270c76ae52dSmrg */
271c76ae52dSmrg#define XFT_DPY_MAX_UNREF_FONTS	    16
272c76ae52dSmrg
273c76ae52dSmrgextern XftDisplayInfo	*_XftDisplayInfo;
274c76ae52dSmrg
275c76ae52dSmrg#define XFT_DBG_OPEN	1
276c76ae52dSmrg#define XFT_DBG_OPENV	2
277c76ae52dSmrg#define XFT_DBG_RENDER	4
278c76ae52dSmrg#define XFT_DBG_DRAW	8
279c76ae52dSmrg#define XFT_DBG_REF	16
280c76ae52dSmrg#define XFT_DBG_GLYPH	32
281c76ae52dSmrg#define XFT_DBG_GLYPHV	64
282c76ae52dSmrg#define XFT_DBG_CACHE	128
283c76ae52dSmrg#define XFT_DBG_CACHEV	256
284c76ae52dSmrg#define XFT_DBG_MEMORY	512
285c76ae52dSmrg
286c76ae52dSmrg#define XFT_MEM_DRAW	0
287c76ae52dSmrg#define XFT_MEM_FONT	1
288c76ae52dSmrg#define XFT_MEM_FILE	2
289c76ae52dSmrg#define XFT_MEM_GLYPH	3
290c76ae52dSmrg#define XFT_MEM_NUM	4
291c76ae52dSmrg
292c76ae52dSmrg/* xftcompat.c */
293c76ae52dSmrgvoid XftFontSetDestroy (FcFontSet *s);
294c76ae52dSmrgFcBool XftMatrixEqual (_Xconst FcMatrix *mat1, _Xconst FcMatrix *mat2);
295c76ae52dSmrgvoid XftMatrixMultiply (FcMatrix *result, FcMatrix *a, FcMatrix *b);
296c76ae52dSmrgvoid XftMatrixRotate (FcMatrix *m, double c, double s);
297c76ae52dSmrgvoid XftMatrixScale (FcMatrix *m, double sx, double sy);
298c76ae52dSmrgvoid XftMatrixShear (FcMatrix *m, double sh, double sv);
299c76ae52dSmrgFcPattern *XftPatternCreate (void);
300c76ae52dSmrgvoid XftValueDestroy (FcValue v);
301c76ae52dSmrgvoid XftPatternDestroy (FcPattern *p);
302c76ae52dSmrgFcBool XftPatternAdd (FcPattern *p, _Xconst char *object, FcValue value, FcBool append);
303c76ae52dSmrgFcBool XftPatternDel (FcPattern *p, _Xconst char *object);
304c76ae52dSmrgFcBool XftPatternAddInteger (FcPattern *p, _Xconst char *object, int i);
305c76ae52dSmrgFcBool XftPatternAddDouble (FcPattern *p, _Xconst char *object, double i);
306c76ae52dSmrgFcBool XftPatternAddMatrix (FcPattern *p, _Xconst char *object, FcMatrix *i);
307c76ae52dSmrgFcBool XftPatternAddString (FcPattern *p, _Xconst char *object, char *i);
308c76ae52dSmrgFcBool XftPatternAddBool (FcPattern *p, _Xconst char *object, FcBool i);
309c76ae52dSmrgFcResult XftPatternGet (FcPattern *p, _Xconst char *object, int id, FcValue *v);
310c76ae52dSmrgFcResult XftPatternGetInteger (FcPattern *p, _Xconst char *object, int id, int *i);
311c76ae52dSmrgFcResult XftPatternGetDouble (FcPattern *p, _Xconst char *object, int id, double *i);
312c76ae52dSmrgFcResult XftPatternGetString (FcPattern *p, _Xconst char *object, int id, char **i);
313c76ae52dSmrgFcResult XftPatternGetMatrix (FcPattern *p, _Xconst char *object, int id, FcMatrix **i);
314c76ae52dSmrgFcResult XftPatternGetBool (FcPattern *p, _Xconst char *object, int id, FcBool *i);
315c76ae52dSmrgFcPattern *XftPatternDuplicate (FcPattern *orig);
316c76ae52dSmrgFcPattern *XftPatternVaBuild (FcPattern *orig, va_list va);
317c76ae52dSmrgFcPattern *XftPatternBuild (FcPattern *orig, ...);
318c76ae52dSmrgFcBool XftNameUnparse (FcPattern *pat, char *dest, int len);
319c76ae52dSmrgFcBool XftGlyphExists (Display *dpy, XftFont *font, FcChar32 ucs4);
320c76ae52dSmrgFcObjectSet *XftObjectSetCreate (void);
321c76ae52dSmrgBool XftObjectSetAdd (FcObjectSet *os, _Xconst char *object);
322c76ae52dSmrgvoid XftObjectSetDestroy (FcObjectSet *os);
323c76ae52dSmrgFcObjectSet *XftObjectSetVaBuild (_Xconst char *first, va_list va);
324c76ae52dSmrgFcObjectSet *XftObjectSetBuild (_Xconst char *first, ...);
325c76ae52dSmrgFcFontSet *XftListFontSets (FcFontSet **sets, int nsets, FcPattern *p, FcObjectSet *os);
326c76ae52dSmrg
327c76ae52dSmrg/* xftcore.c */
328c76ae52dSmrgvoid
329c76ae52dSmrgXftRectCore (XftDraw		*draw,
330c76ae52dSmrg	     _Xconst XftColor	*color,
3312836776bSmrg	     int		x,
332c76ae52dSmrg	     int		y,
333c76ae52dSmrg	     unsigned int	width,
334c76ae52dSmrg	     unsigned int	height);
335c76ae52dSmrg
336c76ae52dSmrgvoid
337c76ae52dSmrgXftGlyphCore (XftDraw		*draw,
338c76ae52dSmrg	      _Xconst XftColor	*color,
339c76ae52dSmrg	      XftFont		*public,
340c76ae52dSmrg	      int		x,
341c76ae52dSmrg	      int		y,
342c76ae52dSmrg	      _Xconst FT_UInt	*glyphs,
343c76ae52dSmrg	      int		nglyphs);
344c76ae52dSmrg
345c76ae52dSmrgvoid
346c76ae52dSmrgXftGlyphSpecCore (XftDraw		*draw,
347c76ae52dSmrg		  _Xconst XftColor	*color,
348c76ae52dSmrg		  XftFont		*public,
349c76ae52dSmrg		  _Xconst XftGlyphSpec	*glyphs,
350c76ae52dSmrg		  int			nglyphs);
351c76ae52dSmrg
352c76ae52dSmrgvoid
353c76ae52dSmrgXftGlyphFontSpecCore (XftDraw			*draw,
354c76ae52dSmrg		      _Xconst XftColor		*color,
355c76ae52dSmrg		      _Xconst XftGlyphFontSpec	*glyphs,
356c76ae52dSmrg		      int			nglyphs);
357c76ae52dSmrg
358c76ae52dSmrg/* xftdbg.c */
359c76ae52dSmrgint
360c76ae52dSmrgXftDebug (void);
361c76ae52dSmrg
362c76ae52dSmrg/* xftdpy.c */
363c76ae52dSmrgXftDisplayInfo *
364c76ae52dSmrg_XftDisplayInfoGet (Display *dpy, FcBool createIfNecessary);
365c76ae52dSmrg
366c76ae52dSmrgvoid
367c76ae52dSmrg_XftDisplayManageMemory (Display *dpy);
368c76ae52dSmrg
369c76ae52dSmrgint
3702836776bSmrgXftDefaultParseBool (const char *v);
371c76ae52dSmrg
372c76ae52dSmrgFcBool
373c76ae52dSmrgXftDefaultGetBool (Display *dpy, const char *object, int screen, FcBool def);
374c76ae52dSmrg
375c76ae52dSmrgint
376c76ae52dSmrgXftDefaultGetInteger (Display *dpy, const char *object, int screen, int def);
377c76ae52dSmrg
378c76ae52dSmrgdouble
379c76ae52dSmrgXftDefaultGetDouble (Display *dpy, const char *object, int screen, double def);
380c76ae52dSmrg
381c76ae52dSmrgFcFontSet *
382c76ae52dSmrgXftDisplayGetFontSet (Display *dpy);
383c76ae52dSmrg
384c76ae52dSmrg/* xftdraw.c */
385c76ae52dSmrgunsigned int
386c76ae52dSmrgXftDrawDepth (XftDraw *draw);
387c76ae52dSmrg
388c76ae52dSmrgunsigned int
389c76ae52dSmrgXftDrawBitsPerPixel (XftDraw *draw);
390c76ae52dSmrg
391c76ae52dSmrgFcBool
392c76ae52dSmrgXftDrawRenderPrepare (XftDraw	*draw);
393c76ae52dSmrg
394c76ae52dSmrg/* xftextent.c */
3952836776bSmrg
396c76ae52dSmrg/* xftfont.c */
397c76ae52dSmrg
398c76ae52dSmrg/* xftfreetype.c */
399c76ae52dSmrgFcBool
400c76ae52dSmrg_XftSetFace (XftFtFile *f, FT_F26Dot6 xsize, FT_F26Dot6 ysize, FT_Matrix *matrix);
401c76ae52dSmrg
402c76ae52dSmrgvoid
403c76ae52dSmrgXftFontManageMemory (Display *dpy);
404c76ae52dSmrg
405c76ae52dSmrg/* xftglyph.c */
406c76ae52dSmrgvoid
407c76ae52dSmrg_XftFontUncacheGlyph (Display *dpy, XftFont *public);
408c76ae52dSmrg
409c76ae52dSmrgvoid
410c76ae52dSmrg_XftFontManageMemory (Display *dpy, XftFont *public);
411c76ae52dSmrg
412c76ae52dSmrg/* xftinit.c */
413c76ae52dSmrgvoid
414c76ae52dSmrgXftMemReport (void);
415c76ae52dSmrg
416c76ae52dSmrgvoid
417c76ae52dSmrgXftMemAlloc (int kind, int size);
418c76ae52dSmrg
419c76ae52dSmrgvoid
420c76ae52dSmrgXftMemFree (int kind, int size);
421c76ae52dSmrg
422c76ae52dSmrg/* xftlist.c */
423c76ae52dSmrgFcFontSet *
424c76ae52dSmrgXftListFontsPatternObjects (Display	    *dpy,
425c76ae52dSmrg			    int		    screen,
426c76ae52dSmrg			    FcPattern	    *pattern,
427c76ae52dSmrg			    FcObjectSet    *os);
428c76ae52dSmrg
429c76ae52dSmrg/* xftname.c */
4302836776bSmrgvoid
431c76ae52dSmrg_XftNameInit (void);
432c76ae52dSmrg
433c76ae52dSmrg/* xftrender.c */
434c76ae52dSmrg
435c76ae52dSmrg/* xftstr.c */
436c76ae52dSmrgint
437c76ae52dSmrg_XftMatchSymbolic (XftSymbolic *s, int n, const char *name, int def);
438c76ae52dSmrg
439c76ae52dSmrg/* xftswap.c */
440c76ae52dSmrgint
441c76ae52dSmrgXftNativeByteOrder (void);
442c76ae52dSmrg
443c76ae52dSmrgvoid
444c76ae52dSmrgXftSwapCARD32 (CARD32 *data, int n);
445c76ae52dSmrg
446c76ae52dSmrgvoid
447c76ae52dSmrgXftSwapCARD24 (CARD8 *data, int width, int height);
448c76ae52dSmrg
449c76ae52dSmrgvoid
450c76ae52dSmrgXftSwapCARD16 (CARD16 *data, int n);
451c76ae52dSmrg
452c76ae52dSmrgvoid
453c76ae52dSmrgXftSwapImage (XImage *image);
454c76ae52dSmrg
455c76ae52dSmrg/* xftxlfd.c */
456c76ae52dSmrg#endif /* _XFT_INT_H_ */
457