diff options
Diffstat (limited to 'thirdparty/thorvg/src/renderer/tvgPicture.cpp')
| -rw-r--r-- | thirdparty/thorvg/src/renderer/tvgPicture.cpp | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/thirdparty/thorvg/src/renderer/tvgPicture.cpp b/thirdparty/thorvg/src/renderer/tvgPicture.cpp index 5bd55a3f7b..68c7a41032 100644 --- a/thirdparty/thorvg/src/renderer/tvgPicture.cpp +++ b/thirdparty/thorvg/src/renderer/tvgPicture.cpp @@ -104,21 +104,6 @@ RenderRegion Picture::Impl::bounds(RenderMethod* renderer) } -RenderTransform Picture::Impl::resizeTransform(const RenderTransform* pTransform) -{ - //Overriding Transformation by the desired image size - auto sx = w / loader->w; - auto sy = h / loader->h; - auto scale = sx < sy ? sx : sy; - - RenderTransform tmp; - tmp.m = {scale, 0, 0, 0, scale, 0, 0, 0, 1}; - - if (!pTransform) return tmp; - else return RenderTransform(pTransform, &tmp); -} - - Result Picture::Impl::load(ImageLoader* loader) { //Same resource has been loaded. @@ -215,18 +200,24 @@ Result Picture::size(float* w, float* h) const noexcept } -Result Picture::mesh(const Polygon* triangles, uint32_t triangleCnt) noexcept +const Paint* Picture::paint(uint32_t id) noexcept { - if (!triangles && triangleCnt > 0) return Result::InvalidArguments; - if (triangles && triangleCnt == 0) return Result::InvalidArguments; - - pImpl->mesh(triangles, triangleCnt); - return Result::Success; -} + struct Value + { + uint32_t id; + const Paint* ret; + } value = {id, nullptr}; + auto cb = [](const tvg::Paint* paint, void* data) -> bool + { + auto p = static_cast<Value*>(data); + if (p->id == paint->id) { + p->ret = paint; + return false; + } + return true; + }; -uint32_t Picture::mesh(const Polygon** triangles) const noexcept -{ - if (triangles) *triangles = pImpl->rm.triangles; - return pImpl->rm.triangleCnt; + tvg::Accessor::gen()->set(this, cb, &value); + return value.ret; } |
