diff options
author | 2014-03-17 23:09:47 +0000 | |
---|---|---|
committer | 2014-03-17 23:09:47 +0000 | |
commit | 1301bf3abfe355f9aadd53d5dbf04926013231ba (patch) | |
tree | 56b0011989025e1c1dfcb920ad6ed4b4960183c4 /src/utils | |
parent | e4ff3e6fe8c2b93cce18da9e45bab95283259a35 (diff) |
add initial scraper for dashing
BUG=skia:
R=bsalomon@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/196603027
git-svn-id: http://skia.googlecode.com/svn/trunk@13843 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/SkLua.cpp | 40 | ||||
-rw-r--r-- | src/utils/SkLuaCanvas.cpp | 1 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp index 44f2211b8f..346899a5dd 100644 --- a/src/utils/SkLua.cpp +++ b/src/utils/SkLua.cpp @@ -18,6 +18,7 @@ #include "SkMatrix.h" #include "SkPaint.h" #include "SkPath.h" +#include "SkPathEffect.h" #include "SkPixelRef.h" #include "SkRRect.h" #include "SkString.h" @@ -43,6 +44,7 @@ DEF_MTNAME(SkMatrix) DEF_MTNAME(SkRRect) DEF_MTNAME(SkPath) DEF_MTNAME(SkPaint) +DEF_MTNAME(SkPathEffect) DEF_MTNAME(SkShader) DEF_MTNAME(SkTypeface) @@ -205,6 +207,18 @@ void SkLua::pushArrayU16(const uint16_t array[], int count, const char key[]) { CHECK_SETFIELD(key); } +void SkLua::pushArrayPoint(const SkPoint array[], int count, const char key[]) { + lua_newtable(fL); + for (int i = 0; i < count; ++i) { + // make it base-1 to match lua convention + lua_newtable(fL); + this->pushScalar(array[i].fX, "x"); + this->pushScalar(array[i].fY, "y"); + lua_rawseti(fL, -2, i + 1); + } + CHECK_SETFIELD(key); +} + void SkLua::pushRect(const SkRect& r, const char key[]) { lua_newtable(fL); setfield_scalar(fL, "left", r.fLeft); @@ -845,6 +859,16 @@ static int lpaint_getShader(lua_State* L) { return 0; } +static int lpaint_getPathEffect(lua_State* L) { + const SkPaint* paint = get_obj<SkPaint>(L, 1); + SkPathEffect* pe = paint->getPathEffect(); + if (pe) { + push_ref(L, pe); + return 1; + } + return 0; +} + static int lpaint_gc(lua_State* L) { get_obj<SkPaint>(L, 1)->~SkPaint(); return 0; @@ -888,6 +912,7 @@ static const struct luaL_Reg gSkPaint_Methods[] = { { "getFontMetrics", lpaint_getFontMetrics }, { "getEffects", lpaint_getEffects }, { "getShader", lpaint_getShader }, + { "getPathEffect", lpaint_getPathEffect }, { "__gc", lpaint_gc }, { NULL, NULL } }; @@ -981,6 +1006,18 @@ static const struct luaL_Reg gSkShader_Methods[] = { /////////////////////////////////////////////////////////////////////////////// +static int lpatheffect_gc(lua_State* L) { + get_ref<SkPathEffect>(L, 1)->unref(); + return 0; +} + +static const struct luaL_Reg gSkPathEffect_Methods[] = { + { "__gc", lpatheffect_gc }, + { NULL, NULL } +}; + +/////////////////////////////////////////////////////////////////////////////// + static int lmatrix_getType(lua_State* L) { SkMatrix::TypeMask mask = get_obj<SkMatrix>(L, 1)->getType(); @@ -1419,8 +1456,9 @@ void SkLua::Load(lua_State* L) { REG_CLASS(L, SkCanvas); REG_CLASS(L, SkDocument); REG_CLASS(L, SkImage); - REG_CLASS(L, SkPath); REG_CLASS(L, SkPaint); + REG_CLASS(L, SkPath); + REG_CLASS(L, SkPathEffect); REG_CLASS(L, SkRRect); REG_CLASS(L, SkShader); REG_CLASS(L, SkTypeface); diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp index 9289beed88..b5789e058b 100644 --- a/src/utils/SkLuaCanvas.cpp +++ b/src/utils/SkLuaCanvas.cpp @@ -176,6 +176,7 @@ void SkLuaCanvas::drawPaint(const SkPaint& paint) { void SkLuaCanvas::drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) { AUTO_LUA("drawPoints"); + lua.pushArrayPoint(pts, count, "points"); lua.pushPaint(paint, "paint"); } |