summaryrefslogtreecommitdiffstats
path: root/src/extension
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-03-05 00:15:39 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-03-05 00:15:39 +0000
commita9b7c9028767417b2adda38f3dbf99418c73390f (patch)
tree18707d2e45d8093625fc4c7a31b387d9f6e4dc84 /src/extension
parentImprove behavior when pasting, DnDing and importing bitmap images (diff)
downloadinkscape-a9b7c9028767417b2adda38f3dbf99418c73390f.tar.gz
inkscape-a9b7c9028767417b2adda38f3dbf99418c73390f.zip
Always embed bitmap copies created with Alt+B.
Fixed bugs: - https://launchpad.net/bugs/169108 (bzr r9144)
Diffstat (limited to 'src/extension')
-rw-r--r--src/extension/internal/gdkpixbuf-input.cpp23
1 files changed, 2 insertions, 21 deletions
diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp
index 47cde4a5a..4f91825e2 100644
--- a/src/extension/internal/gdkpixbuf-input.cpp
+++ b/src/extension/internal/gdkpixbuf-input.cpp
@@ -8,6 +8,7 @@
#include "extension/system.h"
#include "gdkpixbuf-input.h"
#include "selection-chemistry.h"
+#include "sp-image.h"
namespace Inkscape {
@@ -82,27 +83,7 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri)
sp_repr_set_svg_double(image_node, "height", height);
if (embed) {
- // Save pixbuf as JPEG or PNG for embedding
- gchar *data;
- gsize length;
- gdk_pixbuf_save_to_buffer(pb, &data, &length, is_lossy ? "jpeg" : "png", NULL, NULL);
-
- // Save base64 encoded data in image node
- // this formula taken from Glib docs
- guint needed_size = length * 4 / 3 + length * 4 / (3 * 72) + 7;
- needed_size += 5 + 8 + mime_type.size(); // 5 bytes for data:, 8 for ;base64,
-
- gchar *buffer = (gchar *) g_malloc(needed_size), *buf_work = buffer;
- buf_work += g_sprintf(buffer, "data:%s;base64,", mime_type.data());
-
- gint state = 0, save = 0;
- gsize written = 0;
- written += g_base64_encode_step((guchar*) data, length, TRUE, buf_work, &state, &save);
- written += g_base64_encode_close(TRUE, buf_work + written, &state, &save);
- buf_work[written] = 0; // null terminate
-
- image_node->setAttribute("xlink:href", buffer);
- g_free(buffer);
+ sp_embed_image(image_node, pb, mime_type);
} else {
// convert filename to uri
gchar* _uri = g_filename_to_uri(uri, NULL, NULL);