commit-bot@chromium.org | c530208 | 2014-02-26 21:38:47 +0000 | [diff] [blame] | 1 | |
| 2 | function sk_scrape_startcanvas(c, fileName) end |
| 3 | |
| 4 | function sk_scrape_endcanvas(c, fileName) end |
| 5 | |
| 6 | function classify_rrect(rrect) |
| 7 | if (rrect:type() == "simple") then |
| 8 | local x, y = rrect:radii(0) |
| 9 | if (x == y) then |
| 10 | return "simple_circle" |
| 11 | else |
| 12 | return "simple_oval" |
| 13 | end |
| 14 | elseif (rrect:type() == "complex") then |
| 15 | local numNotSquare = 0 |
| 16 | local rx, ry |
| 17 | local same = true; |
| 18 | local first_not_square_corner |
| 19 | local last_not_square_corner |
| 20 | for i = 1, 4 do |
| 21 | local x, y = rrect:radii(i-1) |
| 22 | if (x ~= 0 and y ~= 0) then |
| 23 | if (numNotSquare == 0) then |
| 24 | rx = x |
| 25 | ry = y |
| 26 | first_not_square_corner = i |
| 27 | else |
| 28 | last_not_square_corner = i |
| 29 | if (rx ~= x or ry ~=y) then |
| 30 | same = false |
| 31 | end |
| 32 | end |
| 33 | numNotSquare = numNotSquare + 1 |
| 34 | end |
| 35 | end |
| 36 | local numSquare = 4 - numNotSquare |
| 37 | if (numSquare > 0 and same) then |
| 38 | local corners = "corners" |
| 39 | if (numSquare == 2) then |
| 40 | if ((last_not_square_corner - 1 == first_not_square_corner) or |
| 41 | (1 == first_not_square_corner and 4 == last_not_square_corner )) then |
| 42 | corners = "adjacent_" .. corners |
| 43 | else |
| 44 | corners = "opposite_" .. corners |
| 45 | end |
| 46 | elseif (1 == numSquare) then |
| 47 | corners = "corner" |
| 48 | end |
| 49 | if (rx == ry) then |
| 50 | return "circles_with_" .. numSquare .. "_square_" .. corners |
| 51 | else |
| 52 | return "ovals_with_" .. numSquare .. "_square_" .. corners |
| 53 | end |
| 54 | end |
| 55 | return "complex_unclassified" |
| 56 | elseif (rrect:type() == "rect") then |
| 57 | return "rect" |
| 58 | elseif (rrect:type() == "oval") then |
| 59 | local x, y = rrect:radii(0) |
| 60 | if (x == y) then |
| 61 | return "circle" |
| 62 | else |
| 63 | return "oval" |
| 64 | end |
| 65 | elseif (rrect:type() == "empty") then |
| 66 | return "empty" |
| 67 | else |
| 68 | return "unknown" |
| 69 | end |
| 70 | end |
| 71 | |
| 72 | function print_classes(class_table) |
| 73 | function sort_classes(a, b) |
| 74 | return a.count > b.count |
| 75 | end |
| 76 | array = {} |
| 77 | for k, v in pairs(class_table) do |
| 78 | if (type(v) == "number") then |
| 79 | array[#array + 1] = {class = k, count = v}; |
| 80 | end |
| 81 | end |
| 82 | table.sort(array, sort_classes) |
| 83 | local i |
| 84 | for i = 1, #array do |
| 85 | io.write(array[i].class, ": ", array[i].count, " (", array[i].count/class_table["total"] * 100, "%)\n"); |
| 86 | end |
| 87 | end |
| 88 | |
| 89 | function sk_scrape_accumulate(t) |
| 90 | if (t.verb == "clipRRect") then |
| 91 | local rrect = t.rrect |
| 92 | table["total"] = (table["total"] or 0) + 1 |
| 93 | local class = classify_rrect(rrect) |
| 94 | table[class] = (table[class] or 0) + 1 |
| 95 | end |
| 96 | end |
| 97 | |
| 98 | function sk_scrape_summarize() |
| 99 | print_classes(table) |
| 100 | --[[ To use the web scraper comment out the above call to print_classes, run the code below, |
| 101 | and in the aggregator pass agg_table to print_classes. |
| 102 | for k, v in pairs(table) do |
| 103 | if (type(v) == "number") then |
| 104 | local t = "agg_table[\"" .. k .. "\"]" |
| 105 | io.write(t, " = (", t, " or 0) + ", table[k], "\n" ); |
| 106 | end |
| 107 | end |
| 108 | --]] |
| 109 | end |