2 * pangoxft-render.h: Rendering routines for the Xft library
4 * Copyright (C) 2004 Red Hat Software
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
22 #ifndef __PANGOXFT_RENDER_H__
23 #define __PANGOXFT_RENDER_H__
25 #include <pango/pango-renderer.h>
29 #define _XFT_NO_COMPAT_
31 #include <X11/Xft/Xft.h>
32 #if defined(XftVersion) && XftVersion >= 20000
34 #error "must have Xft version 2 or newer"
37 typedef struct _PangoXftRenderer PangoXftRenderer;
38 typedef struct _PangoXftRendererClass PangoXftRendererClass;
39 typedef struct _PangoXftRendererPrivate PangoXftRendererPrivate;
41 #define PANGO_TYPE_XFT_RENDERER (pango_xft_renderer_get_type())
42 #define PANGO_XFT_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_XFT_RENDERER, PangoXftRenderer))
43 #define PANGO_IS_XFT_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_XFT_RENDERER))
44 #define PANGO_XFT_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_XFT_RENDERER, PangoXftRendererClass))
45 #define PANGO_IS_XFT_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_XFT_RENDERER))
46 #define PANGO_XFT_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_XFT_RENDERER, PangoXftRendererClass))
51 * #PangoXftRenderer is a subclass of #PangoRenderer used for rendering
52 * with Pango's Xft backend. It can be used directly, or it can be
53 * further subclassed to modify exactly how drawing of individual
58 struct _PangoXftRenderer
61 PangoRenderer parent_instance;
67 PangoXftRendererPrivate *priv;
71 * PangoXftRendererClass
72 * @composite_trapezoids: draw the specified trapezoids using
73 * the current color and other attributes for @part
74 * @composite_glyphs: draw the specified glyphs using
75 * the current foreground color and other foreground
78 * The class structure for #PangoXftRenderer
82 struct _PangoXftRendererClass
85 PangoRendererClass parent_class;
88 void (*composite_trapezoids) (PangoXftRenderer *xftrenderer,
90 XTrapezoid *trapezoids,
92 void (*composite_glyphs) (PangoXftRenderer *xftrenderer,
98 GType pango_xft_renderer_get_type (void) G_GNUC_CONST;
100 PangoRenderer *pango_xft_renderer_new (Display *display,
102 void pango_xft_renderer_set_draw (PangoXftRenderer *xftrenderer,
104 void pango_xft_renderer_set_default_color (PangoXftRenderer *xftrenderer,
105 PangoColor *default_color);
107 void pango_xft_render (XftDraw *draw,
110 PangoGlyphString *glyphs,
113 void pango_xft_picture_render (Display *display,
115 Picture dest_picture,
117 PangoGlyphString *glyphs,
120 void pango_xft_render_transformed (XftDraw *draw,
124 PangoGlyphString *glyphs,
127 void pango_xft_render_layout_line (XftDraw *draw,
129 PangoLayoutLine *line,
132 void pango_xft_render_layout (XftDraw *draw,
140 #endif /* __PANGOXFT_RENDER_H__ */