aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/lua
diff options
context:
space:
mode:
authorGravatar hstern <hstern@google.com>2016-08-02 09:17:59 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-02 09:17:59 -0700
commit0b401ce663ef80222e0eb3a54bdd4c42af8e48e1 (patch)
tree47ddeb87c605f20d65dbc0f7dbbda85e1a11a88a /tools/lua
parent86baf3d8de02a2118ac6e603b1152c3bc5d8b2b3 (diff)
Add code to lua paths to get the fill path and get lists of verbs and
Diffstat (limited to 'tools/lua')
-rw-r--r--tools/lua/count_dashes.lua60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/lua/count_dashes.lua b/tools/lua/count_dashes.lua
new file mode 100644
index 0000000000..20502a9f01
--- /dev/null
+++ b/tools/lua/count_dashes.lua
@@ -0,0 +1,60 @@
+--
+-- Copyright 2016 Google Inc.
+--
+-- Use of this source code is governed by a BSD-style license that can be
+-- found in the LICENSE file.
+--
+
+-- Dashed path scraping script.
+-- This script is designed to count the total number of dashes in a dashed path
+-- by computing the fill path and then counting how many individual segments are
+-- inside the resulting fill path.
+
+dashes = 0
+
+pathPieces = {}
+
+function sk_scrape_startcanvas(c, fileName)
+end
+
+function sk_scrape_endcanvas(c, fileName)
+end
+
+function sk_scrape_accumulate(t)
+ local paint = t.paint
+ if paint then
+ local pe = paint:getPathEffect()
+ if pe then
+ if t.verb == "drawPath" and pe:asADash() then
+ dashes = dashes + 1
+ pathPieces[dashes] = 0
+
+ local path = t.path
+ local fillpath = paint:getFillPath(path)
+ local verbs = fillpath:getVerbs()
+ for _, verb in ipairs(verbs) do
+ if verb == "move" then
+ pathPieces[dashes] = pathPieces[dashes] + 1
+ end
+ end
+ end
+ end
+ end
+end
+
+-- We mulitply by two because for each segment of the dash, we do two measurements:
+-- One for the beginning and one for the end of each dash.
+function sk_scrape_summarize()
+ local pieces5 = 0;
+ local pieces10 = 0;
+ for _, p in ipairs(pathPieces) do
+ local pieces = 2*p
+ if pieces < 5 then
+ pieces5 = pieces5 + 1
+ end
+ if pieces > 5 and pieces < 10 then
+ pieces10 = pieces10 + 1
+ end
+ end
+ io.write(string.format("%d %d %d\n", 2*dashes, pieces5, pieces10))
+end