diff options
author | fmenozzi <fmenozzi@google.com> | 2016-07-12 09:17:39 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-12 09:17:39 -0700 |
commit | 7f2c85e66bc45ef5fc204e301ed726491160a615 (patch) | |
tree | a4d7ac4a666c6ca51960189f452306710b285d84 /tools/lua | |
parent | e7d15fe870e8d6b0d4b072fc02a2a1c079743485 (diff) |
Add hard stop count
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2141733002
Review-Url: https://codereview.chromium.org/2141733002
Diffstat (limited to 'tools/lua')
-rw-r--r-- | tools/lua/gradients.lua | 32 | ||||
-rwxr-xr-x | tools/lua/gradients.py | 14 |
2 files changed, 33 insertions, 13 deletions
diff --git a/tools/lua/gradients.lua b/tools/lua/gradients.lua index 628632817f..fb43017b1d 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 @@ function sk_scrape_accumulate(t) 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 @@ function sk_scrape_summarize() 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 a2cf785cbb..f3dd13619f 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 @@ def create_database(inpath, outpath): 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"); |