function tostr(t) local str = "" for k, v in next, t do if #str > 0 then str = str .. ", " end if type(k) == "number" then str = str .. "[" .. k .. "] = " else str = str .. tostring(k) .. " = " end if type(v) == "table" then str = str .. "{ " .. tostr(v) .. " }" else str = str .. tostring(v) end end return str end local total_found = {} -- accumulate() stores its data in here local total_total = {} local canvas -- holds the current canvas (from startcanvas()) --[[ startcanvas() is called at the start of each picture file, passing the canvas that we will be drawing into, and the name of the file. Following this call, there will be some number of calls to accumulate(t) where t is a table of parameters that were passed to that draw-op. t.verb is a string holding the name of the draw-op (e.g. "drawRect") when a given picture is done, we call endcanvas(canvas, fileName) ]] function sk_scrape_startcanvas(c, fileName) canvas = c end --[[ Called when the current canvas is done drawing. ]] function sk_scrape_endcanvas(c, fileName) canvas = nil end function increment(table, key) table[key] = (table[key] or 0) + 1 end local drawPointsTable = {} local drawPointsTable_direction = {} function sk_scrape_accumulate(t) increment(total_total, t.verb) local p = t.paint if p then local pe = p:getPathEffect(); if pe then increment(total_found, t.verb) end end if "drawPoints" == t.verb then local points = t.points increment(drawPointsTable, #points) if 2 == #points then if points[1].y == points[2].y then increment(drawPointsTable_direction, "hori") elseif points[1].x == points[2].x then increment(drawPointsTable_direction, "vert") else increment(drawPointsTable_direction, "other") end end end end --[[ lua_pictures will call this function after all of the pictures have been "accumulated". ]] function sk_scrape_summarize() for k, v in next, total_found do io.write(k, " = ", v, "/", total_total[k], "\n") end print("histogram of point-counts for all drawPoints calls") print(tostr(drawPointsTable)) print(tostr(drawPointsTable_direction)) end