Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / tools / lua / glyph-counts.lua
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 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 ]]
34 function sk_scrape_startcanvas(c, fileName)
35     canvas = c
36 end
37
38 --[[
39     Called when the current canvas is done drawing.
40 ]]
41 function sk_scrape_endcanvas(c, fileName)
42     canvas = nil
43 end
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
50 local gCounts = {}  -- [fontID_pointsize] = [] unique glyphs
51 local gFirstGlyphs = {}
52 local gTotalCount = 0
53
54 function array_count(array)
55     local n = 0
56     for k in next, array do
57         n = n + 1
58     end
59     return n
60 end
61
62 function 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
88 end
89
90 --[[
91     lua_pictures will call this function after all of the pictures have been
92     "accumulated".
93 ]]
94 function 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 ]]
105 end
106
107 function test_summary()
108     io.write("just testing test_summary\n")
109 end
110