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 total_found = {} -- accumulate() stores its data in here 22 local total_total = {} 23 local 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 ]] 36 function sk_scrape_startcanvas(c, fileName) 37 canvas = c 38 end 39 40 --[[ 41 Called when the current canvas is done drawing. 42 ]] 43 function sk_scrape_endcanvas(c, fileName) 44 canvas = nil 45 end 46 47 function increment(table, key) 48 table[key] = (table[key] or 0) + 1 49 end 50 51 52 local drawPointsTable = {} 53 local drawPointsTable_direction = {} 54 55 function 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 79 end 80 81 --[[ 82 lua_pictures will call this function after all of the pictures have been 83 "accumulated". 84 ]] 85 function 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)) 92 end 93 94