ModifierKey unifies sk_app::Window::ModifierKey & Sample::Click::ModifierKey

Change-Id: Idb5dfe57a7f6e3d6078ab1e68d542b084114cfbe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225735
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/samplecode/PerlinPatch.cpp b/samplecode/PerlinPatch.cpp
index 2e404ad..49a55ea 100644
--- a/samplecode/PerlinPatch.cpp
+++ b/samplecode/PerlinPatch.cpp
@@ -10,6 +10,7 @@
 #include "include/effects/SkPerlinNoiseShader.h"
 #include "samplecode/Sample.h"
 #include "src/utils/SkPatchUtils.h"
+#include "tools/ModifierKey.h"
 #include "tools/timer/AnimTimer.h"
 
 static void draw_control_points(SkCanvas* canvas, const SkPoint cubics[12]) {
@@ -167,13 +168,11 @@
         return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
-        // holding down shift
-        if (1 == modi) {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
+        if (ModifierKey::kShift == modi) {
             return new PtClick(this, -1);
         }
-        // holding down ctrl
-        if (2 == modi) {
+        if (ModifierKey::kControl == modi) {
             return new PtClick(this, -2);
         }
         SkPoint clickPoint = {x, y};
diff --git a/samplecode/Sample.cpp b/samplecode/Sample.cpp
index 9ee3b84..67d9da0 100644
--- a/samplecode/Sample.cpp
+++ b/samplecode/Sample.cpp
@@ -68,7 +68,7 @@
 
 Sample::Click::~Click() {}
 
-Sample::Click* Sample::findClickHandler(SkScalar x, SkScalar y, unsigned modi) {
+Sample::Click* Sample::findClickHandler(SkScalar x, SkScalar y, ModifierKey modi) {
     if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
         return nullptr;
     }
@@ -76,7 +76,7 @@
     return this->onFindClickHandler(x, y, modi);
 }
 
-void Sample::DoClickDown(Click* click, int x, int y, unsigned modi) {
+void Sample::DoClickDown(Click* click, int x, int y, ModifierKey modi) {
     SkASSERT(click);
 
     Sample* target = click->fTarget.get();
@@ -95,7 +95,7 @@
     target->onClick(click);
 }
 
-void Sample::DoClickMoved(Click* click, int x, int y, unsigned modi) {
+void Sample::DoClickMoved(Click* click, int x, int y, ModifierKey modi) {
     SkASSERT(click);
 
     Sample* target = click->fTarget.get();
@@ -114,7 +114,7 @@
     target->onClick(click);
 }
 
-void Sample::DoClickUp(Click* click, int x, int y, unsigned modi) {
+void Sample::DoClickUp(Click* click, int x, int y, ModifierKey modi) {
     SkASSERT(click);
 
     Sample* target = click->fTarget.get();
@@ -137,7 +137,7 @@
 
 void Sample::onSizeChange() {}
 
-Sample::Click* Sample::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
+Sample::Click* Sample::onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) {
     return nullptr;
 }
 
diff --git a/samplecode/Sample.h b/samplecode/Sample.h
index 0d538d2..7b511c5 100644
--- a/samplecode/Sample.h
+++ b/samplecode/Sample.h
@@ -14,6 +14,7 @@
 #include "include/core/SkString.h"
 #include "include/private/SkMacros.h"
 #include "src/utils/SkMetaData.h"
+#include "tools/ModifierKey.h"
 #include "tools/Registry.h"
 
 class AnimTimer;
@@ -60,16 +61,10 @@
             kMoved_State,
             kUp_State
         };
-        enum ModifierKeys {
-            kShift_ModifierKey    = 1 << 0,
-            kControl_ModifierKey  = 1 << 1,
-            kOption_ModifierKey   = 1 << 2,   // same as ALT
-            kCommand_ModifierKey  = 1 << 3,
-        };
         SkPoint     fOrig, fPrev, fCurr;
         SkIPoint    fIOrig, fIPrev, fICurr;
         State       fState;
-        unsigned    fModifierKeys;
+        ModifierKey fModifierKeys = ModifierKey::kNone;
 
         SkMetaData  fMeta;
     private:
@@ -77,10 +72,10 @@
 
         friend class Sample;
     };
-    Click* findClickHandler(SkScalar x, SkScalar y, unsigned modifierKeys);
-    static void DoClickDown(Click*, int x, int y, unsigned modi);
-    static void DoClickMoved(Click*, int x, int y, unsigned modi);
-    static void DoClickUp(Click*, int x, int y, unsigned modi);
+    Click* findClickHandler(SkScalar x, SkScalar y, ModifierKey modifierKeys);
+    static void DoClickDown(Click*, int x, int y, ModifierKey modi);
+    static void DoClickMoved(Click*, int x, int y, ModifierKey modi);
+    static void DoClickUp(Click*, int x, int y, ModifierKey modi);
 
     void setBGColor(SkColor color) { fBGColor = color; }
     bool animate(const AnimTimer& timer) { return this->onAnimate(timer); }
@@ -92,7 +87,7 @@
     virtual void onSizeChange();
 
     /** Override this if you might handle the click */
-    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi);
+    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi);
 
     /** Override to track clicks. Return true as long as you want to track the pen/mouse. */
     virtual bool onClick(Click*);
diff --git a/samplecode/SampleAAGeometry.cpp b/samplecode/SampleAAGeometry.cpp
index 515f4f7..c3c0f8d 100644
--- a/samplecode/SampleAAGeometry.cpp
+++ b/samplecode/SampleAAGeometry.cpp
@@ -1611,7 +1611,7 @@
         return -1;
     }
 
-    virtual Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    virtual Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         SkPoint pt = {x, y};
         int ptHit = hittest_pt(pt);
         if (ptHit >= 0) {
diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp
index dd9d298..6908e98 100644
--- a/samplecode/SampleCCPRGeometry.cpp
+++ b/samplecode/SampleCCPRGeometry.cpp
@@ -48,7 +48,7 @@
     CCPRGeometryView() { this->updateGpuData(); }
     void onDrawContent(SkCanvas*) override;
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override;
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override;
     bool onClick(Sample::Click*) override;
     bool onChar(SkUnichar) override;
     SkString name() override { return SkString("CCPRGeometry"); }
@@ -422,7 +422,7 @@
     int fPtIdx;
 };
 
-Sample::Click* CCPRGeometryView::onFindClickHandler(SkScalar x, SkScalar y, unsigned) {
+Sample::Click* CCPRGeometryView::onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) {
     for (int i = 0; i < 4; ++i) {
         if (PrimitiveType::kCubics != fPrimitiveType && 2 == i) {
             continue;
diff --git a/samplecode/SampleDegenerateQuads.cpp b/samplecode/SampleDegenerateQuads.cpp
index 895a6d2..5303594 100644
--- a/samplecode/SampleDegenerateQuads.cpp
+++ b/samplecode/SampleDegenerateQuads.cpp
@@ -380,8 +380,7 @@
         }
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                      unsigned) override;
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override;
     bool onClick(Sample::Click*) override;
     bool onChar(SkUnichar) override;
     SkString name() override { return SkString("DegenerateQuad"); }
@@ -480,7 +479,7 @@
     }
 };
 
