158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction string.startsWith(String,Start) 258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger return string.sub(String,1,string.len(Start))==Start 358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction string.endsWith(String,End) 658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger return End=='' or string.sub(String,-string.len(End))==End 758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal canvas = nil 1058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal num_perspective_bitmaps = 0 1158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal num_affine_bitmaps = 0 1258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal num_scaled_bitmaps = 0 1358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal num_translated_bitmaps = 0 1458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerlocal num_identity_bitmaps = 0 15e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenbergerlocal num_scaled_up = 0 16e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenbergerlocal num_scaled_down = 0 1758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction sk_scrape_startcanvas(c, fileName) 1958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger canvas = c 2058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 2158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 2258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction sk_scrape_endcanvas(c, fileName) 2358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger canvas = nil 2458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 2558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 2658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction sk_scrape_accumulate(t) 2758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger -- dump the params in t, specifically showing the verb first, which we 2858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger -- then nil out so it doesn't appear in tostr() 2958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger if (string.startsWith(t.verb,"drawBitmap")) then 3058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger matrix = canvas:getTotalMatrix() 3158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger matrixType = matrix:getType() 3258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger if matrixType.perspective then 3358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger num_perspective_bitmaps = num_perspective_bitmaps + 1 3458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger elseif matrixType.affine then 3558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger num_affine_bitmaps = num_affine_bitmaps + 1 3658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger elseif matrixType.scale then 3758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger num_scaled_bitmaps = num_scaled_bitmaps + 1 38e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger if matrix:getScaleX() > 1 or matrix:getScaleY() > 1 then 39e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger num_scaled_up = num_scaled_up + 1 40e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger else 41e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger num_scaled_down = num_scaled_down + 1 42e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger end 4358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger elseif matrixType.translate then 4458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger num_translated_bitmaps = num_translated_bitmaps + 1 4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger else 4658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger num_identity_bitmaps = num_identity_bitmaps + 1 4758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger end 4858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger end 4958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 5058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 5158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerfunction sk_scrape_summarize() 5258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger io.write( "identity = ", num_identity_bitmaps, 5358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger ", translated = ", num_translated_bitmaps, 54e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger ", scaled = ", num_scaled_bitmaps, " (up = ", num_scaled_up, "; down = ", num_scaled_down, ")", 5558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger ", affine = ", num_affine_bitmaps, 5658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger ", perspective = ", num_perspective_bitmaps, 5758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger "\n") 5858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerend 5958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 60