• 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 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
111