-Sample::Click* DegenerateQuadSample::onFindClickHandler(SkScalar x, SkScalar y, unsigned) {
+Sample::Click* DegenerateQuadSample::onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) {
     SkPoint inCTM = SkPoint::Make((x - kViewOffset) / kViewScale, (y - kViewOffset) / kViewScale);
     for (int i = 0; i < 4; ++i) {
         if ((fCorners[i] - inCTM).length() < 10.f / kViewScale) {
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index 0eaec1d..d661aaa 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -468,7 +468,7 @@
         }
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         SkPoint pt = { x, y };
         int index = -1;
         int count = fFB.getTriangle() ? 3 : 2;
diff --git a/samplecode/SampleHT.cpp b/samplecode/SampleHT.cpp
index e225193..7483b80 100644
--- a/samplecode/SampleHT.cpp
+++ b/samplecode/SampleHT.cpp
@@ -156,7 +156,7 @@
         return true;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         // search backwards to find the top-most
         for (int i = N - 1; i >= 0; --i) {
             if (fArray[i].fDrawable->hitTest(x, y)) {
diff --git a/samplecode/SampleHairline.cpp b/samplecode/SampleHairline.cpp
index af4244a..aafa564 100644
--- a/samplecode/SampleHairline.cpp
+++ b/samplecode/SampleHairline.cpp
@@ -217,7 +217,7 @@
         return true;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         fDoAA = !fDoAA;
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 03388e6..cb981f5 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -224,7 +224,7 @@
         return true;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         return new Click(this);
     }
 
diff --git a/samplecode/SampleLighting.cpp b/samplecode/SampleLighting.cpp
index 68bc53f..022e44d 100644
--- a/samplecode/SampleLighting.cpp
+++ b/samplecode/SampleLighting.cpp
@@ -65,7 +65,7 @@
         canvas->drawRect(fRect, paint);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleLua.cpp b/samplecode/SampleLua.cpp
index 469d0a6..9416248 100644
--- a/samplecode/SampleLua.cpp
+++ b/samplecode/SampleLua.cpp
@@ -109,7 +109,7 @@
     }
 
     virtual Sample::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+                                              ModifierKey modi) override {
         lua_State* L = this->ensureLua();
         lua_getglobal(L, gClickName);
         if (lua_isfunction(L, -1)) {
diff --git a/samplecode/SampleMixer.cpp b/samplecode/SampleMixer.cpp
index 34cc8d6..1def7db 100644
--- a/samplecode/SampleMixer.cpp
+++ b/samplecode/SampleMixer.cpp
@@ -71,7 +71,7 @@
         }
     }
 
-    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         return fRect.contains(SkScalarRoundToInt(x),
                               SkScalarRoundToInt(y)) ? new Click(this) : nullptr;
     }
