aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/utils
diff options
context:
space:
mode:
authorGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-06-13 01:28:56 +0000
committerGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-06-13 01:28:56 +0000
commit1d32cc67f77d3fac29db574d79c7dff93e035259 (patch)
tree9a0047d384ebfb915be127151a30da1424568be2 /src/utils
parent45672099ea3006cde5b8a97b52fcd0b8ac69d4e1 (diff)
add canvas scale and rotate
git-svn-id: http://skia.googlecode.com/svn/trunk@9564 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/SkLua.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
index 6754746033..aabb236f30 100644
--- a/src/utils/SkLua.cpp
+++ b/src/utils/SkLua.cpp
@@ -228,6 +228,14 @@ static SkScalar lua2scalar(lua_State* L, int index) {
return SkLuaToScalar(lua_tonumber(L, index));
}
+static SkScalar lua2scalar_def(lua_State* L, int index, SkScalar defaultValue) {
+ if (lua_isnumber(L, index)) {
+ return SkLuaToScalar(lua_tonumber(L, index));
+ } else {
+ return defaultValue;
+ }
+}
+
static SkScalar getfield_scalar(lua_State* L, int index, const char key[]) {
SkASSERT(lua_istable(L, index));
lua_pushstring(L, key);
@@ -365,8 +373,23 @@ static int lcanvas_restore(lua_State* L) {
return 0;
}
+static int lcanvas_scale(lua_State* L) {
+ SkScalar sx = lua2scalar_def(L, 2, 1);
+ SkScalar sy = lua2scalar_def(L, 3, sx);
+ get_ref<SkCanvas>(L, 1)->scale(sx, sy);
+ return 0;
+}
+
static int lcanvas_translate(lua_State* L) {
- get_ref<SkCanvas>(L, 1)->translate(lua2scalar(L, 2), lua2scalar(L, 3));
+ SkScalar tx = lua2scalar_def(L, 2, 0);
+ SkScalar ty = lua2scalar_def(L, 3, 0);
+ get_ref<SkCanvas>(L, 1)->translate(tx, ty);
+ return 0;
+}
+
+static int lcanvas_rotate(lua_State* L) {
+ SkScalar degrees = lua2scalar_def(L, 2, 0);
+ get_ref<SkCanvas>(L, 1)->rotate(degrees);
return 0;
}
@@ -387,7 +410,9 @@ static const struct luaL_Reg gSkCanvas_Methods[] = {
{ "getTotalMatrix", lcanvas_getTotalMatrix },
{ "save", lcanvas_save },
{ "restore", lcanvas_restore },
+ { "scale", lcanvas_scale },
{ "translate", lcanvas_translate },
+ { "rotate", lcanvas_rotate },
{ "__gc", lcanvas_gc },
{ NULL, NULL }
};