X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_geometry%2Frectangle.cpp;h=48d9e9df4e50006438937ac0c2bfd711a541d4f3;hb=4ec81d053bf1d0cbcd9f0bf048914ec8eca08f4c;hp=d5b861c13249587087dc4090cdb00ac5c824ddc8;hpb=bf9a7016492069205a1e17b641f886c659f6b594;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_geometry/rectangle.cpp b/synfig-core/trunk/src/modules/mod_geometry/rectangle.cpp index d5b861c..48d9e9d 100644 --- a/synfig-core/trunk/src/modules/mod_geometry/rectangle.cpp +++ b/synfig-core/trunk/src/modules/mod_geometry/rectangle.cpp @@ -177,6 +177,15 @@ Rectangle::hit_check(synfig::Context context, const synfig::Point &pos)const return context.hit_check(pos); } +bool +Rectangle::is_solid_color()const +{ + return Layer_Composite::is_solid_color() || + (get_blend_method() == Color::BLEND_COMPOSITE && + get_amount() == 1.0f && + color.get_a() == 1.0f); +} + Color Rectangle::get_color(Context context, const Point &pos)const { @@ -480,12 +489,6 @@ Rectangle::accelerated_render(Context context,Surface *surface,int quality, cons right = std::min(w,right); */ - Surface::alpha_pen pen; - - // In the case where there is nothing to render... - if (right < left || bottom < top) - return true; - // optimisation - if the whole tile is covered by this rectangle, // and the rectangle is a solid colour, we don't need to render // what's behind us @@ -503,6 +506,12 @@ Rectangle::accelerated_render(Context context,Surface *surface,int quality, cons return false; } + // In the case where there is nothing to render... + if (right < left || bottom < top) + return true; + + Surface::alpha_pen pen; + if(right-left>0&&bottom-top>0) { if(is_solid_color())