summaryrefslogtreecommitdiff
path: root/pango2/pango-font-private.h
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-07-04 11:16:05 -0400
committerMatthias Clasen <mclasen@redhat.com>2022-07-04 11:17:21 -0400
commitbcdce34c8ac0adffd589e9fb68b62ff09368bb0f (patch)
tree7b92ba875b22212d15ffb9d9620d517cfa427a1e /pango2/pango-font-private.h
parentb197cc08b18bc44a3e93f859ca7e61dfe335bbc5 (diff)
downloadpango-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.h128
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