Make some GMs animate
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1870133003

Review URL: https://codereview.chromium.org/1870133003
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index e0a317d..08d09c2 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -6,6 +6,7 @@
  */
 
 #include "gm.h"
+#include "SkAnimTimer.h"
 #include "SkLightingImageFilter.h"
 #include "SkOffsetImageFilter.h"
 #include "SkPoint3.h"
@@ -17,7 +18,8 @@
 
 class ImageLightingGM : public GM {
 public:
-    ImageLightingGM() {
+    ImageLightingGM()
+        : fAzimuth(SkIntToScalar(kStartAzimuth)) {
         this->setBGColor(0xFF000000);
     }
 
@@ -57,19 +59,25 @@
             canvas->restore();
           }
         }
-        SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10));
-        SkScalar azimuthRad = SkDegreesToRadians(SkIntToScalar(225));
+        SkScalar cosAzimuth;
+        SkScalar sinAzimuth = SkScalarSinCos(SkDegreesToRadians(fAzimuth), &cosAzimuth);
+
+        SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40), 0);
+        SkPoint3 spotLocation = SkPoint3::Make(spotTarget.fX + 70.7214f * cosAzimuth,
+                                               spotTarget.fY + 70.7214f * sinAzimuth,
+                                               spotTarget.fZ + SkIntToScalar(20));
+        SkScalar spotExponent = SK_Scalar1;
+
+        SkPoint3 pointLocation = SkPoint3::Make(spotTarget.fX + 50 * cosAzimuth,
+                                                spotTarget.fY + 50 * sinAzimuth,
+                                                SkIntToScalar(10));
         SkScalar elevationRad = SkDegreesToRadians(SkIntToScalar(5));
-        SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(SkScalarCos(azimuthRad),
+
+        SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(cosAzimuth,
                                                                SkScalarCos(elevationRad)),
-                                                   SkScalarMul(SkScalarSin(azimuthRad),
+                                                   SkScalarMul(sinAzimuth,
                                                                SkScalarCos(elevationRad)),
                                                    SkScalarSin(elevationRad));
-        SkPoint3 spotLocation = SkPoint3::Make(SkIntToScalar(-10),
-                                               SkIntToScalar(-10),
-                                               SkIntToScalar(20));
-        SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40), 0);
-        SkScalar spotExponent = SK_Scalar1;
         SkScalar cutoffAngle = SkIntToScalar(15);
         SkScalar kd = SkIntToScalar(2);
         SkScalar ks = SkIntToScalar(1);
@@ -149,8 +157,18 @@
         }
     }
 
+    bool onAnimate(const SkAnimTimer& timer) override {
+        static const SkScalar kDesiredDurationSecs = 15.0f;
+
+        fAzimuth = kStartAzimuth + timer.scaled(360.0f/kDesiredDurationSecs, 360.0f);
+        return true;
+    }
+
 private:
+    static const int kStartAzimuth = 225;
+
     SkBitmap fBitmap;
+    SkScalar fAzimuth;
 
     typedef GM INHERITED;
 };