summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/cairo-renderer.cpp
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2013-09-13 21:14:45 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2013-09-13 21:14:45 +0000
commit0697088a2e3fbb3f7777db721e8c5e4661311dbe (patch)
treef7171656bbb4330a5aef0c30b01981d64196993d /src/extension/internal/cairo-renderer.cpp
parentUse g_match_info_free instead of g_match_info_unref (diff)
downloadinkscape-0697088a2e3fbb3f7777db721e8c5e4661311dbe.tar.gz
inkscape-0697088a2e3fbb3f7777db721e8c5e4661311dbe.zip
Improve the functions which create GdkPixbuf from Cairo surface
and vice versa. Simplifies some code. Also introduce proper refcounting into svg_preview_cache.cpp and fix its users. (bzr r12512)
Diffstat (limited to 'src/extension/internal/cairo-renderer.cpp')
-rw-r--r--src/extension/internal/cairo-renderer.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp
index 76ebbfcb5..3463925b6 100644
--- a/src/extension/internal/cairo-renderer.cpp
+++ b/src/extension/internal/cairo-renderer.cpp
@@ -449,7 +449,7 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx)
Geom::OptRect bbox = item->desktopVisualBounds();
// no bbox, e.g. empty group
- if (!bbox) {
+ if (!bbox) {
return;
}
@@ -503,8 +503,13 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx)
if (pb) {
TEST(gdk_pixbuf_save( pb, "bitmap.png", "png", NULL, NULL ));
- // TODO this is stupid - we just converted to pixbuf format when generating the bitmap!
- convert_pixbuf_normal_to_argb32(pb);
+
+ /* TODO: find a way to avoid a duplicate conversion between
+ * Cairo and GdkPixbuf pixel formats here.
+ * Internally, generate_internal_bitmap creates a Cairo surface,
+ * but then converts it to pixbuf format. In turn, renderImage()
+ * below converts back to Cairo format.
+ */
ctx->renderImage(pb, t, item->style);
g_object_unref(pb);
pb = 0;