1b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal canvas        -- holds the current canvas (from startcanvas())
2b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
3b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org--[[
4b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    startcanvas() is called at the start of each picture file, passing the
5b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    canvas that we will be drawing into, and the name of the file.
6b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    
7b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    Following this call, there will be some number of calls to accumulate(t)
8b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    where t is a table of parameters that were passed to that draw-op.
9b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    
10b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        t.verb is a string holding the name of the draw-op (e.g. "drawRect")
11b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    
12b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    when a given picture is done, we call endcanvas(canvas, fileName)
13b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org]]
14b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction sk_scrape_startcanvas(c, fileName)
15b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    canvas = c
16b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
17b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
18b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org--[[
19b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    Called when the current canvas is done drawing.
20b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org]]
21b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction sk_scrape_endcanvas(c, fileName)
22b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    canvas = nil
23b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
24b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
25b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org--[[
26b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    Use to initialize all keys passed in keyTable to zero in table.
27b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    Useful so that keys that are never get incremented still output zero at end
28b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org]]
29b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction resetTableKeys(table, keyTable)
30b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    for k, v in next, keyTable do
31b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        table[v] = 0
32b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    end
33b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
34b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
35b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction increment(table, key)
36b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    table[key] = (table[key] or 0) + 1
37b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
38b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
39b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dashCount = 0
40b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
41b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal total_found = {}
42b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal drawPoints_count = {}
43b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal drawPoints_direction = {}
44b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgresetTableKeys(drawPoints_direction, {"hori", "vert", "other"})
45b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dashInterval_count = {}
46b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dashInterval_pattern = {}
47b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgresetTableKeys(dashInterval_pattern, {"one_one", "zero_on", "other"})
48b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dash_phase = {}
49b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgresetTableKeys(dash_phase, {"zero", "other"})
50b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dash_cap = {}
51b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgresetTableKeys(dash_cap, {"butt", "round", "square"})
52b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
53b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orglocal dashTable = {}
54b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.total_found = total_found
55b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.drawPoints_count = drawPoints_count
56b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.drawPoints_direction = drawPoints_direction
57b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.dashInterval_count = dashInterval_count
58b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.dashInterval_pattern = dashInterval_pattern
59b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.dash_phase = dash_phase
60b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgdashTable.dash_cap = dash_cap
61b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
62b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction sk_scrape_accumulate(t)
63b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    local p = t.paint
64b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    if p then
65b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        local pe = p:getPathEffect()
66b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        if pe then
67b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org            local de = pe:asADash()
68b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org            if de then
69b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                dashCount = dashCount + 1
70b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                increment(total_found, t.verb);
71b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                increment(dashInterval_count, #de.intervals)
72b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                if 2 == #de.intervals then
73b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org		    if 1 == de.intervals[1] and 1 == de.intervals[2] then
74b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        increment(dashInterval_pattern, "one_one")
75b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    elseif 0 == de.intervals[1] then
76b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        increment(dashInterval_pattern, "zero_on")
77b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    else
78b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        increment(dashInterval_pattern, "other")
79b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    end
80b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                end
81b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
82b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                if 0 == de.phase then
83b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(dash_phase, "zero")
84b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                else
85b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(dash_phase, "other")
86b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                end
87b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
88b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                local cap = p:getStrokeCap()
89b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                if 0 == cap then
90b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(dash_cap, "butt")
91b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                elseif 1 == cap then
92b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(dash_cap, "round")
93b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                else
94b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(dash_cap, "square")
95b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                end
96b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
97b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                if "drawPoints" == t.verb then
98b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    local points = t.points
99b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    increment(drawPoints_count, #points)
100b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    if 2 == #points then
101b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        if points[1].y == points[2].y then
102b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                            increment(drawPoints_direction, "hori")
103b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        elseif points[1].x == points[2].x then
104b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                            increment(drawPoints_direction, "vert")
105b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        else
106b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                            increment(drawPoints_direction, "other")
107b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                        end
108b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    end
109b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                end
110b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
111b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                --[[
112b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                    eventually would like to print out info on drawPath verbs with dashed effect
113b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                ]]
114b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                if "drawPath" == t.verb then
115b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org                end
116b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
117b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org            end
118b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        end
119b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    end
120b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
121b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
122b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org--[[
123b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    lua_pictures will call this function after all of the pictures have been
124b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    "accumulated".
125b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org]]
126b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgfunction sk_scrape_summarize()
127b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org-- use for non telemetry
128b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org--[[
129b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    io.write("Total dashed effects is: ", dashCount, "\n");
130b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    for k1, v1 in next, dashTable do
131b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        io.write("\nTable: ", k1, "\n") 
132b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        for k, v in next, v1 do
133b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org            io.write("\"", k, "\": ", v, "\n")
134b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        end
135b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    end
136b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org]]
137b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
138b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org-- use for telemetry
139b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    io.write("\ndashCount = dashCount + ", tostring(dashCount), "\n")
140b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    for k1, v1 in next, dashTable do
141b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        for k, v in next, v1 do
142b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org            io.write("\nincrement(dashTable, \"", k1, "\", \"", k, "\", ", v, ")\n")
143b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org        end
144b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org    end
145b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.orgend
146b3b0cfc4d4c72e0b5f0ab2e53c1e2213e0b4ce90commit-bot@chromium.org
147