Add hard stop count

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2141733002

Review-Url: https://codereview.chromium.org/2141733002
diff --git a/tools/lua/gradients.lua b/tools/lua/gradients.lua
index 6286328..fb43017 100644
--- a/tools/lua/gradients.lua
+++ b/tools/lua/gradients.lua
@@ -1,6 +1,12 @@
 function sk_scrape_startcanvas(c, fileName) end
 function sk_scrape_endcanvas(c, fileName) end
 
+SkScalarNearlyZero = 1.0 / bit32.lshift(1.0, 12)
+
+function SkScalarNearlyEqual(a, b)
+    return math.abs(a,b) <= SkScalarNearlyZero
+end
+
 gradients = {}
 
 i = 1
@@ -13,11 +19,25 @@
             local g = s:asAGradient()
             if g then
                 gradients[i] = {}
-                gradients[i].colorCount        = g.colorCount
-                gradients[i].type              = g.type
-                gradients[i].tile              = g.tile
-                gradients[i].isEvenlySpaced    = g.isEvenlySpaced
-                gradients[i].containsHardStops = g.containsHardStops
+
+                gradients[i].colorCount = g.colorCount
+                gradients[i].type       = g.type
+                gradients[i].tile       = g.tile
+
+                numHardStops   = 0
+                isEvenlySpaced = true
+                for j = 2, g.colorCount, 1 do
+                    if not SkScalarNearlyEqual(g.positions[j], j/(g.colorCount-1)) then
+                        isEvenlySpaced = false
+                    end
+
+                    if SkScalarNearlyEqual(g.positions[j], g.positions[j-1]) then
+                        numHardStops = numHardStops + 1
+                    end
+                end
+
+                gradients[i].isEvenlySpaced = isEvenlySpaced
+                gradients[i].numHardStops   = numHardStops;
 
                 gradients[i].positions = {}
                 for j = 1, g.colorCount, 1 do
@@ -45,7 +65,7 @@
                                 v.type,
                                 v.tile,
                                 tonumber(v.isEvenlySpaced and 1 or 0),
-                                tonumber(v.containsHardStops and 1 or 0),
+                                v.numHardStops,
                                 pos))
     end
 end
diff --git a/tools/lua/gradients.py b/tools/lua/gradients.py
index a2cf785..f3dd136 100755
--- a/tools/lua/gradients.py
+++ b/tools/lua/gradients.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2015 Google Inc.
+# Copyright 2016 Google Inc.
 #
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
@@ -12,12 +12,12 @@
     with sqlite3.connect(outpath) as conn:
         c = conn.cursor();
         c.execute('''CREATE TABLE IF NOT EXISTS gradients (
-                        ColorCount   INTEGER,
-                        GradientType TEXT,
-                        TileMode     TEXT,
-                        EvenlySpaced INTEGER,
-                        HardStops    INTEGER,
-                        Positions    TEXT
+                        ColorCount    INTEGER,
+                        GradientType  TEXT,
+                        TileMode      TEXT,
+                        EvenlySpaced  INTEGER,
+                        HardStopCount INTEGER,
+                        Positions     TEXT
                      )''');
         c.execute("DELETE FROM gradients");