diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-03-05 00:15:39 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-03-05 00:15:39 +0000 |
| commit | a9b7c9028767417b2adda38f3dbf99418c73390f (patch) | |
| tree | 18707d2e45d8093625fc4c7a31b387d9f6e4dc84 /src/extension | |
| parent | Improve behavior when pasting, DnDing and importing bitmap images (diff) | |
| download | inkscape-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.cpp | 23 |
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); |
