aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/utils/SkLua.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-04 21:35:32 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-04 21:35:56 +0000
commit3ed485f4249e17abb4b11f5018d03175fd1afb44 (patch)
treefaf5a74449f02b51592e17641e48e2b9d2caf6f2 /src/utils/SkLua.cpp
parent8174ebe30330f857bbf0ba700e1f03b8beb4ee71 (diff)
Revert[5] "replace SkXfermode obj with SkBlendMode enum in paints"
This reverts commit I0fa5c58af428f3da8565465d1219a34ef8417d9a. Reason for revert: failing to deserialize some of the 100K Original change's description: > Revert[4] "replace SkXfermode obj with SkBlendMode enum in paints" > > This reverts commit 2cbcd12281ee807214df094964c584c78932e10b. > > BUG=skia: > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2924 > > Change-Id: I0fa5c58af428f3da8565465d1219a34ef8417d9a > Reviewed-on: https://skia-review.googlesource.com/2924 > Reviewed-by: Mike Reed <reed@google.com> > Commit-Queue: Mike Reed <reed@google.com> > TBR=reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I1805a57eef5ebcac203da5989c8539345ecf806f Reviewed-on: https://skia-review.googlesource.com/2962 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/utils/SkLua.cpp')
-rw-r--r--src/utils/SkLua.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
index ba311af61c..e80708c71c 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));
@@ -1071,9 +1073,26 @@ static int lpaint_getEffects(lua_State* L) {
setfield_bool_if(L, "shader", !!paint->getShader());
setfield_bool_if(L, "colorFilter", !!paint->getColorFilter());
setfield_bool_if(L, "imageFilter", !!paint->getImageFilter());
+ setfield_bool_if(L, "xfermode", !!paint->getXfermode());
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(sk_ref_sp(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();
@@ -1198,6 +1217,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 },
@@ -1320,6 +1341,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;
@@ -2139,6 +2178,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);