diff options
| author | Nicolas Dufour <nicoduf@yahoo.fr> | 2012-07-23 18:34:01 +0000 |
|---|---|---|
| committer | JazzyNico <nicoduf@yahoo.fr> | 2012-07-23 18:34:01 +0000 |
| commit | 54d42c46eece26d1b7f49bb2958304315bd42e2b (patch) | |
| tree | 967aa9653ae62bb1ce8bb2b75fa4a7e3d45d011e /src | |
| parent | Fix canvas scroll events in GTK+ 3 (diff) | |
| download | inkscape-54d42c46eece26d1b7f49bb2958304315bd42e2b.tar.gz inkscape-54d42c46eece26d1b7f49bb2958304315bd42e2b.zip | |
Bitmap. Fix for Bug #165952 (png resolution not imported) by Daniel Wagenaar.
(bzr r11567)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/Makefile_insert | 5 | ||||
| -rw-r--r-- | src/extension/internal/gdkpixbuf-input.cpp | 33 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 7 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 3 |
4 files changed, 40 insertions, 8 deletions
diff --git a/src/extension/internal/Makefile_insert b/src/extension/internal/Makefile_insert index 06fa275cb..e9b11553b 100644 --- a/src/extension/internal/Makefile_insert +++ b/src/extension/internal/Makefile_insert @@ -136,4 +136,7 @@ ink_common_sources += \ extension/internal/emf-win32-print.h \ extension/internal/emf-win32-print.cpp \ extension/internal/emf-win32-inout.h \ - extension/internal/emf-win32-inout.cpp + extension/internal/emf-win32-inout.cpp \ + extension/internal/image-resolution.h \ + extension/internal/image-resolution.cpp + diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index 80be2ecc2..30c4d4338 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -12,6 +12,8 @@ #include "selection-chemistry.h" #include "sp-image.h" #include "document-undo.h" +#include "unit-constants.h" +#include "image-resolution.h" #include <set> namespace Inkscape { @@ -77,22 +79,45 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) double width = gdk_pixbuf_get_width(pb); double height = gdk_pixbuf_get_height(pb); + double defaultxdpi = prefs->getDouble("/dialogs/import/defaultxdpi/value", PX_PER_IN); + ImageResolution *ir = 0; + double xscale = 1; + double yscale = 1; + gchar const *str = gdk_pixbuf_get_option( pb, "Inkscape::DpiX" ); if ( str ) { gint dpi = atoi(str); if ( dpi > 0 && dpi != 72 ) { - double scale = 72.0 / (double)dpi; - width *= scale; + xscale = 72.0 / (double)dpi; } + } else { + if (!ir) + ir = new ImageResolution(uri); + if (ir->ok()) + xscale = 90.0 / ir->x(); + else + xscale = 90.0 / defaultxdpi; } + width *= xscale; + str = gdk_pixbuf_get_option( pb, "Inkscape::DpiY" ); if ( str ) { gint dpi = atoi(str); if ( dpi > 0 && dpi != 72 ) { - double scale = 72.0 / (double)dpi; - height *= scale; + yscale = 72.0 / (double)dpi; } + } else { + if (!ir) + ir = new ImageResolution(uri); + if (ir->ok()) + yscale = 90.0 / ir->y(); + else + yscale = 90.0 / defaultxdpi; } + height *= yscale; + + if (ir) + delete ir; // Create image node Inkscape::XML::Document *xml_doc = doc->getReprDoc(); diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index b0cbc1b9f..0237a5ca0 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1345,8 +1345,8 @@ void InkscapePreferences::initPageBitmaps() _("Automatically reload linked images when file is changed on disk")); _misc_bitmap_editor.init("/options/bitmapeditor/value", true); _page_bitmaps.add_line( false, _("Bitmap editor:"), _misc_bitmap_editor, "", "", true); - _importexport_export.init("/dialogs/export/defaultxdpi/value", 0.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false); - _page_bitmaps.add_line( false, _("Default export resolution:"), _importexport_export, _("dpi"), + _importexport_export_res.init("/dialogs/export/defaultxdpi/value", 0.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false); + _page_bitmaps.add_line( false, _("Default export resolution:"), _importexport_export_res, _("dpi"), _("Default bitmap resolution (in dots per inch) in the Export dialog"), false); _bitmap_copy_res.init("/options/createbitmap/resolution", 1.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false); _page_bitmaps.add_line( false, _("Resolution for Create Bitmap Copy:"), _bitmap_copy_res, _("dpi"), @@ -1357,6 +1357,9 @@ void InkscapePreferences::initPageBitmaps() _bitmap_import.init("/dialogs/import/link", labels, values, G_N_ELEMENTS(values), "ask"); _page_bitmaps.add_line( false, _("Bitmap import:"), _bitmap_import, "", "", false); } + _importexport_import_res.init("/dialogs/import/defaultxdpi/value", 0.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false); + _page_bitmaps.add_line( false, _("Default import resolution:"), _importexport_import_res, _("dpi"), + _("Default bitmap resolution (in dots per inch) for bitmap import"), false); this->AddPage(_page_bitmaps, _("Bitmaps"), PREFS_PAGE_BITMAPS); } diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 49818110a..d100f74f7 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -281,7 +281,8 @@ protected: UI::Widget::PrefCheckButton _sel_layer_deselects; UI::Widget::PrefCheckButton _sel_cycle; - UI::Widget::PrefSpinButton _importexport_export; + UI::Widget::PrefSpinButton _importexport_export_res; + UI::Widget::PrefSpinButton _importexport_import_res; UI::Widget::PrefSlider _snap_delay; UI::Widget::PrefSlider _snap_weight; UI::Widget::PrefCheckButton _font_dialog; |
