• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1function 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
19end
20
21local total_found = {}    -- accumulate() stores its data in here
22local total_total = {}
23local 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]]
36function sk_scrape_startcanvas(c, fileName)
37    canvas = c
38end
39
40--[[
41    Called when the current canvas is done drawing.
42]]
43function sk_scrape_endcanvas(c, fileName)
44    canvas = nil
45end
46
47function increment(table, key)
48    table[key] = (table[key] or 0) + 1
49end
50
51
52local drawPointsTable = {}
53local drawPointsTable_direction = {}
54
55function 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
79end
80
81--[[
82    lua_pictures will call this function after all of the pictures have been
83    "accumulated".
84]]
85function 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))
92end
93
94