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