[gimp/gimp-2-10] plug-ins: #5896. add option for reversing order of layers when importing PDF
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] plug-ins: #5896. add option for reversing order of layers when importing PDF
- Date: Sun, 31 Jan 2021 17:02:11 +0000 (UTC)
commit de95be80a4ecf903ae107312a1ca1baf3b89a557
Author: Stanislav Grinkov <43956-stanislavgrinkov users noreply gitlab gnome org>
Date: Mon Jan 25 00:46:34 2021 +0600
plug-ins: #5896. add option for reversing order of layers when importing PDF
This feature adds new 'Load in reverse order' toggle box to allow
selection of order of PDF pages before importing them as a layers
or images.
plug-ins/common/file-pdf-load.c | 41 ++++++++++++++++++++++++++++++++++++-----
1 file changed, 36 insertions(+), 5 deletions(-)
---
diff --git a/plug-ins/common/file-pdf-load.c b/plug-ins/common/file-pdf-load.c
index 60e625fbc8..58b3489e55 100644
--- a/plug-ins/common/file-pdf-load.c
+++ b/plug-ins/common/file-pdf-load.c
@@ -56,15 +56,17 @@ typedef struct
GimpPageSelectorTarget target;
gdouble resolution;
gboolean antialias;
+ gboolean reverse_order;
gchar *PDF_password;
} PdfLoadVals;
static PdfLoadVals loadvals =
{
GIMP_PAGE_SELECTOR_TARGET_LAYERS,
- 100.00, /* 100 dpi */
- TRUE,
- NULL
+ 100.00, /* resolution in dpi */
+ TRUE, /* antialias */
+ FALSE, /* reverse_order */
+ NULL /* pdf_password */
};
typedef struct
@@ -87,6 +89,7 @@ static gint32 load_image (PopplerDocument *doc,
GimpPageSelectorTarget target,
gdouble resolution,
gboolean antialias,
+ gboolean reverse_order,
PdfSelectedPages *pages);
static GimpPDBStatusType load_dialog (PopplerDocument *doc,
@@ -538,6 +541,7 @@ run (const gchar *name,
loadvals.target,
loadvals.resolution,
loadvals.antialias,
+ loadvals.reverse_order,
&pages);
if (image_ID != -1)
@@ -1021,6 +1025,7 @@ load_image (PopplerDocument *doc,
GimpPageSelectorTarget target,
gdouble resolution,
gboolean antialias,
+ gboolean reverse_order,
PdfSelectedPages *pages)
{
gint32 image_ID = 0;
@@ -1028,6 +1033,14 @@ load_image (PopplerDocument *doc,
gint i;
gdouble scale;
gdouble doc_progress = 0;
+ gint base_index = 0;
+ gint sign = 1;
+
+ if (reverse_order && pages->n_pages > 0)
+ {
+ base_index = pages->n_pages - 1;
+ sign = -1;
+ }
if (target == GIMP_PAGE_SELECTOR_TARGET_IMAGES)
images = g_new0 (gint32, pages->n_pages);
@@ -1049,8 +1062,11 @@ load_image (PopplerDocument *doc,
cairo_surface_t *surface;
gint width;
gint height;
+ gint page_index;
+
+ page_index = base_index + sign * i;
- page = poppler_document_get_page (doc, pages->pages[i]);
+ page = poppler_document_get_page (doc, pages->pages[page_index]);
poppler_page_get_size (page, &page_width, &page_height);
width = page_width * scale;
@@ -1245,6 +1261,8 @@ load_dialog (PopplerDocument *doc,
GtkWidget *resolution;
GtkWidget *antialias;
GtkWidget *hbox;
+ GtkWidget *reverse_order;
+ GtkWidget *separator;
ThreadData thread_data;
GThread *thread;
@@ -1335,8 +1353,21 @@ load_dialog (PopplerDocument *doc,
thread = g_thread_new ("thumbnailer", thumbnail_thread, &thread_data);
- /* Resolution */
+ /* "Load in reverse order" toggle button */
+ reverse_order = gtk_check_button_new_with_mnemonic (_("Load in reverse order"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (reverse_order), loadvals.reverse_order);
+ gtk_box_pack_start (GTK_BOX (vbox), reverse_order, FALSE, FALSE, 0);
+
+ g_signal_connect (reverse_order, "toggled",
+ G_CALLBACK (gimp_toggle_button_update), &loadvals.reverse_order);
+ gtk_widget_show (reverse_order);
+ /* Separator */
+ separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0);
+ gtk_widget_show (separator);
+
+ /* Resolution */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]