[pango/pango2: 2/7] Add pango2_generic_family_get_families
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango2: 2/7] Add pango2_generic_family_get_families
- Date: Sat, 9 Jul 2022 16:08:26 +0000 (UTC)
commit a1eadd9d8f0e5c662ba34f94a9bb998aa2c2c759
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jul 9 10:17:40 2022 -0400
Add pango2_generic_family_get_families
This is useful when dumping fontmaps.
pango2/pango-generic-family.c | 91 +++++++++++++++++++++++++++++++++++++++++++
pango2/pango-generic-family.h | 4 ++
2 files changed, 95 insertions(+)
---
diff --git a/pango2/pango-generic-family.c b/pango2/pango-generic-family.c
index c0697f002..bfa5ceb40 100644
--- a/pango2/pango-generic-family.c
+++ b/pango2/pango-generic-family.c
@@ -94,6 +94,78 @@ pango2_generic_family_list_model_init (GListModelInterface *iface)
iface->get_item = pango2_generic_family_get_item;
}
+ /* }}} */
+/* {{{ Family list model implementation */
+
+G_DECLARE_FINAL_TYPE (Pango2FamilyModel, pango2_family_model, PANGO2, FAMILY_MODEL, GObject)
+
+struct _Pango2FamilyModel {
+ GObject parent;
+ Pango2GenericFamily *family;
+};
+
+struct _Pango2FamilyModelClass {
+ GObjectClass parent_class;
+};
+
+static GType
+pango2_family_model_get_item_type (GListModel *list)
+{
+ return PANGO2_TYPE_FONT_FAMILY;
+}
+
+static guint
+pango2_family_model_get_n_items (GListModel *list)
+{
+ Pango2FamilyModel *self = PANGO2_FAMILY_MODEL (list);
+
+ return self->family->families->len;
+}
+
+static gpointer
+pango2_family_model_get_item (GListModel *list,
+ guint position)
+{
+ Pango2FamilyModel *self = PANGO2_FAMILY_MODEL (list);
+
+ if (position < self->family->families->len)
+ return g_object_ref (g_ptr_array_index (self->family->families, position));
+
+ return NULL;
+}
+
+static void
+pango2_family_model_list_model_init (GListModelInterface *iface)
+{
+ iface->get_item_type = pango2_family_model_get_item_type;
+ iface->get_n_items = pango2_family_model_get_n_items;
+ iface->get_item = pango2_family_model_get_item;
+}
+
+G_DEFINE_TYPE_WITH_CODE (Pango2FamilyModel, pango2_family_model, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, pango2_family_model_list_model_init))
+
+static void
+pango2_family_model_init (Pango2FamilyModel *self)
+{
+}
+
+static void
+pango2_family_model_finalize (GObject *object)
+{
+ Pango2FamilyModel *self = PANGO2_FAMILY_MODEL (object);
+
+ g_object_unref (self->family);
+
+ G_OBJECT_CLASS (pango2_family_model_parent_class)->finalize (object);
+}
+
+static void
+pango2_family_model_class_init (Pango2FamilyModelClass *class)
+{
+ G_OBJECT_CLASS (class)->finalize = pango2_family_model_finalize;
+}
+
/* }}} */
/* {{{ Pango2FontFamily implementation */
@@ -221,6 +293,25 @@ pango2_generic_family_add_family (Pango2GenericFamily *self,
g_ptr_array_add (self->families, g_object_ref (family));
}
+/**
+ * pango2_generic_family_get_families:
+ * @self: a `Pango2GenericFamily`
+ *
+ * Returns a list model of the families contained in the generic family.
+ *
+ * Returns: (transfer full): a list model of families
+ */
+GListModel *
+pango2_generic_family_get_families (Pango2GenericFamily *self)
+{
+ Pango2FamilyModel *model;
+
+ model = g_object_new (pango2_family_model_get_type (), NULL);
+ model->family = g_object_ref (self);
+
+ return G_LIST_MODEL (model);
+}
+
/* }}} */
/* vim:set foldmethod=marker expandtab: */
diff --git a/pango2/pango-generic-family.h b/pango2/pango-generic-family.h
index ab1d0fd2d..6246d3a90 100644
--- a/pango2/pango-generic-family.h
+++ b/pango2/pango-generic-family.h
@@ -20,6 +20,7 @@
#pragma once
#include "pango-font.h"
+#include <gio/gio.h>
G_BEGIN_DECLS
@@ -35,4 +36,7 @@ PANGO2_AVAILABLE_IN_ALL
void pango2_generic_family_add_family (Pango2GenericFamily *self,
Pango2FontFamily *family);
+PANGO2_AVAILABLE_IN_ALL
+GListModel * pango2_generic_family_get_families (Pango2GenericFamily *self);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]