Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
pango-renderer.h
Go to the documentation of this file.
1/* Pango
2 * pango-renderer.h: Base class for rendering
3 *
4 * Copyright (C) 2004, Red Hat, Inc.
5 *
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.
10 *
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.
15 *
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.
20 */
21#ifndef __PANGO_RENDERER_H_
22#define __PANGO_RENDERER_H_
23
24#include <pango/pango-layout.h>
25
27
28#define PANGO_TYPE_RENDERER (pango_renderer_get_type())
29#define PANGO_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_RENDERER, PangoRenderer))
30#define PANGO_IS_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_RENDERER))
31#define PANGO_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_RENDERER, PangoRendererClass))
32#define PANGO_IS_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_RENDERER))
33#define PANGO_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_RENDERER, PangoRendererClass))
34
37typedef struct _PangoRendererPrivate PangoRendererPrivate;
38
39/**
40 * PangoRenderPart:
41 * @PANGO_RENDER_PART_FOREGROUND: the text itself
42 * @PANGO_RENDER_PART_BACKGROUND: the area behind the text
43 * @PANGO_RENDER_PART_UNDERLINE: underlines
44 * @PANGO_RENDER_PART_STRIKETHROUGH: strikethrough lines
45 * @PANGO_RENDER_PART_OVERLINE: overlines
46 *
47 * `PangoRenderPart` defines different items to render for such
48 * purposes as setting colors.
49 *
50 * Since: 1.8
51 **/
52/* When extending, note N_RENDER_PARTS #define in pango-renderer.c */
61
62/**
63 * PangoRenderer:
64 * @matrix: (nullable): the current transformation matrix for
65 * the Renderer; may be %NULL, which should be treated the
66 * same as the identity matrix.
67 *
68 * `PangoRenderer` is a base class for objects that can render text
69 * provided as `PangoGlyphString` or `PangoLayout`.
70 *
71 * By subclassing `PangoRenderer` and overriding operations such as
72 * @draw_glyphs and @draw_rectangle, renderers for particular font
73 * backends and destinations can be created.
74 *
75 * Since: 1.8
76 */
78{
79 /*< private >*/
81
85
86 /*< public >*/
87 PangoMatrix *matrix; /* May be NULL */
88
89 /*< private >*/
91};
92
93/**
94 * PangoRendererClass:
95 * @draw_glyphs: draws a `PangoGlyphString`
96 * @draw_rectangle: draws a rectangle
97 * @draw_error_underline: draws a squiggly line that approximately
98 * covers the given rectangle in the style of an underline used to
99 * indicate a spelling error.
100 * @draw_shape: draw content for a glyph shaped with `PangoAttrShape`
101 * @x, @y are the coordinates of the left edge of the baseline,
102 * in user coordinates.
103 * @draw_trapezoid: draws a trapezoidal filled area
104 * @draw_glyph: draws a single glyph
105 * @part_changed: do renderer specific processing when rendering
106 * attributes change
107 * @begin: Do renderer-specific initialization before drawing
108 * @end: Do renderer-specific cleanup after drawing
109 * @prepare_run: updates the renderer for a new run
110 * @draw_glyph_item: draws a `PangoGlyphItem`
111 *
112 * Class structure for `PangoRenderer`.
113 *
114 * The following vfuncs take user space coordinates in Pango units
115 * and have default implementations:
116 * - draw_glyphs
117 * - draw_rectangle
118 * - draw_error_underline
119 * - draw_shape
120 * - draw_glyph_item
121 *
122 * The default draw_shape implementation draws nothing.
123 *
124 * The following vfuncs take device space coordinates as doubles
125 * and must be implemented:
126 * - draw_trapezoid
127 * - draw_glyph
128 *
129 * Since: 1.8
130 */
132{
133 /*< private >*/
135
136 /* vtable - not signals */
137 /*< public >*/
138
139 void (*draw_glyphs) (PangoRenderer *renderer,
140 PangoFont *font,
141 PangoGlyphString *glyphs,
142 int x,
143 int y);
144 void (*draw_rectangle) (PangoRenderer *renderer,
145 PangoRenderPart part,
146 int x,
147 int y,
148 int width,
149 int height);
151 int x,
152 int y,
153 int width,
154 int height);
155 void (*draw_shape) (PangoRenderer *renderer,
156 PangoAttrShape *attr,
157 int x,
158 int y);
159
160 void (*draw_trapezoid) (PangoRenderer *renderer,
161 PangoRenderPart part,
162 double y1_,
163 double x11,
164 double x21,
165 double y2,
166 double x12,
167 double x22);
168 void (*draw_glyph) (PangoRenderer *renderer,
169 PangoFont *font,
170 PangoGlyph glyph,
171 double x,
172 double y);
173
174 void (*part_changed) (PangoRenderer *renderer,
175 PangoRenderPart part);
176
177 void (*begin) (PangoRenderer *renderer);
178 void (*end) (PangoRenderer *renderer);
179
180 void (*prepare_run) (PangoRenderer *renderer,
181 PangoLayoutRun *run);
182
183 void (*draw_glyph_item) (PangoRenderer *renderer,
184 const char *text,
185 PangoGlyphItem *glyph_item,
186 int x,
187 int y);
188
189 /*< private >*/
190
191 /* Padding for future expansion */
192 void (*_pango_reserved2) (void);
193 void (*_pango_reserved3) (void);
194 void (*_pango_reserved4) (void);
195};
196
199
202 PangoLayout *layout,
203 int x,
204 int y);
207 PangoLayoutLine *line,
208 int x,
209 int y);
212 PangoFont *font,
213 PangoGlyphString *glyphs,
214 int x,
215 int y);
218 const char *text,
219 PangoGlyphItem *glyph_item,
220 int x,
221 int y);
224 PangoRenderPart part,
225 int x,
226 int y,
227 int width,
228 int height);
231 int x,
232 int y,
233 int width,
234 int height);
237 PangoRenderPart part,
238 double y1_,
239 double x11,
240 double x21,
241 double y2,
242 double x12,
243 double x22);
246 PangoFont *font,
247 PangoGlyph glyph,
248 double x,
249 double y);
250
255
258 PangoRenderPart part);
259
262 PangoRenderPart part,
263 const PangoColor *color);
266 PangoRenderPart part);
267
270 PangoRenderPart part,
271 guint16 alpha);
274 PangoRenderPart part);
275
278 const PangoMatrix *matrix);
281
286
288
289#endif /* __PANGO_RENDERER_H_ */
290
unsigned short guint16
Definition glibconfig.h:49
#define G_END_DECLS
Definition gmacros.h:910
#define G_BEGIN_DECLS
Definition gmacros.h:909
#define G_GNUC_CONST
Definition gmacros.h:637
gsize GType
Definition gtype.h:427
gint gboolean
Definition gtypes.h:56
PangoUnderline
typedefG_BEGIN_DECLS struct _PangoColor PangoColor
Definition pango-color.h:31
typedefG_BEGIN_DECLS struct _PangoGlyphItem PangoGlyphItem
typedefG_BEGIN_DECLS struct _PangoLayout PangoLayout
PangoGlyphItem PangoLayoutRun
typedefG_BEGIN_DECLS struct _PangoMatrix PangoMatrix
PANGO_AVAILABLE_IN_1_22 void pango_renderer_draw_glyph_item(PangoRenderer *renderer, const char *text, PangoGlyphItem *glyph_item, int x, int y)
PANGO_AVAILABLE_IN_1_38 void pango_renderer_set_alpha(PangoRenderer *renderer, PangoRenderPart part, guint16 alpha)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_error_underline(PangoRenderer *renderer, int x, int y, int width, int height)
PANGO_AVAILABLE_IN_1_20 PangoLayout * pango_renderer_get_layout(PangoRenderer *renderer)
struct _PangoRendererPrivate PangoRendererPrivate
PANGO_AVAILABLE_IN_1_38 guint16 pango_renderer_get_alpha(PangoRenderer *renderer, PangoRenderPart part)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_activate(PangoRenderer *renderer)
PangoRenderPart
@ PANGO_RENDER_PART_UNDERLINE
@ PANGO_RENDER_PART_BACKGROUND
@ PANGO_RENDER_PART_FOREGROUND
@ PANGO_RENDER_PART_OVERLINE
@ PANGO_RENDER_PART_STRIKETHROUGH
PANGO_AVAILABLE_IN_1_20 PangoLayoutLine * pango_renderer_get_layout_line(PangoRenderer *renderer)
PANGO_AVAILABLE_IN_1_8 const PangoMatrix * pango_renderer_get_matrix(PangoRenderer *renderer)
PANGO_AVAILABLE_IN_1_8 PangoColor * pango_renderer_get_color(PangoRenderer *renderer, PangoRenderPart part)
PANGO_AVAILABLE_IN_1_8 GType pango_renderer_get_type(void) G_GNUC_CONST
PANGO_AVAILABLE_IN_1_8 void pango_renderer_part_changed(PangoRenderer *renderer, PangoRenderPart part)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_set_matrix(PangoRenderer *renderer, const PangoMatrix *matrix)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_layout(PangoRenderer *renderer, PangoLayout *layout, int x, int y)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_glyph(PangoRenderer *renderer, PangoFont *font, PangoGlyph glyph, double x, double y)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_rectangle(PangoRenderer *renderer, PangoRenderPart part, int x, int y, int width, int height)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_deactivate(PangoRenderer *renderer)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_trapezoid(PangoRenderer *renderer, PangoRenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_layout_line(PangoRenderer *renderer, PangoLayoutLine *line, int x, int y)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_set_color(PangoRenderer *renderer, PangoRenderPart part, const PangoColor *color)
PANGO_AVAILABLE_IN_1_8 void pango_renderer_draw_glyphs(PangoRenderer *renderer, PangoFont *font, PangoGlyphString *glyphs, int x, int y)
guint32 PangoGlyph
Definition pango-types.h:54
#define PANGO_AVAILABLE_IN_1_38
#define PANGO_AVAILABLE_IN_1_20
#define PANGO_AVAILABLE_IN_1_22
#define PANGO_AVAILABLE_IN_1_8
void(* draw_trapezoid)(PangoRenderer *renderer, PangoRenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22)
void(* draw_glyph_item)(PangoRenderer *renderer, const char *text, PangoGlyphItem *glyph_item, int x, int y)
void(* _pango_reserved3)(void)
void(* _pango_reserved2)(void)
void(* draw_glyph)(PangoRenderer *renderer, PangoFont *font, PangoGlyph glyph, double x, double y)
void(* draw_error_underline)(PangoRenderer *renderer, int x, int y, int width, int height)
void(* begin)(PangoRenderer *renderer)
void(* part_changed)(PangoRenderer *renderer, PangoRenderPart part)
void(* draw_glyphs)(PangoRenderer *renderer, PangoFont *font, PangoGlyphString *glyphs, int x, int y)
void(* end)(PangoRenderer *renderer)
void(* draw_shape)(PangoRenderer *renderer, PangoAttrShape *attr, int x, int y)
void(* draw_rectangle)(PangoRenderer *renderer, PangoRenderPart part, int x, int y, int width, int height)
void(* prepare_run)(PangoRenderer *renderer, PangoLayoutRun *run)
void(* _pango_reserved4)(void)
GObjectClass parent_class
PangoUnderline underline
PangoRendererPrivate * priv
GObject parent_instance
gboolean strikethrough
PangoMatrix * matrix