From b4f254e051b375c098c3f1c943b2b0886fec60e1 Mon Sep 17 00:00:00 2001 From: fmenozzi Date: Tue, 28 Jun 2016 14:03:03 -0700 Subject: Changes to Lua gradient scraping BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2103973002 Review-Url: https://codereview.chromium.org/2103973002 --- tools/lua/gradients.lua | 50 +++++++++++++++++++++++++++++++++---------------- tools/lua/gradients.py | 42 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 16 deletions(-) create mode 100755 tools/lua/gradients.py (limited to 'tools/lua') diff --git a/tools/lua/gradients.lua b/tools/lua/gradients.lua index b2d8cf7734..628632817f 100644 --- a/tools/lua/gradients.lua +++ b/tools/lua/gradients.lua @@ -1,10 +1,9 @@ - function sk_scrape_startcanvas(c, fileName) end - function sk_scrape_endcanvas(c, fileName) end -count3 = 0 -count3sym = 0 +gradients = {} + +i = 1 function sk_scrape_accumulate(t) local p = t.paint @@ -13,22 +12,41 @@ function sk_scrape_accumulate(t) if s then local g = s:asAGradient() if g then - --io.write(g.type, " gradient with ", g.colorCount, " colors\n") - - if g.colorCount == 3 then - count3 = count3 + 1 - - if (g.midPos >= 0.499 and g.midPos <= 0.501) then - count3sym = count3sym + 1 - end - end + 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].positions = {} + for j = 1, g.colorCount, 1 do + gradients[i].positions[j] = g.positions[j] + end + + i = i + 1 end end end end -function sk_scrape_summarize() - io.write("Number of 3 color gradients: ", count3, "\n"); - io.write("Number of 3 color symmetric gradients: ", count3sym, "\n"); +function sk_scrape_summarize() + for k, v in pairs(gradients) do + local pos = "" + for j = 1, v.colorCount , 1 do + pos = pos .. v.positions[j] + if j ~= v.colorCount then + pos = pos .. "," + end + end + + io.write(string.format("%d %s %s %d %d %s\n", + v.colorCount, + v.type, + v.tile, + tonumber(v.isEvenlySpaced and 1 or 0), + tonumber(v.containsHardStops and 1 or 0), + pos)) + end end diff --git a/tools/lua/gradients.py b/tools/lua/gradients.py new file mode 100755 index 0000000000..a2cf785cbb --- /dev/null +++ b/tools/lua/gradients.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# Copyright 2015 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import sqlite3 + +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 + )'''); + c.execute("DELETE FROM gradients"); + + with open(inpath, "r") as results: + gradients = [] + for line in [line.strip() for line in results]: + gradients.append(line.split()); + + c.executemany("INSERT INTO gradients VALUES (?, ?, ?, ?, ?, ?)", + gradients); + + conn.commit(); + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description = "Transform Lua script output to a SQL DB"); + parser.add_argument("inpath", help="Path to Lua script output file"); + parser.add_argument("outpath", help="Path to SQL DB"); + args = parser.parse_args(); + + create_database(args.inpath, args.outpath); -- cgit v1.2.3