• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 function tostr(t)
2     local str = ""
3     for k, v in next, t do
4         if #str > 0 then
5             str = str .. ", "
6         end
7         if type(k) == "number" then
8             str = str .. "[" .. k .. "] = "
9         else
10             str = str .. tostring(k) .. " = "
11         end
12         if type(v) == "table" then
13             str = str .. "{ " .. tostr(v) .. " }"
14         else
15             str = str .. tostring(v)
16         end
17     end
18     return str
19 end
20 
21 local total_found = {}    -- accumulate() stores its data in here
22 local total_total = {}
23 local canvas        -- holds the current canvas (from startcanvas())
24 
25 --[[
26     startcanvas() is called at the start of each picture file, passing the
27     canvas that we will be drawing into, and the name of the file.
28 
29     Following this call, there will be some number of calls to accumulate(t)
30     where t is a table of parameters that were passed to that draw-op.
31 
32         t.verb is a string holding the name of the draw-op (e.g. "drawRect")
33 
34     when a given picture is done, we call endcanvas(canvas, fileName)
35 ]]
36 function sk_scrape_startcanvas(c, fileName)
37     canvas = c
38 end
39 
40 --[[
41     Called when the current canvas is done drawing.
42 ]]
43 function sk_scrape_endcanvas(c, fileName)
44     canvas = nil
45 end
46 
47 function increment(table, key)
48     table[key] = (table[key] or 0) + 1
49 end
50 
51 
52 local drawPointsTable = {}
53 local drawPointsTable_direction = {}
54 
55 function sk_scrape_accumulate(t)
56     increment(total_total, t.verb)
57 
58     local p = t.paint
59     if p then
60         local pe = p:getPathEffect();
61         if pe then
62             increment(total_found, t.verb)
63         end
64     end
65 
66     if "drawPoints" == t.verb then
67         local points = t.points
68         increment(drawPointsTable, #points)
69         if 2 == #points then
70             if points[1].y == points[2].y then
71                 increment(drawPointsTable_direction, "hori")
72             elseif points[1].x == points[2].x then
73                 increment(drawPointsTable_direction, "vert")
74             else
75                 increment(drawPointsTable_direction, "other")
76             end
77         end
78     end
79 end
80 
81 --[[
82     lua_pictures will call this function after all of the pictures have been
83     "accumulated".
84 ]]
85 function sk_scrape_summarize()
86     for k, v in next, total_found do
87         io.write(k, " = ", v, "/", total_total[k], "\n")
88     end
89     print("histogram of point-counts for all drawPoints calls")
90     print(tostr(drawPointsTable))
91     print(tostr(drawPointsTable_direction))
92 end
93 
94