summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-02-12 14:22:13 -0500
committerMatthias Clasen <mclasen@redhat.com>2022-02-17 14:01:45 -0600
commitd327fde1c964a77053092c7b6a778ff4bc5a9f4a (patch)
treec60b2a1cef259aa9c41cedf800f8b5bc2bfe8cff
parent197bea46d0b7a1cc24ca1e4a0047c2481ccc28f9 (diff)
downloadpango-d327fde1c964a77053092c7b6a778ff4bc5a9f4a.tar.gz
Drop redundant enumeration api
We have list models now.
-rw-r--r--pango/pango-font-family-private.h3
-rw-r--r--pango/pango-font-family.c94
-rw-r--r--pango/pango-font-family.h4
-rw-r--r--pango/pango-fontmap.c68
-rw-r--r--pango/pango-fontmap.h16
-rw-r--r--pango/pangofc-fontmap.c57
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;