add matrix objects to the lua bindings, as well as a lua script to find the proportion of image draw commands with different kinds of matrices
git-svn-id: http://skia.googlecode.com/svn/trunk@9986 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
cdad30b35a
commit
2815c19c4d
@ -128,6 +128,11 @@ static void setfield_number(lua_State* L, const char key[], double value) {
|
||||
lua_setfield(L, -2, key);
|
||||
}
|
||||
|
||||
static void setfield_boolean(lua_State* L, const char key[], bool value) {
|
||||
lua_pushboolean(L, value);
|
||||
lua_setfield(L, -2, key);
|
||||
}
|
||||
|
||||
static void setfield_scalar(lua_State* L, const char key[], SkScalar value) {
|
||||
setfield_number(L, key, SkScalarToLua(value));
|
||||
}
|
||||
@ -648,6 +653,24 @@ static const struct luaL_Reg gSkPaint_Methods[] = {
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static int lmatrix_getType(lua_State* L) {
|
||||
SkMatrix::TypeMask mask = get_obj<SkMatrix>(L, 1)->getType();
|
||||
|
||||
lua_newtable(L);
|
||||
setfield_boolean(L, "translate", SkToBool(mask & SkMatrix::kTranslate_Mask));
|
||||
setfield_boolean(L, "scale", SkToBool(mask & SkMatrix::kScale_Mask));
|
||||
setfield_boolean(L, "affine", SkToBool(mask & SkMatrix::kAffine_Mask));
|
||||
setfield_boolean(L, "perspective", SkToBool(mask & SkMatrix::kPerspective_Mask));
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct luaL_Reg gSkMatrix_Methods[] = {
|
||||
{ "getType", lmatrix_getType },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static int lpath_getBounds(lua_State* L) {
|
||||
SkLua(L).pushRect(get_obj<SkPath>(L, 1)->getBounds());
|
||||
return 1;
|
||||
@ -971,6 +994,7 @@ void SkLua::Load(lua_State* L) {
|
||||
REG_CLASS(L, SkPaint);
|
||||
REG_CLASS(L, SkRRect);
|
||||
REG_CLASS(L, SkTypeface);
|
||||
REG_CLASS(L, SkMatrix);
|
||||
}
|
||||
|
||||
extern "C" int luaopen_skia(lua_State* L);
|
||||
|
71
tools/lua/find_rotated_bitmaps.lua
Normal file
71
tools/lua/find_rotated_bitmaps.lua
Normal file
@ -0,0 +1,71 @@
|
||||
function string.startsWith(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
|
||||
function string.endsWith(String,End)
|
||||
return End=='' or string.sub(String,-string.len(End))==End
|
||||
end
|
||||
|
||||
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 canvas = nil
|
||||
local num_perspective_bitmaps = 0
|
||||
local num_affine_bitmaps = 0
|
||||
local num_scaled_bitmaps = 0
|
||||
local num_translated_bitmaps = 0
|
||||
local num_identity_bitmaps = 0
|
||||
|
||||
function sk_scrape_startcanvas(c, fileName)
|
||||
canvas = c
|
||||
end
|
||||
|
||||
function sk_scrape_endcanvas(c, fileName)
|
||||
canvas = nil
|
||||
end
|
||||
|
||||
function sk_scrape_accumulate(t)
|
||||
-- dump the params in t, specifically showing the verb first, which we
|
||||
-- then nil out so it doesn't appear in tostr()
|
||||
if (string.startsWith(t.verb,"drawBitmap")) then
|
||||
matrix = canvas:getTotalMatrix()
|
||||
matrixType = matrix:getType()
|
||||
if matrixType.perspective then
|
||||
num_perspective_bitmaps = num_perspective_bitmaps + 1
|
||||
elseif matrixType.affine then
|
||||
num_affine_bitmaps = num_affine_bitmaps + 1
|
||||
elseif matrixType.scale then
|
||||
num_scaled_bitmaps = num_scaled_bitmaps + 1
|
||||
elseif matrixType.translate then
|
||||
num_translated_bitmaps = num_translated_bitmaps + 1
|
||||
else
|
||||
num_identity_bitmaps = num_identity_bitmaps + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function sk_scrape_summarize()
|
||||
io.write( "identity = ", num_identity_bitmaps,
|
||||
", translated = ", num_translated_bitmaps,
|
||||
", scaled = ", num_scaled_bitmaps,
|
||||
", affine = ", num_affine_bitmaps,
|
||||
", perspective = ", num_perspective_bitmaps)
|
||||
end
|
||||
|
@ -1,5 +1,14 @@
|
||||
-- Experimental helpers for skia --
|
||||
|
||||
function string.startsWith(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
|
||||
function string.endsWith(String,End)
|
||||
return End=='' or string.sub(String,-string.len(End))==End
|
||||
end
|
||||
|
||||
|
||||
Sk = {}
|
||||
|
||||
function Sk.isFinite(x)
|
||||
|
Loading…
Reference in New Issue
Block a user