aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleAndroidShadows.cpp
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2017-05-08 14:19:30 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-08 18:42:48 +0000
commite308a122ef996a64a21a6339e3b50b9edfdf654f (patch)
treecdc38ee996e86789f198f93d4a86c240f03d2317 /samplecode/SampleAndroidShadows.cpp
parent6f24180a99bc486cf4cee5da1a45225e7ff263d7 (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/SampleAndroidShadows.cpp')
-rw-r--r--samplecode/SampleAndroidShadows.cpp61
1 files changed, 25 insertions, 36 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);
}