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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/lua/xfer-counter.lua » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkLua.h" 8 #include "SkLua.h"
9 9
10 #if SK_SUPPORT_GPU 10 #if SK_SUPPORT_GPU
(...skipping 10 matching lines...) Expand all
21 #include "SkMatrix.h" 21 #include "SkMatrix.h"
22 #include "SkPaint.h" 22 #include "SkPaint.h"
23 #include "SkPath.h" 23 #include "SkPath.h"
24 #include "SkPictureRecorder.h" 24 #include "SkPictureRecorder.h"
25 #include "SkPixelRef.h" 25 #include "SkPixelRef.h"
26 #include "SkRRect.h" 26 #include "SkRRect.h"
27 #include "SkString.h" 27 #include "SkString.h"
28 #include "SkSurface.h" 28 #include "SkSurface.h"
29 #include "SkTextBlob.h" 29 #include "SkTextBlob.h"
30 #include "SkTypeface.h" 30 #include "SkTypeface.h"
31 #include "SkXfermode.h"
31 32
32 extern "C" { 33 extern "C" {
33 #include "lua.h" 34 #include "lua.h"
34 #include "lualib.h" 35 #include "lualib.h"
35 #include "lauxlib.h" 36 #include "lauxlib.h"
36 } 37 }
37 38
38 // return the metatable name for a given class 39 // return the metatable name for a given class
39 template <typename T> const char* get_mtname(); 40 template <typename T> const char* get_mtname();
40 #define DEF_MTNAME(T) \ 41 #define DEF_MTNAME(T) \
(...skipping 10 matching lines...) Expand all
51 DEF_MTNAME(SkRRect) 52 DEF_MTNAME(SkRRect)
52 DEF_MTNAME(SkPath) 53 DEF_MTNAME(SkPath)
53 DEF_MTNAME(SkPaint) 54 DEF_MTNAME(SkPaint)
54 DEF_MTNAME(SkPathEffect) 55 DEF_MTNAME(SkPathEffect)
55 DEF_MTNAME(SkPicture) 56 DEF_MTNAME(SkPicture)
56 DEF_MTNAME(SkPictureRecorder) 57 DEF_MTNAME(SkPictureRecorder)
57 DEF_MTNAME(SkShader) 58 DEF_MTNAME(SkShader)
58 DEF_MTNAME(SkSurface) 59 DEF_MTNAME(SkSurface)
59 DEF_MTNAME(SkTextBlob) 60 DEF_MTNAME(SkTextBlob)
60 DEF_MTNAME(SkTypeface) 61 DEF_MTNAME(SkTypeface)
62 DEF_MTNAME(SkXfermode)
61 63
62 template <typename T> T* push_new(lua_State* L) { 64 template <typename T> T* push_new(lua_State* L) {
63 T* addr = (T*)lua_newuserdata(L, sizeof(T)); 65 T* addr = (T*)lua_newuserdata(L, sizeof(T));
64 new (addr) T; 66 new (addr) T;
65 luaL_getmetatable(L, get_mtname<T>()); 67 luaL_getmetatable(L, get_mtname<T>());
66 lua_setmetatable(L, -2); 68 lua_setmetatable(L, -2);
67 return addr; 69 return addr;
68 } 70 }
69 71
70 template <typename T> void push_obj(lua_State* L, const T& obj) { 72 template <typename T> void push_obj(lua_State* L, const T& obj) {
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 setfield_bool_if(L, "pathEffect", !!paint->getPathEffect()); 1076 setfield_bool_if(L, "pathEffect", !!paint->getPathEffect());
1075 setfield_bool_if(L, "rasterizer", !!paint->getRasterizer()); 1077 setfield_bool_if(L, "rasterizer", !!paint->getRasterizer());
1076 setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter()); 1078 setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter());
1077 setfield_bool_if(L, "shader", !!paint->getShader()); 1079 setfield_bool_if(L, "shader", !!paint->getShader());
1078 setfield_bool_if(L, "colorFilter", !!paint->getColorFilter()); 1080 setfield_bool_if(L, "colorFilter", !!paint->getColorFilter());
1079 setfield_bool_if(L, "imageFilter", !!paint->getImageFilter()); 1081 setfield_bool_if(L, "imageFilter", !!paint->getImageFilter());
1080 setfield_bool_if(L, "xfermode", !!paint->getXfermode()); 1082 setfield_bool_if(L, "xfermode", !!paint->getXfermode());
1081 return 1; 1083 return 1;
1082 } 1084 }
1083 1085
1086 static int lpaint_getXfermode(lua_State* L) {
1087 const SkPaint* paint = get_obj<SkPaint>(L, 1);
1088 SkXfermode* xfermode = paint->getXfermode();
1089 if (xfermode) {
1090 push_ref(L, xfermode);
1091 return 1;
1092 }
1093 return 0;
1094 }
1095
1096 static int lpaint_setXfermode(lua_State* L) {
1097 SkPaint* paint = get_obj<SkPaint>(L, 1);
1098 paint->setXfermode(get_ref<SkXfermode>(L, 2));
1099 return 0;
1100 }
1101
1084 static int lpaint_getColorFilter(lua_State* L) { 1102 static int lpaint_getColorFilter(lua_State* L) {
1085 const SkPaint* paint = get_obj<SkPaint>(L, 1); 1103 const SkPaint* paint = get_obj<SkPaint>(L, 1);
1086 SkColorFilter* cf = paint->getColorFilter(); 1104 SkColorFilter* cf = paint->getColorFilter();
1087 if (cf) { 1105 if (cf) {
1088 push_ref(L, cf); 1106 push_ref(L, cf);
1089 return 1; 1107 return 1;
1090 } 1108 }
1091 return 0; 1109 return 0;
1092 } 1110 }
1093 1111
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 { "getStrokeWidth", lpaint_getStrokeWidth }, 1203 { "getStrokeWidth", lpaint_getStrokeWidth },
1186 { "setStrokeWidth", lpaint_setStrokeWidth }, 1204 { "setStrokeWidth", lpaint_setStrokeWidth },
1187 { "getStrokeMiter", lpaint_getStrokeMiter }, 1205 { "getStrokeMiter", lpaint_getStrokeMiter },
1188 { "measureText", lpaint_measureText }, 1206 { "measureText", lpaint_measureText },
1189 { "getFontMetrics", lpaint_getFontMetrics }, 1207 { "getFontMetrics", lpaint_getFontMetrics },
1190 { "getEffects", lpaint_getEffects }, 1208 { "getEffects", lpaint_getEffects },
1191 { "getColorFilter", lpaint_getColorFilter }, 1209 { "getColorFilter", lpaint_getColorFilter },
1192 { "setColorFilter", lpaint_setColorFilter }, 1210 { "setColorFilter", lpaint_setColorFilter },
1193 { "getImageFilter", lpaint_getImageFilter }, 1211 { "getImageFilter", lpaint_getImageFilter },
1194 { "setImageFilter", lpaint_setImageFilter }, 1212 { "setImageFilter", lpaint_setImageFilter },
1213 { "getXfermode", lpaint_getXfermode },
1214 { "setXfermode", lpaint_setXfermode },
1195 { "getShader", lpaint_getShader }, 1215 { "getShader", lpaint_getShader },
1196 { "setShader", lpaint_setShader }, 1216 { "setShader", lpaint_setShader },
1197 { "getPathEffect", lpaint_getPathEffect }, 1217 { "getPathEffect", lpaint_getPathEffect },
1198 { "__gc", lpaint_gc }, 1218 { "__gc", lpaint_gc },
1199 { nullptr, nullptr } 1219 { nullptr, nullptr }
1200 }; 1220 };
1201 1221
1202 /////////////////////////////////////////////////////////////////////////////// 1222 ///////////////////////////////////////////////////////////////////////////////
1203 1223
1204 static const char* mode2string(SkShader::TileMode mode) { 1224 static const char* mode2string(SkShader::TileMode mode) {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 } 1327 }
1308 1328
1309 static const struct luaL_Reg gSkPathEffect_Methods[] = { 1329 static const struct luaL_Reg gSkPathEffect_Methods[] = {
1310 { "asADash", lpatheffect_asADash }, 1330 { "asADash", lpatheffect_asADash },
1311 { "__gc", lpatheffect_gc }, 1331 { "__gc", lpatheffect_gc },
1312 { nullptr, nullptr } 1332 { nullptr, nullptr }
1313 }; 1333 };
1314 1334
1315 /////////////////////////////////////////////////////////////////////////////// 1335 ///////////////////////////////////////////////////////////////////////////////
1316 1336
1337 static int lpxfermode_getTypeName(lua_State* L) {
1338 lua_pushstring(L, get_ref<SkXfermode>(L, 1)->getTypeName());
1339 return 1;
1340 }
1341
1342 static int lpxfermode_gc(lua_State* L) {
1343 get_ref<SkXfermode>(L, 1)->unref();
1344 return 0;
1345 }
1346
1347 static const struct luaL_Reg gSkXfermode_Methods[] = {
1348 { "getTypeName", lpxfermode_getTypeName },
1349 { "__gc", lpxfermode_gc },
1350 { nullptr, nullptr }
1351 };
1352
1353 ///////////////////////////////////////////////////////////////////////////////
1354
1317 static int lpcolorfilter_gc(lua_State* L) { 1355 static int lpcolorfilter_gc(lua_State* L) {
1318 get_ref<SkColorFilter>(L, 1)->unref(); 1356 get_ref<SkColorFilter>(L, 1)->unref();
1319 return 0; 1357 return 0;
1320 } 1358 }
1321 1359
1322 static const struct luaL_Reg gSkColorFilter_Methods[] = { 1360 static const struct luaL_Reg gSkColorFilter_Methods[] = {
1323 { "__gc", lpcolorfilter_gc }, 1361 { "__gc", lpcolorfilter_gc },
1324 { nullptr, nullptr } 1362 { nullptr, nullptr }
1325 }; 1363 };
1326 1364
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
2088 REG_CLASS(L, SkPaint); 2126 REG_CLASS(L, SkPaint);
2089 REG_CLASS(L, SkPath); 2127 REG_CLASS(L, SkPath);
2090 REG_CLASS(L, SkPathEffect); 2128 REG_CLASS(L, SkPathEffect);
2091 REG_CLASS(L, SkPicture); 2129 REG_CLASS(L, SkPicture);
2092 REG_CLASS(L, SkPictureRecorder); 2130 REG_CLASS(L, SkPictureRecorder);
2093 REG_CLASS(L, SkRRect); 2131 REG_CLASS(L, SkRRect);
2094 REG_CLASS(L, SkShader); 2132 REG_CLASS(L, SkShader);
2095 REG_CLASS(L, SkSurface); 2133 REG_CLASS(L, SkSurface);
2096 REG_CLASS(L, SkTextBlob); 2134 REG_CLASS(L, SkTextBlob);
2097 REG_CLASS(L, SkTypeface); 2135 REG_CLASS(L, SkTypeface);
2136 REG_CLASS(L, SkXfermode);
2098 } 2137 }
2099 2138
2100 extern "C" int luaopen_skia(lua_State* L); 2139 extern "C" int luaopen_skia(lua_State* L);
2101 extern "C" int luaopen_skia(lua_State* L) { 2140 extern "C" int luaopen_skia(lua_State* L) {
2102 SkLua::Load(L); 2141 SkLua::Load(L);
2103 return 0; 2142 return 0;
2104 } 2143 }
OLDNEW
« 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