From: JunsuChoi Date: Thu, 10 Sep 2020 10:00:16 +0000 (+0900) Subject: SvgLoader: Modify calculation formula of linear gradient matrix X-Git-Tag: accepted/tizen/unified/20200914.131341~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e185f4b1082a4b9fb123ad787fa1501b47c37566;p=platform%2Fcore%2Fgraphics%2Ftizenvg.git SvgLoader: Modify calculation formula of linear gradient matrix When there is a matrix of linear gradient, the applied formula is this. = T(x - cx, y - cy) x g->transform x T(cx, cy) This patch has modified this formula to work properly. Change-Id: I861b796f5c0b375a318e444446eff82a0e922e8a --- diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index 2e8b174..0f1f80b 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -69,24 +69,14 @@ unique_ptr _applyLinearGradientProperty(SvgStyleGradient* g, Sha float cy = ((float) rh) * 0.5 + ry; float cx = ((float) rw) * 0.5 + rx; - //Calc start point //= T(x - cx, y - cy) x g->transform x T(cx, cy) - g->linear->x1 = cx * (g->transform->e11 + g->transform->e31 * (g->linear->x1 - cx)) + - cx * (g->transform->e12 + g->transform->e32 * (g->linear->x1 - cx)) + - cx * (g->transform->e13 + g->transform->e33 * (g->linear->x1 - cx)); - - g->linear->y1 = cy * (g->transform->e21 + g->transform->e31 * (g->linear->y1 - cy)) + - cy * (g->transform->e22 + g->transform->e32 * (g->linear->y1 - cy)) + - cy * (g->transform->e23 + g->transform->e33 * (g->linear->y1 - cy)); + //Calc start point + g->linear->x1 = (g->transform->e11 * cx) + (g->transform->e12 * cy) + g->linear->x1 + g->transform->e13 - cx; + g->linear->y1 = (g->transform->e21 * cx) + (g->transform->e22 * cy) + g->linear->y1 + g->transform->e23 - cy; //Calc end point - g->linear->x2 = cx * (g->transform->e11 + g->transform->e31 * (g->linear->x2 - cx)) + - cx * (g->transform->e12 + g->transform->e32 * (g->linear->x2 - cx)) + - cx * (g->transform->e13 + g->transform->e33 * (g->linear->x2 - cx)); - - g->linear->y2 = cy * (g->transform->e21 + g->transform->e31 * (g->linear->y2 - cy)) + - cy * (g->transform->e22 + g->transform->e32 * (g->linear->y2 - cy)) + - cy * (g->transform->e23 + g->transform->e33 * (g->linear->y2 - cy)); + g->linear->x2 = (g->transform->e11 * cx) + (g->transform->e12 * cy) + g->linear->x2 + g->transform->e13 - cx; + g->linear->y2 = (g->transform->e21 * cx) + (g->transform->e22 * cy) + g->linear->y2 + g->transform->e23 - cy; } fillGrad->linear(g->linear->x1, g->linear->y1, g->linear->x2, g->linear->y2);