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/extension/internal/gdkpixbuf-input.cpp | |
| 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/extension/internal/gdkpixbuf-input.cpp')
| -rw-r--r-- | src/extension/internal/gdkpixbuf-input.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
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(); |
