Home | History | Annotate | Download | only in 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 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