diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-02-12 14:22:13 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-02-17 14:01:45 -0600 |
commit | d327fde1c964a77053092c7b6a778ff4bc5a9f4a (patch) | |
tree | c60b2a1cef259aa9c41cedf800f8b5bc2bfe8cff | |
parent | 197bea46d0b7a1cc24ca1e4a0047c2481ccc28f9 (diff) | |
download | pango-d327fde1c964a77053092c7b6a778ff4bc5a9f4a.tar.gz |
Drop redundant enumeration api
We have list models now.
-rw-r--r-- | pango/pango-font-family-private.h | 3 | ||||
-rw-r--r-- | pango/pango-font-family.c | 94 | ||||
-rw-r--r-- | pango/pango-font-family.h | 4 | ||||
-rw-r--r-- | pango/pango-fontmap.c | 68 | ||||
-rw-r--r-- | pango/pango-fontmap.h | 16 | ||||
-rw-r--r-- | pango/pangofc-fontmap.c | 57 |
6 files changed, 27 insertions, 215 deletions
diff --git a/pango/pango-font-family-private.h b/pango/pango-font-family-private.h index 4fe940ee..b6ceacfe 100644 --- a/pango/pango-font-family-private.h +++ b/pango/pango-font-family-private.h @@ -37,9 +37,6 @@ struct _PangoFontFamilyClass /*< public >*/ - void (*list_faces) (PangoFontFamily *family, - PangoFontFace ***faces, - int *n_faces); const char * (*get_name) (PangoFontFamily *family); gboolean (*is_monospace) (PangoFontFamily *family); gboolean (*is_variable) (PangoFontFamily *family); diff --git a/pango/pango-font-family.c b/pango/pango-font-family.c index e77efa2d..072cc1af 100644 --- a/pango/pango-font-family.c +++ b/pango/pango-font-family.c @@ -34,33 +34,16 @@ pango_font_family_get_item_type (GListModel *list) static guint pango_font_family_get_n_items (GListModel *list) { - PangoFontFamily *family = PANGO_FONT_FAMILY (list); - int n_faces; - - pango_font_family_list_faces (family, NULL, &n_faces); - - return (guint)n_faces; + g_assert_not_reached (); + return 0; } static gpointer pango_font_family_get_item (GListModel *list, guint position) { - PangoFontFamily *family = PANGO_FONT_FAMILY (list); - PangoFontFace **faces; - int n_faces; - PangoFontFace *face; - - pango_font_family_list_faces (family, &faces, &n_faces); - - if (position < n_faces) - face = g_object_ref (faces[position]); - else - face = NULL; - - g_free (faces); - - return face; + g_assert_not_reached (); + return NULL; } static void @@ -90,24 +73,11 @@ pango_font_family_default_is_variable (PangoFontFamily *family) } static void -pango_font_family_default_list_faces (PangoFontFamily *family, - PangoFontFace ***faces, - int *n_faces) -{ - if (faces) - *faces = NULL; - - if (n_faces) - *n_faces = 0; -} - -static void pango_font_family_class_init (PangoFontFamilyClass *class G_GNUC_UNUSED) { class->is_monospace = pango_font_family_default_is_monospace; class->is_variable = pango_font_family_default_is_variable; class->get_face = pango_font_family_real_get_face; - class->list_faces = pango_font_family_default_list_faces; } static void @@ -136,66 +106,26 @@ pango_font_family_get_name (PangoFontFamily *family) return PANGO_FONT_FAMILY_GET_CLASS (family)->get_name (family); } -/** - * pango_font_family_list_faces: - * @family: a `PangoFontFamily` - * @faces: (out) (optional) (array length=n_faces) (transfer container): - * location to store an array of pointers to `PangoFontFace` objects, - * or %NULL. This array should be freed with g_free() when it is no - * longer needed. - * @n_faces: (out): location to store number of elements in @faces. - * - * Lists the different font faces that make up @family. - * - * The faces in a family share a common design, but differ in slant, weight, - * width and other aspects. - * - * Note that the returned faces are not in any particular order, and - * multiple faces may have the same name or characteristics. - * - * `PangoFontFamily` also implemented the [iface@Gio.ListModel] interface - * for enumerating faces. - */ -void -pango_font_family_list_faces (PangoFontFamily *family, - PangoFontFace ***faces, - int *n_faces) -{ - g_return_if_fail (PANGO_IS_FONT_FAMILY (family)); - - PANGO_FONT_FAMILY_GET_CLASS (family)->list_faces (family, faces, n_faces); -} - static PangoFontFace * pango_font_family_real_get_face (PangoFontFamily *family, const char *name) { - PangoFontFace **faces; - int n_faces; PangoFontFace *face; - int i; - - pango_font_family_list_faces (family, &faces, &n_faces); face = NULL; - if (name == NULL && n_faces > 0) - { - face = faces[0]; - } - else + + for (int i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (family)); i++) { - for (i = 0; i < n_faces; i++) + PangoFontFace *f = g_list_model_get_item (G_LIST_MODEL (family), i); + g_object_unref (f); + if (name == NULL || + strcmp (name, pango_font_face_get_face_name (f)) == 0) { - if (strcmp (name, pango_font_face_get_face_name (faces[i])) == 0) - { - face = faces[i]; - break; - } + face = f; + break; } } - g_free (faces); - return face; } diff --git a/pango/pango-font-family.h b/pango/pango-font-family.h index 7979a5ec..95ae422b 100644 --- a/pango/pango-font-family.h +++ b/pango/pango-font-family.h @@ -37,10 +37,6 @@ PANGO_AVAILABLE_IN_ALL GType pango_font_family_get_type (void) G_GNUC_CONST; PANGO_AVAILABLE_IN_ALL -void pango_font_family_list_faces (PangoFontFamily *family, - PangoFontFace ***faces, - int *n_faces); -PANGO_AVAILABLE_IN_ALL const char * pango_font_family_get_name (PangoFontFamily *family) G_GNUC_PURE; PANGO_AVAILABLE_IN_1_4 gboolean pango_font_family_is_monospace (PangoFontFamily *family) G_GNUC_PURE; diff --git a/pango/pango-fontmap.c b/pango/pango-fontmap.c index 2cb1b175..fa7cfdc8 100644 --- a/pango/pango-fontmap.c +++ b/pango/pango-fontmap.c @@ -116,35 +116,6 @@ pango_font_map_load_font (PangoFontMap *fontmap, } /** - * pango_font_map_list_families: - * @fontmap: a `PangoFontMap` - * @families: (out) (array length=n_families) (transfer container): location to - * store a pointer to an array of `PangoFontFamily` *. - * This array should be freed with g_free(). - * @n_families: (out): location to store the number of elements in @families - * - * List all families for a fontmap. - * - * Note that the returned families are not in any particular order. - * - * `PangoFontMap` also implemented the [iface@Gio.ListModel] interface - * for enumerating families. - */ -void -pango_font_map_list_families (PangoFontMap *fontmap, - PangoFontFamily ***families, - int *n_families) -{ - PangoFontMapPrivate *priv = pango_font_map_get_instance_private (fontmap); - g_return_if_fail (fontmap != NULL); - - PANGO_FONT_MAP_GET_CLASS (fontmap)->list_families (fontmap, families, n_families); - - /* keep this value for GListModel::changed */ - priv->n_families = *n_families; -} - -/** * pango_font_map_load_fontset: * @fontmap: a `PangoFontMap` * @context: the `PangoContext` the font will be used with @@ -363,26 +334,22 @@ static PangoFontFamily * pango_font_map_real_get_family (PangoFontMap *fontmap, const char *name) { - PangoFontFamily **families; - int n_families; PangoFontFamily *family; int i; - pango_font_map_list_families (fontmap, &families, &n_families); - family = NULL; - for (i = 0; i < n_families; i++) + for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (fontmap)); i++) { - if (strcmp (name, pango_font_family_get_name (families[i])) == 0) + PangoFontFamily *fam = g_list_model_get_item (G_LIST_MODEL (fontmap), i); + g_object_unref (fam); + if (strcmp (name, pango_font_family_get_name (fam)) == 0) { - family = families[i]; + family = fam; break; } } - g_free (families); - return family; } @@ -415,33 +382,16 @@ pango_font_map_get_item_type (GListModel *list) static guint pango_font_map_get_n_items (GListModel *list) { - PangoFontMap *fontmap = PANGO_FONT_MAP (list); - int n_families; - - pango_font_map_list_families (fontmap, NULL, &n_families); - - return (guint)n_families; + g_assert_not_reached (); + return 0; } static gpointer pango_font_map_get_item (GListModel *list, guint position) { - PangoFontMap *fontmap = PANGO_FONT_MAP (list); - PangoFontFamily **families; - int n_families; - PangoFontFamily *family; - - pango_font_map_list_families (fontmap, &families, &n_families); - - if (position < n_families) - family = g_object_ref (families[position]); - else - family = NULL; - - g_free (families); - - return family; + g_assert_not_reached (); + return NULL; } static void diff --git a/pango/pango-fontmap.h b/pango/pango-fontmap.h index ae96a00d..59186a95 100644 --- a/pango/pango-fontmap.h +++ b/pango/pango-fontmap.h @@ -10,7 +10,7 @@ * * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public @@ -39,17 +39,13 @@ PANGO_AVAILABLE_IN_1_22 PangoContext * pango_font_map_create_context (PangoFontMap *fontmap); PANGO_AVAILABLE_IN_ALL PangoFont * pango_font_map_load_font (PangoFontMap *fontmap, - PangoContext *context, - const PangoFontDescription *desc); + PangoContext *context, + const PangoFontDescription *desc); PANGO_AVAILABLE_IN_ALL PangoFontset *pango_font_map_load_fontset (PangoFontMap *fontmap, - PangoContext *context, - const PangoFontDescription *desc, - PangoLanguage *language); -PANGO_AVAILABLE_IN_ALL -void pango_font_map_list_families (PangoFontMap *fontmap, - PangoFontFamily ***families, - int *n_families); + PangoContext *context, + const PangoFontDescription *desc, + PangoLanguage *language); PANGO_AVAILABLE_IN_1_32 guint pango_font_map_get_serial (PangoFontMap *fontmap); PANGO_AVAILABLE_IN_1_34 diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 2ef5f31f..62140bbe 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -233,9 +233,6 @@ static PangoFontset *pango_fc_font_map_load_fontset (PangoFontMap PangoContext *context, const PangoFontDescription *desc, PangoLanguage *language); -static void pango_fc_font_map_list_families (PangoFontMap *fontmap, - PangoFontFamily ***families, - int *n_families); static PangoFontFamily *pango_fc_font_map_get_family (PangoFontMap *fontmap, const char *name); @@ -1493,7 +1490,6 @@ pango_fc_font_map_class_init (PangoFcFontMapClass *class) object_class->finalize = pango_fc_font_map_finalize; fontmap_class->load_font = pango_fc_font_map_load_font; fontmap_class->load_fontset = pango_fc_font_map_load_fontset; - fontmap_class->list_families = pango_fc_font_map_list_families; fontmap_class->get_family = pango_fc_font_map_get_family; fontmap_class->get_face = pango_fc_font_map_get_face; fontmap_class->changed = pango_fc_font_map_changed; @@ -1747,33 +1743,6 @@ ensure_families (PangoFcFontMap *fcfontmap) } } -static void -pango_fc_font_map_list_families (PangoFontMap *fontmap, - PangoFontFamily ***families, - int *n_families) -{ - PangoFcFontMap *fcfontmap = PANGO_FC_FONT_MAP (fontmap); - PangoFcFontMapPrivate *priv = fcfontmap->priv; - - if (priv->closed) - { - if (families) - *families = NULL; - if (n_families) - *n_families = 0; - - return; - } - - ensure_families (fcfontmap); - - if (n_families) - *n_families = priv->n_families; - - if (families) - *families = g_memdup2 (priv->families, priv->n_families * sizeof (PangoFontFamily *)); -} - static PangoFontFamily * pango_fc_font_map_get_family (PangoFontMap *fontmap, const char *name) @@ -3317,31 +3286,6 @@ ensure_faces (PangoFcFamily *fcfamily) } } -static void -pango_fc_family_list_faces (PangoFontFamily *family, - PangoFontFace ***faces, - int *n_faces) -{ - PangoFcFamily *fcfamily = PANGO_FC_FAMILY (family); - - if (faces) - *faces = NULL; - - if (n_faces) - *n_faces = 0; - - if (G_UNLIKELY (!fcfamily->fontmap)) - return; - - ensure_faces (fcfamily); - - if (n_faces) - *n_faces = fcfamily->n_faces; - - if (faces) - *faces = g_memdup2 (fcfamily->faces, fcfamily->n_faces * sizeof (PangoFontFace *)); -} - static PangoFontFace * pango_fc_family_get_face (PangoFontFamily *family, const char *name) @@ -3415,7 +3359,6 @@ pango_fc_family_class_init (PangoFcFamilyClass *class) object_class->finalize = pango_fc_family_finalize; - class->list_faces = pango_fc_family_list_faces; class->get_face = pango_fc_family_get_face; class->get_name = pango_fc_family_get_name; class->is_monospace = pango_fc_family_is_monospace; |