From 91a6cdb9dc827de86d124721ce47d0e9c15ae383 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 14 Sep 2022 13:23:20 +0900 Subject: [PATCH] wasm: Update size calculation logic revised the logic to align svg images in the center of the view. this is the subsequent changes to 3939b61770c14602d7e349ba0baa21d9f4d97a44. --- src/wasm/thorvgwasm.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/wasm/thorvgwasm.cpp b/src/wasm/thorvgwasm.cpp index 2fb74311..d8bcaf64 100644 --- a/src/wasm/thorvgwasm.cpp +++ b/src/wasm/thorvgwasm.cpp @@ -255,7 +255,19 @@ private: mBuffer = make_unique(mWidth * mHeight * 4); mSwCanvas->target((uint32_t *)mBuffer.get(), mWidth, mWidth, mHeight, SwCanvas::ARGB8888); - if (mPicture) mPicture->size(width, height); + if (mPicture) { + float scale; + float shiftX = 0.0f, shiftY = 0.0f; + if (mOriginalSize[0] > mOriginalSize[1]) { + scale = width / mOriginalSize[0]; + shiftY = (height - mOriginalSize[1] * scale) * 0.5f; + } else { + scale = height / mOriginalSize[1]; + shiftX = (width - mOriginalSize[0] * scale) * 0.5f; + } + mPicture->scale(scale); + mPicture->translate(shiftX, shiftY); + } } struct Layer