diff options
author | Jim Van Verth <jvanverth@google.com> | 2017-05-08 14:19:30 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-08 18:42:48 +0000 |
commit | e308a122ef996a64a21a6339e3b50b9edfdf654f (patch) | |
tree | cdc38ee996e86789f198f93d4a86c240f03d2317 /samplecode | |
parent | 6f24180a99bc486cf4cee5da1a45225e7ff263d7 (diff) |
Remove height functor for shadows and replace with plane equation params
Change-Id: I948eceb2c58dc50468993dba54c209f18e440e48
Reviewed-on: https://skia-review.googlesource.com/15873
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleAndroidShadows.cpp | 61 | ||||
-rwxr-xr-x | samplecode/SampleShadowUtils.cpp | 14 |
2 files changed, 31 insertions, 44 deletions
diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp index c8ce14c8d5..81dc0cc2b6 100644 --- a/samplecode/SampleAndroidShadows.cpp +++ b/samplecode/SampleAndroidShadows.cpp @@ -128,7 +128,7 @@ protected: } void drawShadowedPath(SkCanvas* canvas, const SkPath& path, - std::function<SkScalar(SkScalar, SkScalar)> zFunc, + const SkPoint3& zPlaneParams, const SkPaint& paint, SkScalar ambientAlpha, const SkPoint3& lightPos, SkScalar lightWidth, SkScalar spotAlpha) { if (fIgnoreShadowAlpha) { @@ -149,7 +149,7 @@ protected: // zValue, // lightPos, lightWidth, // ambientAlpha, spotAlpha, SK_ColorBLACK, flags); - SkShadowUtils::DrawUncachedShadow(canvas, path, zFunc, + SkShadowUtils::DrawUncachedShadow(canvas, path, zPlaneParams, lightPos, lightWidth, ambientAlpha, spotAlpha, SK_ColorBLACK, flags); @@ -175,48 +175,42 @@ protected: paint.setAntiAlias(true); SkPoint3 lightPos = fLightPos; + SkPoint3 zPlaneParams = SkPoint3::Make(0, 0, 0); paint.setColor(SK_ColorWHITE); canvas->translate(200, 90); - SkScalar zValue = SkTMax(1.0f, 2 + fZDelta); - std::function<SkScalar(SkScalar, SkScalar)> zFunc = - [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fRRPath, zFunc, paint, kAmbientAlpha, + zPlaneParams.fZ = SkTMax(1.0f, 2 + fZDelta); + this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); paint.setColor(SK_ColorRED); canvas->translate(250, 0); - zValue = SkTMax(1.0f, 8 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fRectPath, zFunc, paint, kAmbientAlpha, + zPlaneParams.fZ = SkTMax(1.0f, 8 + fZDelta); + this->drawShadowedPath(canvas, fRectPath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); paint.setColor(SK_ColorBLUE); canvas->translate(-250, 110); - zValue = SkTMax(1.0f, 12 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fCirclePath, zFunc, paint, kAmbientAlpha, + zPlaneParams.fZ = SkTMax(1.0f, 12 + fZDelta); + this->drawShadowedPath(canvas, fCirclePath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, 0.5f); paint.setColor(SK_ColorGREEN); canvas->translate(250, 0); - zValue = SkTMax(1.0f, 64 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fRRPath, zFunc, paint, kAmbientAlpha, + zPlaneParams.fZ = SkTMax(1.0f, 64 + fZDelta); + this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); paint.setColor(SK_ColorYELLOW); canvas->translate(-250, 110); - zValue = SkTMax(1.0f, 8 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fFunkyRRPath, zFunc, paint, kAmbientAlpha, + zPlaneParams.fZ = SkTMax(1.0f, 8 + fZDelta); + this->drawShadowedPath(canvas, fFunkyRRPath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); paint.setColor(SK_ColorCYAN); canvas->translate(250, 0); - zValue = SkTMax(1.0f, 16 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, fCubicPath, zFunc, paint, + zPlaneParams.fZ = SkTMax(1.0f, 16 + fZDelta); + this->drawShadowedPath(canvas, fCubicPath, zPlaneParams, paint, kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); // circular reveal @@ -227,9 +221,8 @@ protected: paint.setColor(SK_ColorMAGENTA); canvas->translate(-125, 60); - zValue = SkTMax(1.0f, 32 + fZDelta); - zFunc = [zValue](SkScalar, SkScalar) { return zValue; }; - this->drawShadowedPath(canvas, tmpPath, zFunc, paint, .1f, + zPlaneParams.fZ = SkTMax(1.0f, 32 + fZDelta); + this->drawShadowedPath(canvas, tmpPath, zPlaneParams, paint, .1f, lightPos, kLightWidth, .5f); // perspective paths @@ -245,13 +238,11 @@ protected: persp.preTranslate(-pivot.fX, -pivot.fY); persp.postTranslate(pivot.fX + translate.fX, pivot.fY + translate.fY); canvas->setMatrix(persp); - zValue = SkTMax(1.0f, 16 + fZDelta); SkScalar radians = SkDegreesToRadians(fAnimAngle); - zFunc = [zValue, pivot, radians](SkScalar x, SkScalar y) { - return SkScalarSin(-radians)*y + - zValue - SkScalarSin(-radians)*pivot.fY; - }; - this->drawShadowedPath(canvas, fWideRectPath, zFunc, paint, .1f, + zPlaneParams = SkPoint3::Make(0, + SkScalarSin(-radians), + SkTMax(1.0f, 16 + fZDelta) - SkScalarSin(-radians)*pivot.fY); + this->drawShadowedPath(canvas, fWideRectPath, zPlaneParams, paint, .1f, lightPos, kLightWidth, .5f); pivot = SkPoint::Make(fWideOvalPath.getBounds().width() / 2, @@ -263,12 +254,10 @@ protected: persp.preTranslate(-pivot.fX, -pivot.fY); persp.postTranslate(pivot.fX + translate.fX, pivot.fY + translate.fY); canvas->setMatrix(persp); - zValue = SkTMax(1.0f, 32 + fZDelta); - zFunc = [zValue, pivot, radians](SkScalar x, SkScalar y) { - return -SkScalarSin(radians)*x + - zValue + SkScalarSin(radians)*pivot.fX; - }; - this->drawShadowedPath(canvas, fWideOvalPath, zFunc, paint, .1f, + zPlaneParams = SkPoint3::Make(-SkScalarSin(radians), + 0, + SkTMax(1.0f, 32 + fZDelta) + SkScalarSin(radians)*pivot.fX); + this->drawShadowedPath(canvas, fWideOvalPath, zPlaneParams, paint, .1f, lightPos, kLightWidth, .5f); } diff --git a/samplecode/SampleShadowUtils.cpp b/samplecode/SampleShadowUtils.cpp index f5b6635886..6d047be93d 100755 --- a/samplecode/SampleShadowUtils.cpp +++ b/samplecode/SampleShadowUtils.cpp @@ -109,7 +109,7 @@ protected: } void drawShadowedPath(SkCanvas* canvas, const SkPath& path, - std::function<SkScalar(SkScalar, SkScalar)> zFunc, + const SkPoint3& zPlaneParams, const SkPaint& paint, SkScalar ambientAlpha, const SkPoint3& lightPos, SkScalar lightWidth, SkScalar spotAlpha, uint32_t flags) { @@ -130,10 +130,10 @@ protected: // zValue, // lightPos, lightWidth, // ambientAlpha, spotAlpha, SK_ColorBLACK, flags); - SkShadowUtils::DrawUncachedShadow(canvas, path, zFunc, + SkShadowUtils::DrawUncachedShadow(canvas, path, zPlaneParams, lightPos, lightWidth, ambientAlpha, 0, SK_ColorRED, flags); - SkShadowUtils::DrawUncachedShadow(canvas, path, zFunc, + SkShadowUtils::DrawUncachedShadow(canvas, path, zPlaneParams, lightPos, lightWidth, 0, spotAlpha, SK_ColorBLUE, flags); @@ -172,9 +172,7 @@ protected: SkPaint paint; paint.setColor(SK_ColorGREEN); paint.setAntiAlias(true); - SkScalar zValue = SkTMax(1.0f, kHeight + fZDelta); - std::function<SkScalar(SkScalar, SkScalar)> zFunc = - [zValue](SkScalar, SkScalar) { return zValue; }; + SkPoint3 zPlaneParams = SkPoint3::Make(0, 0, SkTMax(1.0f, kHeight + fZDelta)); for (auto& m : matrices) { for (auto flags : { kNone_ShadowFlag, kTransparentOccluder_ShadowFlag }) { for (const auto& path : fPaths) { @@ -192,8 +190,8 @@ protected: canvas->save(); canvas->concat(m); - drawShadowedPath(canvas, path, zFunc, paint, kAmbientAlpha, kLightPos, kLightR, - kSpotAlpha, flags); + drawShadowedPath(canvas, path, zPlaneParams, paint, kAmbientAlpha, kLightPos, + kLightR, kSpotAlpha, flags); canvas->restore(); canvas->translate(dx, 0); |