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