diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-07-04 11:16:05 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-07-04 11:17:21 -0400 |
commit | bcdce34c8ac0adffd589e9fb68b62ff09368bb0f (patch) | |
tree | 7b92ba875b22212d15ffb9d9620d517cfa427a1e /pango2/pango-font-private.h | |
parent | b197cc08b18bc44a3e93f859ca7e61dfe335bbc5 (diff) | |
download | pango-bcdce34c8ac0adffd589e9fb68b62ff09368bb0f.tar.gz |
Move the code from pango/ to pango2/
Life is easier if the src path matches the installed
header path prefix, so make them match. Update all
users.
Diffstat (limited to 'pango2/pango-font-private.h')
-rw-r--r-- | pango2/pango-font-private.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/pango2/pango-font-private.h b/pango2/pango-font-private.h new file mode 100644 index 00000000..ca8d3a77 --- /dev/null +++ b/pango2/pango-font-private.h @@ -0,0 +1,128 @@ +/* + * Copyright 2000 Red Hat Software + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "pango-font-family.h" +#include "pango-font.h" +#include "pango-types.h" + +#include <glib-object.h> + +#ifdef HAVE_CAIRO +#include <cairo.h> +#endif + +struct _Pango2Font +{ + GObject parent_instance; + + Pango2FontFace *face; + + hb_font_t *hb_font; + + int size; /* point size, scaled by PANGO2_SCALE */ + float dpi; + Pango2Gravity gravity; + Pango2Matrix ctm; + +#ifdef HAVE_CAIRO + cairo_font_options_t *options; +#endif +}; + +typedef struct _Pango2FontClass Pango2FontClass; +struct _Pango2FontClass +{ + GObjectClass parent_class; + + Pango2FontDescription * (* describe) (Pango2Font *font); + void (* get_glyph_extents) (Pango2Font *font, + Pango2Glyph glyph, + Pango2Rectangle *ink_rect, + Pango2Rectangle *logical_rect); + Pango2FontMetrics * (* get_metrics) (Pango2Font *font, + Pango2Language *language); + hb_font_t * (* create_hb_font) (Pango2Font *font); + gboolean (* is_hinted) (Pango2Font *font); + void (* get_scale_factors) (Pango2Font *font, + double *x_scale, + double *y_scale); + void (* get_transform) (Pango2Font *font, + Pango2Matrix *matrix); +}; + +#define PANGO2_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO2_TYPE_FONT, Pango2FontClass)) +#define PANGO2_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO2_TYPE_FONT, Pango2FontClass)) + +static inline void +pango2_font_set_face (Pango2Font *font, + Pango2FontFace *face) +{ + font->face = (Pango2FontFace *) g_object_ref (face); +} + +static inline void +pango2_font_set_size (Pango2Font *font, + int size) +{ + font->size = size; +} + +static inline void +pango2_font_set_dpi (Pango2Font *font, + float dpi) +{ + font->dpi = dpi; +} + +static inline void +pango2_font_set_gravity (Pango2Font *font, + Pango2Gravity gravity) +{ + font->gravity = gravity; +} + +static inline void +pango2_font_set_ctm (Pango2Font *font, + const Pango2Matrix *ctm) +{ + const Pango2Matrix matrix_init = PANGO2_MATRIX_INIT; + font->ctm = ctm ? *ctm : matrix_init; +} + +gboolean pango2_font_is_hinted (Pango2Font *font); +void pango2_font_get_scale_factors (Pango2Font *font, + double *x_scale, + double *y_scale); +void pango2_font_get_transform (Pango2Font *font, + Pango2Matrix *matrix); + +gboolean pango2_font_description_is_similar (const Pango2FontDescription *a, + const Pango2FontDescription *b); + +int pango2_font_description_compute_distance (const Pango2FontDescription *a, + const Pango2FontDescription *b); + +/* We use these values in a few places as a fallback size for an + * unknown glyph, if we have no better information. + */ + +#define PANGO2_UNKNOWN_GLYPH_WIDTH 10 +#define PANGO2_UNKNOWN_GLYPH_HEIGHT 14 |