| 1 | /* Pango |
| 2 | * pangocairo.h: |
| 3 | * |
| 4 | * Copyright (C) 1999, 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 | |
| 22 | #ifndef __PANGOCAIRO_H__ |
| 23 | #define __PANGOCAIRO_H__ |
| 24 | |
| 25 | #include <pango/pango.h> |
| 26 | #include <cairo.h> |
| 27 | |
| 28 | G_BEGIN_DECLS |
| 29 | |
| 30 | /** |
| 31 | * PangoCairoFont: |
| 32 | * |
| 33 | * `PangoCairoFont` is an interface exported by fonts for |
| 34 | * use with Cairo. |
| 35 | * |
| 36 | * The actual type of the font will depend on the particular |
| 37 | * font technology Cairo was compiled to use. |
| 38 | * |
| 39 | * Since: 1.18 |
| 40 | **/ |
| 41 | typedef struct _PangoCairoFont PangoCairoFont; |
| 42 | |
| 43 | /* This is a hack because PangoCairo is hijacking the Pango namespace, but |
| 44 | * consumers of the PangoCairo API expect these symbols to live under the |
| 45 | * PangoCairo namespace. |
| 46 | */ |
| 47 | #ifdef __GI_SCANNER__ |
| 48 | #define PANGO_CAIRO_TYPE_FONT (pango_cairo_font_get_type()) |
| 49 | #define PANGO_CAIRO_FONT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANGO_CAIRO_TYPE_FONT, PangoCairoFont)) |
| 50 | #define PANGO_CAIRO_IS_FONT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANGO_CAIRO_TYPE_FONT)) |
| 51 | #else |
| 52 | #define PANGO_TYPE_CAIRO_FONT (pango_cairo_font_get_type ()) |
| 53 | #define PANGO_CAIRO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CAIRO_FONT, PangoCairoFont)) |
| 54 | #define PANGO_IS_CAIRO_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_CAIRO_FONT)) |
| 55 | #endif |
| 56 | |
| 57 | /** |
| 58 | * PangoCairoFontMap: |
| 59 | * |
| 60 | * `PangoCairoFontMap` is an interface exported by font maps for |
| 61 | * use with Cairo. |
| 62 | * |
| 63 | * The actual type of the font map will depend on the particular |
| 64 | * font technology Cairo was compiled to use. |
| 65 | * |
| 66 | * Since: 1.10 |
| 67 | **/ |
| 68 | typedef struct _PangoCairoFontMap PangoCairoFontMap; |
| 69 | |
| 70 | #ifdef __GI_SCANNER__ |
| 71 | #define PANGO_CAIRO_TYPE_FONT_MAP (pango_cairo_font_map_get_type()) |
| 72 | #define PANGO_CAIRO_FONT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PANGO_CAIRO_TYPE_FONT_MAP, PangoCairoFontMap)) |
| 73 | #define PANGO_CAIRO_IS_FONT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANGO_CAIRO_TYPE_FONT_MAP)) |
| 74 | #else |
| 75 | #define PANGO_TYPE_CAIRO_FONT_MAP (pango_cairo_font_map_get_type ()) |
| 76 | #define PANGO_CAIRO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_CAIRO_FONT_MAP, PangoCairoFontMap)) |
| 77 | #define PANGO_IS_CAIRO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_CAIRO_FONT_MAP)) |
| 78 | #endif |
| 79 | |
| 80 | /** |
| 81 | * PangoCairoShapeRendererFunc: |
| 82 | * @cr: a Cairo context with current point set to where the shape should |
| 83 | * be rendered |
| 84 | * @attr: the %PANGO_ATTR_SHAPE to render |
| 85 | * @do_path: whether only the shape path should be appended to current |
| 86 | * path of @cr and no filling/stroking done. This will be set |
| 87 | * to %TRUE when called from pango_cairo_layout_path() and |
| 88 | * pango_cairo_layout_line_path() rendering functions. |
| 89 | * @data: (closure): user data passed to pango_cairo_context_set_shape_renderer() |
| 90 | * |
| 91 | * Function type for rendering attributes of type %PANGO_ATTR_SHAPE |
| 92 | * with Pango's Cairo renderer. |
| 93 | */ |
| 94 | typedef void (* PangoCairoShapeRendererFunc) (cairo_t *cr, |
| 95 | PangoAttrShape *attr, |
| 96 | gboolean do_path, |
| 97 | gpointer data); |
| 98 | |
| 99 | /* |
| 100 | * PangoCairoFontMap |
| 101 | */ |
| 102 | PANGO_AVAILABLE_IN_1_10 |
| 103 | GType pango_cairo_font_map_get_type (void) G_GNUC_CONST; |
| 104 | |
| 105 | PANGO_AVAILABLE_IN_1_10 |
| 106 | PangoFontMap *pango_cairo_font_map_new (void); |
| 107 | PANGO_AVAILABLE_IN_1_18 |
| 108 | PangoFontMap *pango_cairo_font_map_new_for_font_type (cairo_font_type_t fonttype); |
| 109 | PANGO_AVAILABLE_IN_1_10 |
| 110 | PangoFontMap *pango_cairo_font_map_get_default (void); |
| 111 | PANGO_AVAILABLE_IN_1_22 |
| 112 | void pango_cairo_font_map_set_default (PangoCairoFontMap *fontmap); |
| 113 | PANGO_AVAILABLE_IN_1_18 |
| 114 | cairo_font_type_t pango_cairo_font_map_get_font_type (PangoCairoFontMap *fontmap); |
| 115 | |
| 116 | PANGO_AVAILABLE_IN_1_10 |
| 117 | void pango_cairo_font_map_set_resolution (PangoCairoFontMap *fontmap, |
| 118 | double dpi); |
| 119 | PANGO_AVAILABLE_IN_1_10 |
| 120 | double pango_cairo_font_map_get_resolution (PangoCairoFontMap *fontmap); |
| 121 | #ifndef PANGO_DISABLE_DEPRECATED |
| 122 | PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context) |
| 123 | PangoContext *pango_cairo_font_map_create_context (PangoCairoFontMap *fontmap); |
| 124 | #endif |
| 125 | |
| 126 | /* |
| 127 | * PangoCairoFont |
| 128 | */ |
| 129 | PANGO_AVAILABLE_IN_1_18 |
| 130 | GType pango_cairo_font_get_type (void) G_GNUC_CONST; |
| 131 | |
| 132 | PANGO_AVAILABLE_IN_1_18 |
| 133 | cairo_scaled_font_t *pango_cairo_font_get_scaled_font (PangoCairoFont *font); |
| 134 | |
| 135 | /* Update a Pango context for the current state of a cairo context |
| 136 | */ |
| 137 | PANGO_AVAILABLE_IN_1_10 |
| 138 | void pango_cairo_update_context (cairo_t *cr, |
| 139 | PangoContext *context); |
| 140 | |
| 141 | PANGO_AVAILABLE_IN_1_10 |
| 142 | void pango_cairo_context_set_font_options (PangoContext *context, |
| 143 | const cairo_font_options_t *options); |
| 144 | PANGO_AVAILABLE_IN_1_10 |
| 145 | const cairo_font_options_t *pango_cairo_context_get_font_options (PangoContext *context); |
| 146 | |
| 147 | PANGO_AVAILABLE_IN_1_10 |
| 148 | void pango_cairo_context_set_resolution (PangoContext *context, |
| 149 | double dpi); |
| 150 | PANGO_AVAILABLE_IN_1_10 |
| 151 | double pango_cairo_context_get_resolution (PangoContext *context); |
| 152 | |
| 153 | PANGO_AVAILABLE_IN_1_18 |
| 154 | void pango_cairo_context_set_shape_renderer (PangoContext *context, |
| 155 | PangoCairoShapeRendererFunc func, |
| 156 | gpointer data, |
| 157 | GDestroyNotify dnotify); |
| 158 | PANGO_AVAILABLE_IN_1_18 |
| 159 | PangoCairoShapeRendererFunc pango_cairo_context_get_shape_renderer (PangoContext *context, |
| 160 | gpointer *data); |
| 161 | |
| 162 | /* Convenience |
| 163 | */ |
| 164 | PANGO_AVAILABLE_IN_1_22 |
| 165 | PangoContext *pango_cairo_create_context (cairo_t *cr); |
| 166 | PANGO_AVAILABLE_IN_ALL |
| 167 | PangoLayout *pango_cairo_create_layout (cairo_t *cr); |
| 168 | PANGO_AVAILABLE_IN_1_10 |
| 169 | void pango_cairo_update_layout (cairo_t *cr, |
| 170 | PangoLayout *layout); |
| 171 | |
| 172 | /* |
| 173 | * Rendering |
| 174 | */ |
| 175 | PANGO_AVAILABLE_IN_1_10 |
| 176 | void pango_cairo_show_glyph_string (cairo_t *cr, |
| 177 | PangoFont *font, |
| 178 | PangoGlyphString *glyphs); |
| 179 | PANGO_AVAILABLE_IN_1_22 |
| 180 | void pango_cairo_show_glyph_item (cairo_t *cr, |
| 181 | const char *text, |
| 182 | PangoGlyphItem *glyph_item); |
| 183 | PANGO_AVAILABLE_IN_1_10 |
| 184 | void pango_cairo_show_layout_line (cairo_t *cr, |
| 185 | PangoLayoutLine *line); |
| 186 | PANGO_AVAILABLE_IN_1_10 |
| 187 | void pango_cairo_show_layout (cairo_t *cr, |
| 188 | PangoLayout *layout); |
| 189 | |
| 190 | PANGO_AVAILABLE_IN_1_14 |
| 191 | void pango_cairo_show_error_underline (cairo_t *cr, |
| 192 | double x, |
| 193 | double y, |
| 194 | double width, |
| 195 | double height); |
| 196 | |
| 197 | /* |
| 198 | * Rendering to a path |
| 199 | */ |
| 200 | PANGO_AVAILABLE_IN_1_10 |
| 201 | void pango_cairo_glyph_string_path (cairo_t *cr, |
| 202 | PangoFont *font, |
| 203 | PangoGlyphString *glyphs); |
| 204 | PANGO_AVAILABLE_IN_1_10 |
| 205 | void pango_cairo_layout_line_path (cairo_t *cr, |
| 206 | PangoLayoutLine *line); |
| 207 | PANGO_AVAILABLE_IN_1_10 |
| 208 | void pango_cairo_layout_path (cairo_t *cr, |
| 209 | PangoLayout *layout); |
| 210 | |
| 211 | PANGO_AVAILABLE_IN_1_14 |
| 212 | void pango_cairo_error_underline_path (cairo_t *cr, |
| 213 | double x, |
| 214 | double y, |
| 215 | double width, |
| 216 | double height); |
| 217 | |
| 218 | G_END_DECLS |
| 219 | |
| 220 | #endif /* __PANGOCAIRO_H__ */ |
| 221 | |