summaryrefslogtreecommitdiffstats
path: root/src/extension/internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/internal')
-rw-r--r--src/extension/internal/cairo-render-context.cpp14
-rw-r--r--src/extension/internal/cairo-render-context.h2
-rw-r--r--src/extension/internal/cairo-renderer.cpp8
3 files changed, 10 insertions, 14 deletions
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index c513744a8..3edb58a13 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -163,10 +163,10 @@ CairoRenderState* CairoRenderContext::getCurrentState(void) const
CairoRenderState* CairoRenderContext::getParentState(void) const
{
// if this is the root node just return it
- if (g_slist_length(_state_stack) == 1) {
+ if (_state_stack.size() == 1) {
return _state;
} else {
- return static_cast<CairoRenderState *>(g_slist_nth_data(_state_stack, 1));
+ return _state_stack[_state_stack.size()-2];
}
}
@@ -975,7 +975,7 @@ void CairoRenderContext::pushState(void)
CairoRenderState *new_state = _createState();
// copy current state's transform
new_state->transform = _state->transform;
- _state_stack = g_slist_prepend(_state_stack, new_state);
+ _state_stack.push_back(new_state);
_state = new_state;
}
@@ -985,11 +985,11 @@ void CairoRenderContext::popState(void)
cairo_restore(_cr);
- g_free(_state_stack->data);
- _state_stack = g_slist_remove_link(_state_stack, _state_stack);
- _state = static_cast<CairoRenderState*>(_state_stack->data);
+ g_free(_state_stack.back());
+ _state_stack.pop_back();
- g_assert( g_slist_length(_state_stack) > 0 );
+ g_assert( !_state_stack.empty());
+ _state = _state_stack.back();
}
static bool pattern_hasItemChildren(SPPattern *pat)
diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index 9b976fd6d..be5169a74 100644
--- a/src/extension/internal/cairo-render-context.h
+++ b/src/extension/internal/cairo-render-context.h
@@ -198,7 +198,7 @@ protected:
unsigned int _clip_rule : 8;
unsigned int _clip_winding_failed : 1;
- GSList *_state_stack;
+ std::vector<CairoRenderState *> _state_stack;
CairoRenderState *_state; // the current state
CairoRenderer *_renderer;
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp
index a2b8fb22f..3724a5e17 100644
--- a/src/extension/internal/cairo-renderer.cpp
+++ b/src/extension/internal/cairo-renderer.cpp
@@ -121,13 +121,12 @@ CairoRenderer::createContext(void)
CairoRenderContext *new_context = new CairoRenderContext(this);
g_assert( new_context != NULL );
- new_context->_state_stack = NULL;
new_context->_state = NULL;
// create initial render state
CairoRenderState *state = new_context->_createState();
state->transform = Geom::identity();
- new_context->_state_stack = g_slist_prepend(new_context->_state_stack, state);
+ new_context->_state_stack.push_back(state);
new_context->_state = state;
return new_context;
@@ -517,20 +516,17 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx)
// Do the export
SPDocument *document = item->document;
- GSList *items = NULL;
- items = g_slist_append(items, item);
boost::scoped_ptr<Inkscape::Pixbuf> pb(
sp_generate_internal_bitmap(document, NULL,
bbox->min()[Geom::X], bbox->min()[Geom::Y], bbox->max()[Geom::X], bbox->max()[Geom::Y],
- width, height, res, res, (guint32) 0xffffff00, items ));
+ width, height, res, res, (guint32) 0xffffff00, item ));
if (pb) {
//TEST(gdk_pixbuf_save( pb, "bitmap.png", "png", NULL, NULL ));
ctx->renderImage(pb.get(), t, item->style);
}
- g_slist_free (items);
}