diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2011-08-25 19:16:02 +0000 |
|---|---|---|
| committer | Krzysztof Kosinski <tweenk.pl@gmail.com> | 2011-08-25 19:16:02 +0000 |
| commit | 093f4174abc07b4ea523617fccdd8028f2670fea (patch) | |
| tree | 5aba6cd030bc6b0dbb59ec48e32a0b0364b516bd /src/extension | |
| parent | German translation update (diff) | |
| parent | Reduce default rendering cache size to 64 MiB (diff) | |
| download | inkscape-093f4174abc07b4ea523617fccdd8028f2670fea.tar.gz inkscape-093f4174abc07b4ea523617fccdd8028f2670fea.zip | |
Merge rendering cache branch (GSoC 2011)
(bzr r10579)
Diffstat (limited to 'src/extension')
| -rw-r--r-- | src/extension/internal/cairo-png-out.cpp | 11 | ||||
| -rw-r--r-- | src/extension/internal/cairo-ps-out.cpp | 10 | ||||
| -rw-r--r-- | src/extension/internal/cairo-render-context.cpp | 15 | ||||
| -rw-r--r-- | src/extension/internal/cairo-renderer-pdf-out.cpp | 11 | ||||
| -rw-r--r-- | src/extension/internal/cairo-renderer.cpp | 8 | ||||
| -rw-r--r-- | src/extension/internal/emf-win32-inout.cpp | 13 | ||||
| -rw-r--r-- | src/extension/internal/latex-pstricks-out.cpp | 16 | ||||
| -rw-r--r-- | src/extension/print.cpp | 23 | ||||
| -rw-r--r-- | src/extension/print.h | 10 |
9 files changed, 49 insertions, 68 deletions
diff --git a/src/extension/internal/cairo-png-out.cpp b/src/extension/internal/cairo-png-out.cpp index f741c9f39..678a46095 100644 --- a/src/extension/internal/cairo-png-out.cpp +++ b/src/extension/internal/cairo-png-out.cpp @@ -27,8 +27,7 @@ #include "extension/print.h" #include "extension/db.h" #include "extension/output.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" +#include "display/drawing.h" #include "display/curve.h" #include "display/canvas-bpath.h" @@ -57,11 +56,11 @@ png_render_document_to_file(SPDocument *doc, gchar const *filename) doc->ensureUpToDate(); /* Start */ - // Create new arena + SPItem *base = doc->getRoot(); - NRArena *arena = NRArena::create(); + Inkscape::Drawing drawing; unsigned dkey = SPItem::display_key_new(1); - NRArenaItem *root = base->invoke_show(arena, dkey, SP_ITEM_SHOW_DISPLAY); + base->invoke_show(drawing, dkey, SP_ITEM_SHOW_DISPLAY); /* Create renderer and context */ renderer = new CairoRenderer(); @@ -76,9 +75,7 @@ png_render_document_to_file(SPDocument *doc, gchar const *filename) } renderer->destroyContext(ctx); - /* Release arena */ base->invoke_hide(dkey); - nr_object_unref((NRObject *) arena); /* end */ delete renderer; diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp index 7fdfaf8df..9cc3a4ce3 100644 --- a/src/extension/internal/cairo-ps-out.cpp +++ b/src/extension/internal/cairo-ps-out.cpp @@ -29,8 +29,7 @@ #include "extension/print.h" #include "extension/db.h" #include "extension/output.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" +#include "display/drawing.h" #include "display/curve.h" #include "display/canvas-bpath.h" @@ -86,10 +85,9 @@ ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int l if (!base) return false; - /* Create new arena */ - NRArena *arena = NRArena::create(); + Inkscape::Drawing drawing; unsigned dkey = SPItem::display_key_new(1); - base->invoke_show(arena, dkey, SP_ITEM_SHOW_DISPLAY); + base->invoke_show(drawing, dkey, SP_ITEM_SHOW_DISPLAY); /* Create renderer and context */ CairoRenderer *renderer = new CairoRenderer(); @@ -111,9 +109,7 @@ ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int l } } - /* Release arena */ base->invoke_hide(dkey); - nr_object_unref((NRObject *) arena); renderer->destroyContext(ctx); delete renderer; diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index 22b68b0ca..c3a8a790b 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -32,9 +32,8 @@ #include <glib/gmem.h> #include <glibmm/i18n.h> -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" -#include "display/nr-arena-group.h" +#include "display/drawing.h" +#include "display/display-forward.h" #include "display/curve.h" #include "display/canvas-bpath.h" #include "display/cairo-utils.h" @@ -91,14 +90,14 @@ struct SPClipPathView { SPClipPathView *next; unsigned int key; - NRArenaItem *arenaitem; + Inkscape::DrawingItem *arenaitem; NRRect bbox; }; struct SPMaskView { SPMaskView *next; unsigned int key; - NRArenaItem *arenaitem; + Inkscape::DrawingItem *arenaitem; NRRect bbox; }; @@ -1093,8 +1092,8 @@ CairoRenderContext::_createPatternPainter(SPPaintServer const *const paintserver pattern_ctx->setTransform(&pcs2dev); pattern_ctx->pushState(); - // create arena and group - NRArena *arena = NRArena::create(); + // create drawing and group + Inkscape::Drawing drawing; unsigned dkey = SPItem::display_key_new(1); // show items and render them @@ -1102,7 +1101,7 @@ CairoRenderContext::_createPatternPainter(SPPaintServer const *const paintserver if (pat_i && SP_IS_OBJECT (pat_i) && pattern_hasItemChildren(pat_i)) { // find the first one with item children for ( SPObject *child = pat_i->firstChild() ; child; child = child->getNext() ) { if (SP_IS_ITEM (child)) { - SP_ITEM (child)->invoke_show (arena, dkey, SP_ITEM_REFERENCE_FLAGS); + SP_ITEM (child)->invoke_show (drawing, dkey, SP_ITEM_REFERENCE_FLAGS); _renderer->renderItem(pattern_ctx, SP_ITEM (child)); } } diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index 5d7c82bff..7ea5718f7 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -29,8 +29,7 @@ #include "extension/print.h" #include "extension/db.h" #include "extension/output.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" +#include "display/drawing.h" #include "display/curve.h" #include "display/canvas-bpath.h" @@ -82,10 +81,10 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int } /* Create new arena */ - NRArena *arena = NRArena::create(); - nr_arena_set_renderoffscreen (arena); + Inkscape::Drawing drawing; + drawing.setExact(true); unsigned dkey = SPItem::display_key_new(1); - base->invoke_show(arena, dkey, SP_ITEM_SHOW_DISPLAY); + base->invoke_show(drawing, dkey, SP_ITEM_SHOW_DISPLAY); /* Create renderer and context */ CairoRenderer *renderer = new CairoRenderer(); @@ -106,9 +105,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int } } - /* Release arena */ base->invoke_hide(dkey); - nr_object_unref((NRObject *) arena); renderer->destroyContext(ctx); delete renderer; diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 7eb7881dc..5e7fb991a 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -36,9 +36,7 @@ #include <glib/gmem.h> #include <glibmm/i18n.h> -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" -#include "display/nr-arena-group.h" +#include "display/display-forward.h" #include "display/curve.h" #include "display/canvas-bpath.h" #include "display/cairo-utils.h" @@ -88,14 +86,14 @@ struct SPClipPathView { SPClipPathView *next; unsigned int key; - NRArenaItem *arenaitem; + Inkscape::DrawingItem *arenaitem; NRRect bbox; }; struct SPMaskView { SPMaskView *next; unsigned int key; - NRArenaItem *arenaitem; + Inkscape::DrawingItem *arenaitem; NRRect bbox; }; diff --git a/src/extension/internal/emf-win32-inout.cpp b/src/extension/internal/emf-win32-inout.cpp index e4997fce1..f1f0ef3cb 100644 --- a/src/extension/internal/emf-win32-inout.cpp +++ b/src/extension/internal/emf-win32-inout.cpp @@ -36,8 +36,8 @@ #include "extension/print.h" #include "extension/db.h" #include "extension/output.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" +#include "display/drawing.h" +#include "display/drawing-item.h" #include "unit-constants.h" #include "clear-n_.h" @@ -106,9 +106,10 @@ emf_print_document_to_file(SPDocument *doc, gchar const *filename) /* fixme: This has to go into module constructor somehow */ /* Create new arena */ mod->base = doc->getRoot(); - mod->arena = NRArena::create(); + Inkscape::Drawing drawing; mod->dkey = SPItem::display_key_new(1); - mod->root = mod->base->invoke_show(mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY); + mod->root = mod->base->invoke_show(drawing, mod->dkey, SP_ITEM_SHOW_DISPLAY); + drawing.setRoot(mod->root); /* Print document */ ret = mod->begin(doc); if (ret) { @@ -120,9 +121,7 @@ emf_print_document_to_file(SPDocument *doc, gchar const *filename) /* Release arena */ mod->base->invoke_hide(mod->dkey); mod->base = NULL; - mod->root = NULL; - nr_object_unref((NRObject *) mod->arena); - mod->arena = NULL; + mod->root = NULL; // deleted by invoke_hide /* end */ mod->set_param_string("destination", oldoutput); diff --git a/src/extension/internal/latex-pstricks-out.cpp b/src/extension/internal/latex-pstricks-out.cpp index 376db7ee3..3a16268e6 100644 --- a/src/extension/internal/latex-pstricks-out.cpp +++ b/src/extension/internal/latex-pstricks-out.cpp @@ -18,8 +18,8 @@ #include "extension/system.h" #include "extension/print.h" #include "extension/db.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" +#include "display/display-forward.h" +#include "display/drawing.h" #include "sp-root.h" @@ -61,21 +61,19 @@ void LatexOutput::save(Inkscape::Extension::Output * /*mod2*/, SPDocument *doc, /* Start */ context.module = mod; /* fixme: This has to go into module constructor somehow */ - // Create new arena mod->base = doc->getRoot(); - mod->arena = NRArena::create(); + Inkscape::Drawing drawing; mod->dkey = SPItem::display_key_new (1); - mod->root = (mod->base)->invoke_show (mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY); + mod->root = (mod->base)->invoke_show (drawing, mod->dkey, SP_ITEM_SHOW_DISPLAY); + drawing.setRoot(mod->root); /* Print document */ ret = mod->begin (doc); (mod->base)->invoke_print (&context); ret = mod->finish (); - /* Release arena */ + /* Release things */ (mod->base)->invoke_hide (mod->dkey); mod->base = NULL; - mod->root = NULL; - nr_object_unref ((NRObject *) mod->arena); - mod->arena = NULL; + mod->root = NULL; // should have been deleted by invoke_hide /* end */ mod->set_param_string("destination", oldoutput); diff --git a/src/extension/print.cpp b/src/extension/print.cpp index ad8c4c38d..f2dbb0b9b 100644 --- a/src/extension/print.cpp +++ b/src/extension/print.cpp @@ -15,25 +15,22 @@ namespace Inkscape { namespace Extension { -Print::Print (Inkscape::XML::Node * in_repr, Implementation::Implementation * in_imp) : Extension(in_repr, in_imp) +Print::Print (Inkscape::XML::Node * in_repr, Implementation::Implementation * in_imp) + : Extension(in_repr, in_imp) + , base(NULL) + , drawing(NULL) + , root(NULL) + , dkey(0) { - base = NULL; - arena = NULL; - root = NULL; - dkey = 0; - - return; } Print::~Print (void) -{ - return; -} +{} bool Print::check (void) { - return Extension::check(); + return Extension::check(); } unsigned int @@ -108,14 +105,14 @@ Print::text (const char* text, Geom::Point p, const SPStyle* style) bool Print::textToPath (void) { - return imp->textToPath(this); + return imp->textToPath(this); } //whether embed font in print output (EPS especially) bool Print::fontEmbedded (void) { - return imp->fontEmbedded(this); + return imp->fontEmbedded(this); } } } /* namespace Inkscape, Extension */ diff --git a/src/extension/print.h b/src/extension/print.h index d5218aed8..c2276126b 100644 --- a/src/extension/print.h +++ b/src/extension/print.h @@ -13,7 +13,7 @@ #include "extension.h" -#include "display/nr-arena-forward.h" +#include "display/display-forward.h" #include "forward.h" #include "sp-item.h" namespace Inkscape { @@ -22,10 +22,10 @@ namespace Extension { class Print : public Extension { public: /* TODO: These are public for the short term, but this should be fixed */ - SPItem *base; /**< TODO: Document these */ - NRArena *arena; /**< TODO: Document these */ - NRArenaItem *root; /**< TODO: Document these */ - unsigned int dkey; /**< TODO: Document these */ + SPItem *base; + Inkscape::Drawing *drawing; + Inkscape::DrawingItem *root; + unsigned int dkey; public: Print (Inkscape::XML::Node * in_repr, |
