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