glib: Add PopplerPageRange type
This type will be used for getting of suggested page ranges from
opened document if it contains PrintPageRange viewer preference.
https://gitlab.freedesktop.org/poppler/poppler/issues/290
diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
index e8742ab..5c9e6a2 100644
--- a/glib/poppler-document.cc
+++ b/glib/poppler-document.cc
@@ -1728,6 +1728,53 @@
return retval;
}
+/* PopplerPageRange */
+
+POPPLER_DEFINE_BOXED_TYPE (PopplerPageRange, poppler_page_range,
+ poppler_page_range_copy,
+ poppler_page_range_free)
+
+/**
+ * poppler_page_range_new:
+ *
+ * Creates a new #PopplerPageRange
+ *
+ * Returns: a new #PopplerPageRange, use poppler_page_range_free() to free it
+ */
+PopplerPageRange *
+poppler_page_range_new (void)
+{
+ return g_slice_new0 (PopplerPageRange);
+}
+
+/**
+ * poppler_page_range_copy:
+ * @range: a #PopplerPageRange to copy
+ *
+ * Creates a copy of @range
+ *
+ * Returns: a new allocated copy of @range
+ */
+PopplerPageRange *
+poppler_page_range_copy (PopplerPageRange *range)
+{
+ g_return_val_if_fail (range != nullptr, NULL);
+
+ return g_slice_dup (PopplerPageRange, range);
+}
+
+/**
+ * poppler_page_range_free:
+ * @range: a #PopplerPageRange
+ *
+ * Frees the given #PopplerPageRange
+ */
+void
+poppler_page_range_free (PopplerPageRange *range)
+{
+ g_slice_free (PopplerPageRange, range);
+}
+
/**
* poppler_document_get_permissions:
* @document: A #PopplerDocument
diff --git a/glib/poppler-document.h b/glib/poppler-document.h
index a640b39..98ceb75 100644
--- a/glib/poppler-document.h
+++ b/glib/poppler-document.h
@@ -521,6 +521,30 @@
POPPLER_PUBLIC
void poppler_ps_file_free (PopplerPSFile *ps_file);
+/**
+ * PopplerPageRange:
+ * @start_page: first page in the range of pages
+ * @end_page: last page in the range of pages
+ *
+ * A #PopplerPageRange is used to specify a range of pages.
+ *
+ * Since: 0.78
+ */
+#define POPPLER_TYPE_PAGE_RANGE (poppler_page_range_get_type ())
+struct _PopplerPageRange
+{
+ gint start_page;
+ gint end_page;
+};
+
+POPPLER_PUBLIC
+GType poppler_page_range_get_type (void) G_GNUC_CONST;
+POPPLER_PUBLIC
+PopplerPageRange *poppler_page_range_new ();
+POPPLER_PUBLIC
+PopplerPageRange *poppler_page_range_copy (PopplerPageRange *range);
+POPPLER_PUBLIC
+void poppler_page_range_free (PopplerPageRange *range);
G_END_DECLS
diff --git a/glib/poppler.h b/glib/poppler.h
index 91b0b4f..5d0f16d 100644
--- a/glib/poppler.h
+++ b/glib/poppler.h
@@ -211,6 +211,7 @@
typedef struct _PopplerStructureElement PopplerStructureElement;
typedef struct _PopplerStructureElementIter PopplerStructureElementIter;
typedef struct _PopplerTextSpan PopplerTextSpan;
+typedef struct _PopplerPageRange PopplerPageRange;
/**
* PopplerBackend: