12815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction string.startsWith(String,Start)
22815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com   return string.sub(String,1,string.len(Start))==Start
32815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
42815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
52815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction string.endsWith(String,End)
62815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com   return End=='' or string.sub(String,-string.len(End))==End
72815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
82815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
92815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal canvas = nil
102815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal num_perspective_bitmaps = 0
112815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal num_affine_bitmaps = 0
122815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal num_scaled_bitmaps = 0
132815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal num_translated_bitmaps = 0
142815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comlocal num_identity_bitmaps = 0
150f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.comlocal num_scaled_up = 0
160f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.comlocal num_scaled_down = 0
172815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
182815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction sk_scrape_startcanvas(c, fileName) 
192815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com  canvas = c
202815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
212815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
222815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction sk_scrape_endcanvas(c, fileName)
232815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com  canvas = nil
242815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
252815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
262815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction sk_scrape_accumulate(t)
272815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com    -- dump the params in t, specifically showing the verb first, which we
282815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com    -- then nil out so it doesn't appear in tostr()
292815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com    if (string.startsWith(t.verb,"drawBitmap")) then
302815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      matrix = canvas:getTotalMatrix()
312815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      matrixType = matrix:getType()
322815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      if matrixType.perspective then
332815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com        num_perspective_bitmaps = num_perspective_bitmaps + 1
342815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      elseif matrixType.affine then
352815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com        num_affine_bitmaps = num_affine_bitmaps + 1
362815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      elseif matrixType.scale then 
372815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com        num_scaled_bitmaps = num_scaled_bitmaps + 1
380f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com        if matrix:getScaleX() > 1 or matrix:getScaleY() > 1 then
390f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com          num_scaled_up = num_scaled_up + 1
400f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com        else
410f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com          num_scaled_down = num_scaled_down + 1
420f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com        end
432815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      elseif matrixType.translate then
442815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com        num_translated_bitmaps = num_translated_bitmaps + 1
452815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      else
462815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com        num_identity_bitmaps = num_identity_bitmaps + 1
472815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com      end
482815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com    end
492815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
502815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
512815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comfunction sk_scrape_summarize()
522815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com  io.write( "identity = ", num_identity_bitmaps,
532815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com            ", translated = ", num_translated_bitmaps, 
540f48ee0a07aa50ab60bfff3c2718b9649e3639eahumper@google.com            ", scaled = ", num_scaled_bitmaps, " (up = ", num_scaled_up, "; down = ", num_scaled_down, ")",
552815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com            ", affine = ", num_affine_bitmaps,
569d5fedc5a6fb9476df0d7e5814c9c315b655d5c6humper@google.com            ", perspective = ", num_perspective_bitmaps,
579d5fedc5a6fb9476df0d7e5814c9c315b655d5c6humper@google.com            "\n")
582815c19c4d52f0fb522e21d1938d63e01c039124humper@google.comend
592815c19c4d52f0fb522e21d1938d63e01c039124humper@google.com
60