Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(765)

Unified Diff: src/utils/SkLua.cpp

Issue 1614923002: Add Lua SkXfermode skp scraping support (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: use SkFlattenable::getTypeName Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/lua/xfer-counter.lua » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/utils/SkLua.cpp
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
index d85fb91a033a4164046f934e7b6e1f2dbb8232eb..edd336afdf04c5867e6fe512cf67121932013083 100644
--- a/src/utils/SkLua.cpp
+++ b/src/utils/SkLua.cpp
@@ -28,6 +28,7 @@
#include "SkSurface.h"
#include "SkTextBlob.h"
#include "SkTypeface.h"
+#include "SkXfermode.h"
extern "C" {
#include "lua.h"
@@ -58,6 +59,7 @@ DEF_MTNAME(SkShader)
DEF_MTNAME(SkSurface)
DEF_MTNAME(SkTextBlob)
DEF_MTNAME(SkTypeface)
+DEF_MTNAME(SkXfermode)
template <typename T> T* push_new(lua_State* L) {
T* addr = (T*)lua_newuserdata(L, sizeof(T));
@@ -1081,6 +1083,22 @@ static int lpaint_getEffects(lua_State* L) {
return 1;
}
+static int lpaint_getXfermode(lua_State* L) {
+ const SkPaint* paint = get_obj<SkPaint>(L, 1);
+ SkXfermode* xfermode = paint->getXfermode();
+ if (xfermode) {
+ push_ref(L, xfermode);
+ return 1;
+ }
+ return 0;
+}
+
+static int lpaint_setXfermode(lua_State* L) {
+ SkPaint* paint = get_obj<SkPaint>(L, 1);
+ paint->setXfermode(get_ref<SkXfermode>(L, 2));
+ return 0;
+}
+
static int lpaint_getColorFilter(lua_State* L) {
const SkPaint* paint = get_obj<SkPaint>(L, 1);
SkColorFilter* cf = paint->getColorFilter();
@@ -1192,6 +1210,8 @@ static const struct luaL_Reg gSkPaint_Methods[] = {
{ "setColorFilter", lpaint_setColorFilter },
{ "getImageFilter", lpaint_getImageFilter },
{ "setImageFilter", lpaint_setImageFilter },
+ { "getXfermode", lpaint_getXfermode },
+ { "setXfermode", lpaint_setXfermode },
{ "getShader", lpaint_getShader },
{ "setShader", lpaint_setShader },
{ "getPathEffect", lpaint_getPathEffect },
@@ -1314,6 +1334,24 @@ static const struct luaL_Reg gSkPathEffect_Methods[] = {
///////////////////////////////////////////////////////////////////////////////
+static int lpxfermode_getTypeName(lua_State* L) {
+ lua_pushstring(L, get_ref<SkXfermode>(L, 1)->getTypeName());
+ return 1;
+}
+
+static int lpxfermode_gc(lua_State* L) {
+ get_ref<SkXfermode>(L, 1)->unref();
+ return 0;
+}
+
+static const struct luaL_Reg gSkXfermode_Methods[] = {
+ { "getTypeName", lpxfermode_getTypeName },
+ { "__gc", lpxfermode_gc },
+ { nullptr, nullptr }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
static int lpcolorfilter_gc(lua_State* L) {
get_ref<SkColorFilter>(L, 1)->unref();
return 0;
@@ -2095,6 +2133,7 @@ void SkLua::Load(lua_State* L) {
REG_CLASS(L, SkSurface);
REG_CLASS(L, SkTextBlob);
REG_CLASS(L, SkTypeface);
+ REG_CLASS(L, SkXfermode);
}
extern "C" int luaopen_skia(lua_State* L);
« no previous file with comments | « no previous file | tools/lua/xfer-counter.lua » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698