From 9dc42a350b779c760468423685cf051b2948b7b6 Mon Sep 17 00:00:00 2001 From: dooglus Date: Wed, 23 Jan 2008 20:24:06 +0000 Subject: [PATCH] Use Color::is_straight(). Also, make sure we set the blend method of the newly encapsulated layer to be STRAIGHT, since it may be STRAIGHT_ONTO or similar, which causes us to see an empty bounding box for the pastecanvas, and for the layer never to be rendered. git-svn-id: http://svn.voria.com/code@1439 1f10aa63-cdf2-0310-b900-c93c546f37ac --- synfig-core/trunk/src/synfig/canvas.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index 3f4f8cf..74c737f 100644 --- a/synfig-core/trunk/src/synfig/canvas.cpp +++ b/synfig-core/trunk/src/synfig/canvas.cpp @@ -1191,19 +1191,21 @@ synfig::optimize_layers(Time time, Context context, Canvas::Handle op_canvas, bo * returns true for layers which need to be able to see * their context. we can't encapsulate those. */ - if (composite && composite->get_blend_method() == Color::BLEND_STRAIGHT && + if (composite && + Color::is_straight(composite->get_blend_method()) && !composite->reads_context()) { Canvas::Handle sub_canvas(Canvas::create_inline(op_canvas)); sub_canvas->push_back(composite = composite->clone()); - sub_canvas->set_time(time); // region and outline don't calculate their bounding rects until their time is set layer = Layer::create("PasteCanvas"); layer->set_description(strprintf("PasteCanvas wrapper for '%s'", composite->get_non_empty_description().c_str())); Layer_PasteCanvas* paste_canvas(static_cast(layer.get())); - paste_canvas->set_sub_canvas(sub_canvas); - paste_canvas->set_blend_method(Color::BLEND_STRAIGHT); + paste_canvas->set_blend_method(composite->get_blend_method()); paste_canvas->set_amount(composite->get_amount()); + composite->set_blend_method(Color::BLEND_STRAIGHT); // do this before calling set_time() or set_sub_canvas() composite->set_amount(1.0f); + sub_canvas->set_time(time); // region and outline don't calculate their bounding rects until their time is set + paste_canvas->set_sub_canvas(sub_canvas); } } -- 2.7.4