summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/gdkpixbuf-input.cpp
diff options
context:
space:
mode:
authorNicolas Dufour <nicoduf@yahoo.fr>2012-07-23 18:34:01 +0000
committerJazzyNico <nicoduf@yahoo.fr>2012-07-23 18:34:01 +0000
commit54d42c46eece26d1b7f49bb2958304315bd42e2b (patch)
tree967aa9653ae62bb1ce8bb2b75fa4a7e3d45d011e /src/extension/internal/gdkpixbuf-input.cpp
parentFix canvas scroll events in GTK+ 3 (diff)
downloadinkscape-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.cpp33
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();