blob: 553e9e38e415ed7a8771983e2e4dfe416011bb22 [file] [log] [blame]
reedf0ddf332014-09-15 12:44:14 -07001function 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 canvas -- holds the current canvas (from startcanvas())
22
23--[[
24 startcanvas() is called at the start of each picture file, passing the
25 canvas that we will be drawing into, and the name of the file.
26
27 Following this call, there will be some number of calls to accumulate(t)
28 where t is a table of parameters that were passed to that draw-op.
29
30 t.verb is a string holding the name of the draw-op (e.g. "drawRect")
31
32 when a given picture is done, we call endcanvas(canvas, fileName)
33]]
34function sk_scrape_startcanvas(c, fileName)
35 canvas = c
36end
37
38--[[
39 Called when the current canvas is done drawing.
40]]
41function sk_scrape_endcanvas(c, fileName)
42 canvas = nil
43end
44
45--[[
46 Called with the parameters to each canvas.draw call, where canvas is the
47 current canvas as set by startcanvas()
48]]
49
50local gCounts = {} -- [fontID_pointsize] = [] unique glyphs
51local gFirstGlyphs = {}
52local gTotalCount = 0
53
54function array_count(array)
55 local n = 0
56 for k in next, array do
57 n = n + 1
58 end
59 return n
60end
61
62function sk_scrape_accumulate(t)
63 verb = t.verb;
64 if verb == "drawPosText" or verb == "drawPosTextH" then
65 if t.glyphs then
66 local key = array_count(t.glyphs)
67 local n = gCounts[key]
68 if n then
69 gCounts[key] = n + 1
70 else
71 gCounts[key] = 1
72 end
73
74 if key == 1 then
75 local first = t.glyphs[1];
76 local n = gFirstGlyphs[first]
77 if n then
78 n = n + 1
79 else
80 n = 0
81 end
82 gFirstGlyphs[first] = n
83 end
84
85 gTotalCount = gTotalCount + 1
86 end
87 end
88end
89
90--[[
91 lua_pictures will call this function after all of the pictures have been
92 "accumulated".
93]]
94function sk_scrape_summarize()
95 for k, v in next, gCounts do
96 io.write("glyph_count ", k, ",frequency ", v * 100 / gTotalCount, "\n")
97 end
98
99--[[
100 io.write("\n\nFirst glyph spread\n\n")
101 for k, v in next, gFirstGlyphs do
102 io.write("glyph, ", k, ",count, ", v, "\n")
103 end
104]]
105end
106
107function test_summary()
108 io.write("just testing test_summary\n")
109end
110