1/* Pango
2 * pango-fontset.h: Font set handling
3 *
4 * Copyright (C) 2001 Red Hat Software
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
22#ifndef __PANGO_FONTSET_H__
23#define __PANGO_FONTSET_H__
24
25#include <pango/pango-coverage.h>
26#include <pango/pango-types.h>
27
28#include <glib-object.h>
29
30G_BEGIN_DECLS
31
32/*
33 * PangoFontset
34 */
35
36/**
37 * PANGO_TYPE_FONTSET:
38 *
39 * The #GObject type for #PangoFontset.
40 */
41#define PANGO_TYPE_FONTSET (pango_fontset_get_type ())
42#define PANGO_FONTSET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONTSET, PangoFontset))
43#define PANGO_IS_FONTSET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONTSET))
44
45PANGO_AVAILABLE_IN_ALL
46GType pango_fontset_get_type (void) G_GNUC_CONST;
47
48typedef struct _PangoFontset PangoFontset;
49
50/**
51 * PangoFontsetForeachFunc:
52 * @fontset: a #PangoFontset
53 * @font: a font from @fontset
54 * @user_data: callback data
55 *
56 * A callback function used by pango_fontset_foreach() when enumerating
57 * the fonts in a fontset.
58 *
59 * Returns: if %TRUE, stop iteration and return immediately.
60 *
61 * Since: 1.4
62 **/
63typedef gboolean (*PangoFontsetForeachFunc) (PangoFontset *fontset,
64 PangoFont *font,
65 gpointer user_data);
66
67PANGO_AVAILABLE_IN_ALL
68PangoFont * pango_fontset_get_font (PangoFontset *fontset,
69 guint wc);
70PANGO_AVAILABLE_IN_ALL
71PangoFontMetrics *pango_fontset_get_metrics (PangoFontset *fontset);
72PANGO_AVAILABLE_IN_1_4
73void pango_fontset_foreach (PangoFontset *fontset,
74 PangoFontsetForeachFunc func,
75 gpointer data);
76
77#ifdef PANGO_ENABLE_BACKEND
78
79typedef struct _PangoFontsetClass PangoFontsetClass;
80
81#define PANGO_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONTSET, PangoFontsetClass))
82#define PANGO_IS_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONTSET))
83#define PANGO_FONTSET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONTSET, PangoFontsetClass))
84
85/**
86 * PangoFontset:
87 *
88 * A #PangoFontset represents a set of #PangoFont to use
89 * when rendering text. It is the result of resolving a
90 * #PangoFontDescription against a particular #PangoContext.
91 * It has operations for finding the component font for
92 * a particular Unicode character, and for finding a composite
93 * set of metrics for the entire fontset.
94 */
95struct _PangoFontset
96{
97 GObject parent_instance;
98};
99
100/**
101 * PangoFontsetClass:
102 * @parent_class: parent #GObjectClass.
103 * @get_font: a function to get the font in the fontset that contains the
104 * best glyph for the given Unicode character; see pango_fontset_get_font().
105 * @get_metrics: a function to get overall metric information for the fonts
106 * in the fontset; see pango_fontset_get_metrics().
107 * @get_language: a function to get the language of the fontset.
108 * @foreach: a function to loop over the fonts in the fontset. See
109 * pango_fontset_foreach().
110 *
111 * The #PangoFontsetClass structure holds the virtual functions for
112 * a particular #PangoFontset implementation.
113 */
114struct _PangoFontsetClass
115{
116 GObjectClass parent_class;
117
118 /*< public >*/
119
120 PangoFont * (*get_font) (PangoFontset *fontset,
121 guint wc);
122
123 PangoFontMetrics *(*get_metrics) (PangoFontset *fontset);
124 PangoLanguage * (*get_language) (PangoFontset *fontset);
125 void (*foreach) (PangoFontset *fontset,
126 PangoFontsetForeachFunc func,
127 gpointer data);
128
129 /*< private >*/
130
131 /* Padding for future expansion */
132 void (*_pango_reserved1) (void);
133 void (*_pango_reserved2) (void);
134 void (*_pango_reserved3) (void);
135 void (*_pango_reserved4) (void);
136};
137
138/*
139 * PangoFontsetSimple
140 */
141
142/**
143 * PANGO_TYPE_FONTSET_SIMPLE:
144 *
145 * The #GObject type for #PangoFontsetSimple.
146 */
147/**
148 * PangoFontsetSimple:
149 *
150 * #PangoFontsetSimple is a implementation of the abstract
151 * #PangoFontset base class in terms of an array of fonts,
152 * which the creator provides when constructing the
153 * #PangoFontsetSimple.
154 */
155#define PANGO_TYPE_FONTSET_SIMPLE (pango_fontset_simple_get_type ())
156#define PANGO_FONTSET_SIMPLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONTSET_SIMPLE, PangoFontsetSimple))
157#define PANGO_IS_FONTSET_SIMPLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONTSET_SIMPLE))
158
159typedef struct _PangoFontsetSimple PangoFontsetSimple;
160typedef struct _PangoFontsetSimpleClass PangoFontsetSimpleClass;
161
162PANGO_AVAILABLE_IN_ALL
163GType pango_fontset_simple_get_type (void) G_GNUC_CONST;
164
165PANGO_AVAILABLE_IN_ALL
166PangoFontsetSimple * pango_fontset_simple_new (PangoLanguage *language);
167PANGO_AVAILABLE_IN_ALL
168void pango_fontset_simple_append (PangoFontsetSimple *fontset,
169 PangoFont *font);
170PANGO_AVAILABLE_IN_ALL
171int pango_fontset_simple_size (PangoFontsetSimple *fontset);
172
173#endif /* PANGO_ENABLE_BACKEND */
174
175G_END_DECLS
176
177#endif /* __PANGO_FONTSET_H__ */
178