From: Taehyub Kim Date: Tue, 15 Jun 2021 11:42:49 +0000 (+0900) Subject: renderer: apply background clip path. X-Git-Tag: submit/tizen/20210712.043639^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_6.5;p=platform%2Fcore%2Fuifw%2Frive-tizen.git renderer: apply background clip path. Change-Id: I96f5b1f71326be4b94e9a88970d75b15ef852b94 --- diff --git a/src/renderer/tvg_renderer.cpp b/src/renderer/tvg_renderer.cpp index 8fa3370..d8fcc3a 100644 --- a/src/renderer/tvg_renderer.cpp +++ b/src/renderer/tvg_renderer.cpp @@ -259,15 +259,33 @@ void TvgRenderer::drawPath(RenderPath* path, RenderPaint* paint) } tvgShape->transform({m_Transform[0], m_Transform[2], m_Transform[4], m_Transform[1], m_Transform[3], m_Transform[5], 0, 0, 1}); - m_Canvas->push(unique_ptr(tvgShape->duplicate())); + + if (m_BgClipPath) + { + m_BgClipPath->fill(255, 255, 255, 255); + auto scene = tvg::Scene::gen(); + scene->push(unique_ptr(tvgShape->duplicate())); + scene->composite(unique_ptr(static_cast(m_BgClipPath->duplicate())), tvg::CompositeMethod::ClipPath); + m_Canvas->push(move(scene)); + } + else + m_Canvas->push(unique_ptr(tvgShape->duplicate())); } void TvgRenderer::clipPath(RenderPath* path) { //Note: ClipPath transform matrix is calculated by transfrom matrix in addRenderPath function - m_ClipPath = static_cast(path)->tvgShape.get(); - m_ClipPath->transform({m_Transform[0], m_Transform[2], m_Transform[4], m_Transform[1], m_Transform[3], m_Transform[5], 0, 0, 1}); + if (!m_BgClipPath) + { + m_BgClipPath = static_cast(path)->tvgShape.get(); + m_BgClipPath->transform({m_Transform[0], m_Transform[2], m_Transform[4], m_Transform[1], m_Transform[3], m_Transform[5], 0, 0, 1}); + } + else + { + m_ClipPath = static_cast(path)->tvgShape.get(); + m_ClipPath->transform({m_Transform[0], m_Transform[2], m_Transform[4], m_Transform[1], m_Transform[3], m_Transform[5], 0, 0, 1}); + } } namespace rive diff --git a/src/renderer/tvg_renderer.hpp b/src/renderer/tvg_renderer.hpp index 3095782..4483164 100644 --- a/src/renderer/tvg_renderer.hpp +++ b/src/renderer/tvg_renderer.hpp @@ -110,6 +110,7 @@ namespace rive private: Canvas* m_Canvas; Shape* m_ClipPath = nullptr; + Shape* m_BgClipPath = nullptr; Mat2D m_Transform; Mat2D m_SaveTransform;