summaryrefslogtreecommitdiffstats
path: root/src/extension
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2011-08-25 19:16:02 +0000
committerKrzysztof Kosinski <tweenk.pl@gmail.com>2011-08-25 19:16:02 +0000
commit093f4174abc07b4ea523617fccdd8028f2670fea (patch)
tree5aba6cd030bc6b0dbb59ec48e32a0b0364b516bd /src/extension
parentGerman translation update (diff)
parentReduce default rendering cache size to 64 MiB (diff)
downloadinkscape-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.cpp11
-rw-r--r--src/extension/internal/cairo-ps-out.cpp10
-rw-r--r--src/extension/internal/cairo-render-context.cpp15
-rw-r--r--src/extension/internal/cairo-renderer-pdf-out.cpp11
-rw-r--r--src/extension/internal/cairo-renderer.cpp8
-rw-r--r--src/extension/internal/emf-win32-inout.cpp13
-rw-r--r--src/extension/internal/latex-pstricks-out.cpp16
-rw-r--r--src/extension/print.cpp23
-rw-r--r--src/extension/print.h10
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,