Circular shadow fixes for Flutter.
* Fix spot shadow placement for SkSpotShadowMaskFilter.
* Make sure we don't try to render an oval as a plain RRect
due to floating point error.
* Use fast path for uncached circles.
* Make sure ShadowMaskFilters can handle near-circles.
Change-Id: Ia9967a00a6e1c980a1c0a7ba8248f09fde61a3b7
Reviewed-on: https://skia-review.googlesource.com/13969
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp
index 0c0baab..55acd57 100644
--- a/samplecode/SampleAndroidShadows.cpp
+++ b/samplecode/SampleAndroidShadows.cpp
@@ -473,6 +473,7 @@
paint.setAntiAlias(true);
SkPoint3 lightPos = fLightPos;
+ lightPos.fX = canvas->getBaseLayerSize().fWidth * 0.5f;
paint.setColor(SK_ColorWHITE);
canvas->translate(200, 90);
@@ -496,7 +497,7 @@
canvas->translate(-250, 110);
lightPos.fX -= 250;
lightPos.fY += 110;
- zValue = SkTMax(1.0f, 8 + fZDelta);
+ zValue = SkTMax(1.0f, 12 + fZDelta);
zFunc = [zValue](SkScalar, SkScalar) { return zValue; };
this->drawShadowedPath(canvas, fCirclePath, zFunc, paint, kAmbientAlpha,
lightPos, kLightWidth, 0.5f);