From 3c19f2aaf5363e0b8706554555b8b1084edd7329 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Mon, 7 Jun 2021 12:09:58 +0900 Subject: [PATCH] svg_loader SceneBuilder: Remove incorrect calculation for radial gradient We are doing enough calculations in the parser if the unit is user space. This causes the cx,cy coordinates of radial gradient to be calculated incorrectly. So remove it. --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 27 -------------------------- 1 file changed, 27 deletions(-) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index bf75da87..1459811a 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -93,7 +93,6 @@ static unique_ptr _applyRadialGradientProperty(SvgStyleGradient* { Fill::ColorStop *stops; int stopCount = 0; - float gx, gy, gw, gh; int radius; float fillOpacity = 255.0f; @@ -115,32 +114,6 @@ static unique_ptr _applyRadialGradientProperty(SvgStyleGradient* g->radial->fy = g->radial->fy * rh + ry; } - //In case of objectBoundingBox it need proper scaling - if (!g->userSpace) { - float scaleX = 1.0, scaleReversedX = 1.0; - float scaleY = 1.0, scaleReversedY = 1.0; - - //Check the smallest size, find the scale value - if (rh > rw) { - scaleY = ((float)rw) / rh; - scaleReversedY = ((float)rh) / rw; - } else { - scaleX = ((float)rh) / rw; - scaleReversedX = ((float)rw) / rh; - } - - vg->bounds(&gx, &gy, &gw, &gh); - - float cy = ((float)gh) * 0.5 + gy; - float cy_scaled = (((float)gh) * 0.5) * scaleReversedY; - float cx = ((float)gw) * 0.5 + gx; - float cx_scaled = (((float)gw) * 0.5) * scaleReversedX; - - //= T(gx, gy) x S(scaleX, scaleY) x T(cx_scaled - cx, cy_scaled - cy) x (radial->x, radial->y) - g->radial->cx = g->radial->cx * scaleX + scaleX * (cx_scaled - cx) + gx; - g->radial->cy = g->radial->cy * scaleY + scaleY * (cy_scaled - cy) + gy; - } - //TODO: Radial gradient transformation is not yet supported. //if (g->transform) {}