From 744cbb388870bc1ae0f6b3ac0fbeaa136f55917b Mon Sep 17 00:00:00 2001 From: Jim Van Verth Date: Tue, 19 Dec 2017 13:02:38 -0500 Subject: Fix alpha contribution to tonal color. Also adds a tonal color GM, a grayscale mode to shadowutils GM, and animated alpha to SampleAndroidShadows. Bug: skia: Change-Id: I1dcb5cab7e53ffa7a3bf1a07b6ebfed38df1a9ed Reviewed-on: https://skia-review.googlesource.com/85002 Reviewed-by: Brian Osman Commit-Queue: Jim Van Verth --- samplecode/SampleAndroidShadows.cpp | 41 ++++++++++++++++++++++++------------- samplecode/SampleShadowUtils.cpp | 1 + 2 files changed, 28 insertions(+), 14 deletions(-) (limited to 'samplecode') diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp index 3db994adda..2621cec073 100644 --- a/samplecode/SampleAndroidShadows.cpp +++ b/samplecode/SampleAndroidShadows.cpp @@ -35,23 +35,27 @@ class ShadowsView : public SampleView { SkScalar fZDelta; SkScalar fAnimTranslate; SkScalar fAnimAngle; + SkScalar fAnimAlpha; bool fShowAmbient; bool fShowSpot; bool fUseAlt; bool fShowObject; bool fIgnoreShadowAlpha; + bool fDoAlphaAnimation; public: ShadowsView() : fZDelta(0) , fAnimTranslate(0) , fAnimAngle(0) + , fAnimAlpha(1) , fShowAmbient(true) , fShowSpot(true) , fUseAlt(false) , fShowObject(true) - , fIgnoreShadowAlpha(false) {} + , fIgnoreShadowAlpha(false) + , fDoAlphaAnimation(false) {} protected: void onOnceBeforeDraw() override { @@ -99,6 +103,13 @@ protected: fShowObject = !fShowObject; handled = true; break; + case 'N': + fDoAlphaAnimation = !fDoAlphaAnimation; + if (!fDoAlphaAnimation) { + fAnimAlpha = 1; + } + handled = true; + break; case '>': fZDelta += 0.5f; handled = true; @@ -175,38 +186,38 @@ protected: paint.setColor(SK_ColorWHITE); canvas->translate(200, 90); zPlaneParams.fZ = SkTMax(1.0f, 2 + fZDelta); - this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, kAmbientAlpha, - lightPos, kLightWidth, kSpotAlpha); + this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*kSpotAlpha); paint.setColor(SK_ColorRED); canvas->translate(250, 0); zPlaneParams.fZ = SkTMax(1.0f, 8 + fZDelta); - this->drawShadowedPath(canvas, fRectPath, zPlaneParams, paint, kAmbientAlpha, - lightPos, kLightWidth, kSpotAlpha); + this->drawShadowedPath(canvas, fRectPath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*kSpotAlpha); paint.setColor(SK_ColorBLUE); canvas->translate(-250, 110); zPlaneParams.fZ = SkTMax(1.0f, 12 + fZDelta); - this->drawShadowedPath(canvas, fCirclePath, zPlaneParams, paint, kAmbientAlpha, - lightPos, kLightWidth, 0.5f); + this->drawShadowedPath(canvas, fCirclePath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*0.5f); paint.setColor(SK_ColorGREEN); canvas->translate(250, 0); zPlaneParams.fZ = SkTMax(1.0f, 64 + fZDelta); - this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, kAmbientAlpha, - lightPos, kLightWidth, kSpotAlpha); + this->drawShadowedPath(canvas, fRRPath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*kSpotAlpha); paint.setColor(SK_ColorYELLOW); canvas->translate(-250, 110); zPlaneParams.fZ = SkTMax(1.0f, 8 + fZDelta); - this->drawShadowedPath(canvas, fFunkyRRPath, zPlaneParams, paint, kAmbientAlpha, - lightPos, kLightWidth, kSpotAlpha); + this->drawShadowedPath(canvas, fFunkyRRPath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*kSpotAlpha); paint.setColor(SK_ColorCYAN); canvas->translate(250, 0); zPlaneParams.fZ = SkTMax(1.0f, 16 + fZDelta); - this->drawShadowedPath(canvas, fCubicPath, zPlaneParams, paint, - kAmbientAlpha, lightPos, kLightWidth, kSpotAlpha); + this->drawShadowedPath(canvas, fCubicPath, zPlaneParams, paint, fAnimAlpha*kAmbientAlpha, + lightPos, kLightWidth, fAnimAlpha*kSpotAlpha); // circular reveal SkPath tmpPath; @@ -259,7 +270,9 @@ protected: bool onAnimate(const SkAnimTimer& timer) override { fAnimTranslate = timer.pingPong(30, 0, 200, -200); fAnimAngle = timer.pingPong(15, 0, 0, 20); - + if (fDoAlphaAnimation) { + fAnimAlpha = timer.pingPong(5, 0, 1, 0); + } return true; } diff --git a/samplecode/SampleShadowUtils.cpp b/samplecode/SampleShadowUtils.cpp index 7e6079156d..7d30a10d0b 100755 --- a/samplecode/SampleShadowUtils.cpp +++ b/samplecode/SampleShadowUtils.cpp @@ -121,6 +121,7 @@ protected: if (!fShowSpot) { spotAlpha = 0; } + flags |= SkShadowFlags::kDisableTonalColor_ShadowFlag; if (fUseAlt) { flags |= SkShadowFlags::kGeometricOnly_ShadowFlag; } -- cgit v1.2.3