@@ -154,7 +154,7 @@
         canvas->restore();
     }
 
-    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    virtual Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         fMode = (fMode == SkBlendMode::kSrcOver) ? SkBlendMode::kClear : SkBlendMode::kSrcOver;
         return fRect.contains(SkScalarRoundToInt(x),
                               SkScalarRoundToInt(y)) ? new Click(this) : nullptr;
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 71c88d9..a970400 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -297,7 +297,7 @@
         return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         x -= DX;
         y -= DY;
         for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); i++) {
@@ -396,7 +396,7 @@
  //       canvas->drawPath(fPath, fSkeletonP);
     }
 
-    Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         Click* click = new Click(this);
         fPath.reset();
         fPath.moveTo(x, y);
@@ -484,7 +484,7 @@
         this->dodraw(canvas, nullptr, 600, 0, &p);
     }
 
-    Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         Click* click = new Click(this);
         fPath.reset();
         fPath.moveTo(x, y);
diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp
index bdb51ab..de52fa8 100644
--- a/samplecode/SamplePath.cpp
+++ b/samplecode/SamplePath.cpp
@@ -189,7 +189,7 @@
         return true;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         fShowHairline = !fShowHairline;
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
@@ -289,7 +289,7 @@
         return false;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         const SkScalar tol = 4;
         const SkRect r = SkRect::MakeXYWH(x - tol, y - tol, tol * 2, tol * 2);
         for (int i = 0; i < N; ++i) {
@@ -417,7 +417,7 @@
         return false;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         const SkScalar tol = 4;
         const SkRect r = SkRect::MakeXYWH(x - tol, y - tol, tol * 2, tol * 2);
         for (int i = 0; i < N; ++i) {
@@ -534,7 +534,7 @@
         return false;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         const SkScalar tol = 8;
         const SkRect r = SkRect::MakeXYWH(x - tol, y - tol, tol * 2, tol * 2);
         for (int i = 0; i < N; ++i) {
@@ -730,7 +730,7 @@
         return false;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         const SkScalar tol = 8;
         const SkRect r = SkRect::MakeXYWH(x - tol, y - tol, tol * 2, tol * 2);
         for (int i = 0; i < N; ++i) {
diff --git a/samplecode/SamplePathClip.cpp b/samplecode/SamplePathClip.cpp
index f5ef4c5..5760d68 100644
--- a/samplecode/SamplePathClip.cpp
+++ b/samplecode/SamplePathClip.cpp
@@ -52,7 +52,7 @@
         canvas->drawOval(oval, p);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         return new Click(this);
     }
 
@@ -278,7 +278,7 @@
         return dx*dx + dy*dy <= rad*rad;
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         for (int i = 0; i < N; ++i) {
             if (hit_test(fPoly[i], x, y)) {
                 return new VertClick(this, &fPoly[i]);
diff --git a/samplecode/SampleQuadStroker.cpp b/samplecode/SampleQuadStroker.cpp
index 4de89e2..13cd306 100644
--- a/samplecode/SampleQuadStroker.cpp
+++ b/samplecode/SampleQuadStroker.cpp
@@ -722,7 +722,7 @@
     };
 
     virtual Sample::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+                                              ModifierKey modi) override {
         for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); ++i) {
             if (hittest(fPts[i], x, y)) {
                 return new MyClick(this, (int)i);
diff --git a/samplecode/SampleRegion.cpp b/samplecode/SampleRegion.cpp
index a160549..cff677f 100644
--- a/samplecode/SampleRegion.cpp
+++ b/samplecode/SampleRegion.cpp
@@ -326,7 +326,7 @@
     }
 
     virtual Sample::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+                                              ModifierKey modi) override {
         return fRect.contains(SkScalarRoundToInt(x),
                               SkScalarRoundToInt(y)) ? new Click(this) : nullptr;
     }
diff --git a/samplecode/SampleSG.cpp b/samplecode/SampleSG.cpp
index fc29c39..e129de1 100644
--- a/samplecode/SampleSG.cpp
+++ b/samplecode/SampleSG.cpp
@@ -72,7 +72,7 @@
         fScene->render(canvas);
     }
 
-    Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
+    Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey modi) override {
         if (auto node = fScene->nodeAt({x, y})) {
             Click* click = new Click(this);
             click->fMeta.setPtr("node", (void*)node);
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 346ba60..ed8bf7a 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -443,7 +443,7 @@
         gProc[fIndex](canvas);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         this->init();
         fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc);
         return nullptr;
diff --git a/samplecode/SampleStringArt.cpp b/samplecode/SampleStringArt.cpp
index 50d2136..2eaf4e3 100644
--- a/samplecode/SampleStringArt.cpp
+++ b/samplecode/SampleStringArt.cpp
@@ -50,7 +50,7 @@
         canvas->drawPath(path, paint);
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         fAngle = x/width();
         return nullptr;
     }
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 911418b..1db11c1 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -99,7 +99,7 @@
         }
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         return new Click(this);
     }
 
diff --git a/samplecode/SampleXfer.cpp b/samplecode/SampleXfer.cpp
index ccf9f87..6e607f6 100644
--- a/samplecode/SampleXfer.cpp
+++ b/samplecode/SampleXfer.cpp
@@ -161,7 +161,7 @@
         canvas->restore();
     }
 
-    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+    Sample::Click* onFindClickHandler(SkScalar x, SkScalar y, ModifierKey) override {
         // Check mode buttons first
         for (int i = 0; i < N_Modes; ++i) {
             if (fModeButtons[i].hitTest(x, y)) {