add startcanvas/endcanvas entry-points for the script. rename all "official" entry-points to use "sk_scrape_" prefix
BUG=
Review URL: https://codereview.chromium.org/15511006
git-svn-id: http://skia.googlecode.com/svn/trunk@9216 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/lua/lua_pictures.cpp b/tools/lua/lua_pictures.cpp
index 36e8c93..1314c69 100644
--- a/tools/lua/lua_pictures.cpp
+++ b/tools/lua/lua_pictures.cpp
@@ -21,6 +21,11 @@
#include "lauxlib.h"
}
+static const char gStartCanvasFunc[] = "sk_scrape_startcanvas";
+static const char gEndCanvasFunc[] = "sk_scrape_endcanvas";
+static const char gAccumulateFunc[] = "sk_scrape_accumulate";
+static const char gSummarizeFunc[] = "sk_scrape_summarize";
+
// PictureRenderingFlags.cpp
extern bool lazy_decode_bitmap(const void* buffer, size_t size, SkBitmap*);
@@ -99,15 +104,17 @@
SkString fTermCode;
};
-static void call_setcanvas(lua_State* L, SkLuaCanvas* canvas) {
- lua_getglobal(L, "setcanvas");
+static void call_canvas(lua_State* L, SkLuaCanvas* canvas,
+ const char pictureFile[], const char funcName[]) {
+ lua_getglobal(L, funcName);
if (!lua_isfunction(L, -1)) {
int t = lua_type(L, -1);
- SkDebugf("--- expected setcanvas function %d\n", t);
+ SkDebugf("--- expected %s function %d, ignoring.\n", funcName, t);
lua_settop(L, -2);
} else {
canvas->pushThis();
- if (lua_pcall(L, 1, 0, 0) != LUA_OK) {
+ lua_pushstring(L, pictureFile);
+ if (lua_pcall(L, 2, 0, 0) != LUA_OK) {
SkDebugf("lua err: %s\n", lua_tostring(L, -1));
}
}
@@ -128,7 +135,7 @@
}
SkAutoGraphics ag;
- SkAutoLua L("summarize");
+ SkAutoLua L(gSummarizeFunc);
for (int i = 0; i < FLAGS_luaFile.count(); ++i) {
SkAutoDataUnref data(read_into_data(FLAGS_luaFile[i]));
@@ -153,11 +160,14 @@
SkAutoTUnref<SkPicture> pic(load_picture(path));
if (pic.get()) {
- SkAutoTUnref<SkLuaCanvas> canvas(new SkLuaCanvas(pic->width(), pic->height(), L.get(), "accumulate"));
+ SkAutoTUnref<SkLuaCanvas> canvas(
+ new SkLuaCanvas(pic->width(), pic->height(),
+ L.get(), gAccumulateFunc));
- call_setcanvas(L.get(), canvas.get());
-
+ call_canvas(L.get(), canvas.get(), inputFilename.c_str(), gStartCanvasFunc);
canvas->drawPicture(*pic);
+ call_canvas(L.get(), canvas.get(), inputFilename.c_str(), gEndCanvasFunc);
+
} else {
SkDebugf("failed to load\n");
}
diff --git a/tools/lua/scrape.lua b/tools/lua/scrape.lua
index cbdbc8d..e4a38ae 100644
--- a/tools/lua/scrape.lua
+++ b/tools/lua/scrape.lua
@@ -19,14 +19,36 @@
return str
end
-total = {}
+local total = {} -- accumulate() stores its data in here
+local canvas -- holds the current canvas (from startcanvas())
-function setcanvas(c)
+--[[
+ 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 with the parameters to each canvas.draw call
-function accumulate(t)
+--[[
+ Called when the current canvas is done drawing.
+]]
+function sk_scrape_endcanvas(c, fileName)
+ canvas = nil
+end
+
+--[[
+ Called with the parameters to each canvas.draw call, where canvas is the
+ current canvas as set by startcanvas()
+]]
+function sk_scrape_accumulate(t)
local n = total[t.verb] or 0
total[t.verb] = n + 1
@@ -45,9 +67,11 @@
end
end
--- lua_pictures will call this function after all of the files have been
--- "accumulated"
-function summarize()
- io.write("\n", tostr(total), "\n")
+--[[
+ lua_pictures will call this function after all of the pictures have been
+ "accumulated".
+]]
+function sk_scrape_summarize()
+ io.write("\n{ ", tostr(total), " }\n")
end