4 * Copyright (C) 2005-2007 Imendio AB
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.
24 #include "pangoatsui.h"
25 #include "pangoatsui-private.h"
27 G_DEFINE_TYPE (PangoATSUIFont, pango_atsui_font, PANGO_TYPE_FONT);
29 struct _PangoATSUIFontPrivate
32 PangoFontDescription *desc;
37 PangoFontMap *fontmap;
41 pango_atsui_font_finalize (GObject *object)
43 PangoATSUIFont *afont = (PangoATSUIFont *)object;
44 PangoATSUIFontPrivate *priv = afont->priv;
46 pango_font_description_free (priv->desc);
48 g_assert (priv->fontmap != NULL);
49 g_object_remove_weak_pointer (G_OBJECT (priv->fontmap), (gpointer *) (gpointer) &priv->fontmap);
52 G_OBJECT_CLASS (pango_atsui_font_parent_class)->finalize (object);
55 static PangoFontDescription *
56 pango_atsui_font_describe (PangoFont *font)
58 PangoATSUIFont *afont = (PangoATSUIFont *)font;
59 PangoATSUIFontPrivate *priv = afont->priv;
61 return pango_font_description_copy (priv->desc);
64 static PangoCoverage *
65 pango_atsui_font_get_coverage (PangoFont *font,
66 PangoLanguage *language)
68 PangoATSUIFont *afont = (PangoATSUIFont *)font;
69 PangoATSUIFontPrivate *priv = afont->priv;
71 return pango_coverage_ref (_pango_atsui_face_get_coverage (priv->face,
75 static PangoEngineShape *
76 pango_atsui_font_find_shaper (PangoFont *font,
77 PangoLanguage *language,
80 /* FIXME: Implement */
85 pango_atsui_font_get_font_map (PangoFont *font)
87 PangoATSUIFont *afont = (PangoATSUIFont *)font;
89 return afont->priv->fontmap;
93 pango_atsui_font_init (PangoATSUIFont *afont)
95 afont->priv = G_TYPE_INSTANCE_GET_PRIVATE (afont,
96 PANGO_TYPE_ATSUI_FONT,
97 PangoATSUIFontPrivate);
101 pango_atsui_font_class_init (PangoATSUIFontClass *class)
103 GObjectClass *object_class = G_OBJECT_CLASS (class);
104 PangoFontClass *font_class = PANGO_FONT_CLASS (class);
106 object_class->finalize = pango_atsui_font_finalize;
108 font_class->describe = pango_atsui_font_describe;
109 font_class->get_coverage = pango_atsui_font_get_coverage;
110 font_class->find_shaper = pango_atsui_font_find_shaper;
111 font_class->get_font_map = pango_atsui_font_get_font_map;
113 g_type_class_add_private (object_class, sizeof (PangoATSUIFontPrivate));
117 _pango_atsui_font_set_font_description (PangoATSUIFont *font,
118 const PangoFontDescription *desc)
120 PangoATSUIFontPrivate *priv = font->priv;
122 priv->desc = pango_font_description_copy (desc);
125 PangoFontDescription *
126 _pango_atsui_font_get_font_description (PangoATSUIFont *font)
128 PangoATSUIFontPrivate *priv = font->priv;
134 _pango_atsui_font_set_font_map (PangoATSUIFont *font,
135 PangoATSUIFontMap *fontmap)
137 PangoATSUIFontPrivate *priv = font->priv;
139 g_assert (priv->fontmap == NULL);
140 priv->fontmap = (PangoFontMap *) fontmap;
141 g_object_add_weak_pointer (G_OBJECT (priv->fontmap), (gpointer *) (gpointer) &priv->fontmap);
145 _pango_atsui_font_set_face (PangoATSUIFont *afont,
146 PangoATSUIFace *face)
148 PangoATSUIFontPrivate *priv = afont->priv;
154 _pango_atsui_font_get_face (PangoATSUIFont *afont)
156 PangoATSUIFontPrivate *priv = afont->priv;
162 _pango_atsui_font_get_context_key (PangoATSUIFont *afont)
164 PangoATSUIFontPrivate *priv = afont->priv;
166 return priv->context_key;
170 _pango_atsui_font_set_context_key (PangoATSUIFont *afont,
171 gpointer context_key)
173 PangoATSUIFontPrivate *priv = afont->priv;
175 priv->context_key = context_key;
179 _pango_atsui_font_set_cgfont (PangoATSUIFont *font,
182 PangoATSUIFontPrivate *priv = font->priv;
184 priv->font_id = font_id;
188 * pango_atsui_font_get_cgfont:
189 * @font: A #PangoATSUIFont
191 * Returns the CGFontRef of a font.
193 * Return value: the CGFontRef associated to @font.
198 pango_atsui_font_get_cgfont (PangoATSUIFont *font)
200 PangoATSUIFontPrivate *priv = font->priv;
202 return priv->font_id;