svg_loader SceneBuilder: Remove incorrect calculation for radial gradient
authorJunsuChoi <jsuya.choi@samsung.com>
Mon, 7 Jun 2021 03:09:58 +0000 (12:09 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Tue, 8 Jun 2021 00:44:03 +0000 (09:44 +0900)
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

index bf75da8..1459811 100644 (file)
@@ -93,7 +93,6 @@ static unique_ptr<RadialGradient> _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<RadialGradient> _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) {}