[gimp/metadata-browser] file-pdf-load: Bug 644544: Let GIMP allow to switch off antialiasing in PDF
- From: Roman Joost <romanofski src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/metadata-browser] file-pdf-load: Bug 644544: Let GIMP allow to switch off antialiasing in PDF
- Date: Wed, 12 Sep 2012 22:45:13 +0000 (UTC)
commit c954f7244ac31ff34ea2290be65a8dea80722b48
Author: Massimo Valentini <mvalentini src gnome org>
Date: Thu Feb 2 15:04:07 2012 +0100
file-pdf-load: Bug 644544: Let GIMP allow to switch off antialiasing in PDF
plug-ins/common/file-pdf-load.c | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
---
diff --git a/plug-ins/common/file-pdf-load.c b/plug-ins/common/file-pdf-load.c
index 5495599..9731fb8 100644
--- a/plug-ins/common/file-pdf-load.c
+++ b/plug-ins/common/file-pdf-load.c
@@ -48,12 +48,14 @@ typedef struct
{
GimpPageSelectorTarget target;
gdouble resolution;
+ gboolean antialias;
} PdfLoadVals;
static PdfLoadVals loadvals =
{
GIMP_PAGE_SELECTOR_TARGET_LAYERS,
- 100.00 /* 100 dpi */
+ 100.00, /* 100 dpi */
+ TRUE
};
typedef struct
@@ -75,6 +77,7 @@ static gint32 load_image (PopplerDocument *doc,
GimpRunMode run_mode,
GimpPageSelectorTarget target,
guint32 resolution,
+ gboolean antialias,
PdfSelectedPages *pages);
static GimpPDBStatusType load_dialog (PopplerDocument *doc,
@@ -259,6 +262,7 @@ query (void)
{ GIMP_PDB_STRING, "raw-filename", "The name entered" }
/* XXX: Nice to have API at some point, but needs work
{ GIMP_PDB_INT32, "resolution", "Resolution to rasterize to (dpi)" },
+ { GIMP_PDB_INT32, "antialiasing", "Enable antialiasing" },
{ GIMP_PDB_INT32, "n-pages", "Number of pages to load (0 for all)" },
{ GIMP_PDB_INT32ARRAY,"pages", "The pages to load" }
*/
@@ -413,6 +417,7 @@ run (const gchar *name,
run_mode,
loadvals.target,
loadvals.resolution,
+ loadvals.antialias,
&pages);
if (image_ID != -1)
@@ -771,7 +776,8 @@ static cairo_surface_t *
render_page_to_surface (PopplerPage *page,
int width,
int height,
- double scale)
+ double scale,
+ gboolean antialias)
{
cairo_surface_t *surface;
cairo_t *cr;
@@ -785,6 +791,19 @@ render_page_to_surface (PopplerPage *page,
if (scale != 1.0)
cairo_scale (cr, scale, scale);
+ if (! antialias)
+ {
+ cairo_font_options_t* options = cairo_font_options_create ();
+
+ cairo_get_font_options (cr, options);
+ cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_NONE);
+
+ cairo_set_font_options (cr, options);
+ cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
+
+ cairo_font_options_destroy (options);
+ }
+
poppler_page_render (page, cr);
cairo_restore (cr);
@@ -828,6 +847,7 @@ load_image (PopplerDocument *doc,
GimpRunMode run_mode,
GimpPageSelectorTarget target,
guint32 resolution,
+ gboolean antialias,
PdfSelectedPages *pages)
{
gint32 image_ID = 0;
@@ -883,7 +903,7 @@ load_image (PopplerDocument *doc,
gimp_image_set_resolution (image_ID, resolution, resolution);
}
- surface = render_page_to_surface (page, width, height, scale);
+ surface = render_page_to_surface (page, width, height, scale, antialias);
layer_from_surface (image_ID, page_label, i, surface,
doc_progress, 1.0 / pages->n_pages);
@@ -959,7 +979,7 @@ get_thumb_surface (PopplerDocument *doc,
width *= scale;
height *= scale;
- surface = render_page_to_surface (page, width, height, scale);
+ surface = render_page_to_surface (page, width, height, scale, TRUE);
}
g_object_unref (page);
@@ -1050,6 +1070,7 @@ load_dialog (PopplerDocument *doc,
GtkWidget *title;
GtkWidget *selector;
GtkWidget *resolution;
+ GtkWidget *antialias;
GtkWidget *hbox;
ThreadData thread_data;
@@ -1158,6 +1179,15 @@ load_dialog (PopplerDocument *doc,
G_CALLBACK (gimp_resolution_entry_update_x_in_dpi),
&loadvals.resolution);
+ /* Antialiasing*/
+ antialias = gtk_check_button_new_with_mnemonic (_("_Enable Antialiasing"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (antialias), loadvals.antialias);
+ gtk_box_pack_start (GTK_BOX (vbox), antialias, FALSE, FALSE, 0);
+
+ g_signal_connect (antialias, "toggled",
+ G_CALLBACK (gimp_toggle_button_update), &loadvals.antialias);
+ gtk_widget_show (antialias);
+
/* Setup done; display the dialog */
gtk_widget_show (dialog);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]