OLD | NEW |
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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 lua_setmetatable(L, -2); | 75 lua_setmetatable(L, -2); |
76 } | 76 } |
77 | 77 |
78 template <typename T> T* push_ref(lua_State* L, T* ref) { | 78 template <typename T> T* push_ref(lua_State* L, T* ref) { |
79 *(T**)lua_newuserdata(L, sizeof(T*)) = SkSafeRef(ref); | 79 *(T**)lua_newuserdata(L, sizeof(T*)) = SkSafeRef(ref); |
80 luaL_getmetatable(L, get_mtname<T>()); | 80 luaL_getmetatable(L, get_mtname<T>()); |
81 lua_setmetatable(L, -2); | 81 lua_setmetatable(L, -2); |
82 return ref; | 82 return ref; |
83 } | 83 } |
84 | 84 |
| 85 template <typename T> void push_ref(lua_State* L, sk_sp<T> sp) { |
| 86 *(T**)lua_newuserdata(L, sizeof(T*)) = sp.release(); |
| 87 luaL_getmetatable(L, get_mtname<T>()); |
| 88 lua_setmetatable(L, -2); |
| 89 } |
| 90 |
85 template <typename T> T* get_ref(lua_State* L, int index) { | 91 template <typename T> T* get_ref(lua_State* L, int index) { |
86 return *(T**)luaL_checkudata(L, index, get_mtname<T>()); | 92 return *(T**)luaL_checkudata(L, index, get_mtname<T>()); |
87 } | 93 } |
88 | 94 |
89 template <typename T> T* get_obj(lua_State* L, int index) { | 95 template <typename T> T* get_obj(lua_State* L, int index) { |
90 return (T*)luaL_checkudata(L, index, get_mtname<T>()); | 96 return (T*)luaL_checkudata(L, index, get_mtname<T>()); |
91 } | 97 } |
92 | 98 |
93 static bool lua2bool(lua_State* L, int index) { | 99 static bool lua2bool(lua_State* L, int index) { |
94 return !!lua_toboolean(L, index); | 100 return !!lua_toboolean(L, index); |
(...skipping 1875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1970 static int lsk_newLinearGradient(lua_State* L) { | 1976 static int lsk_newLinearGradient(lua_State* L) { |
1971 SkScalar x0 = lua2scalar_def(L, 1, 0); | 1977 SkScalar x0 = lua2scalar_def(L, 1, 0); |
1972 SkScalar y0 = lua2scalar_def(L, 2, 0); | 1978 SkScalar y0 = lua2scalar_def(L, 2, 0); |
1973 SkColor c0 = lua2color(L, 3); | 1979 SkColor c0 = lua2color(L, 3); |
1974 SkScalar x1 = lua2scalar_def(L, 4, 0); | 1980 SkScalar x1 = lua2scalar_def(L, 4, 0); |
1975 SkScalar y1 = lua2scalar_def(L, 5, 0); | 1981 SkScalar y1 = lua2scalar_def(L, 5, 0); |
1976 SkColor c1 = lua2color(L, 6); | 1982 SkColor c1 = lua2color(L, 6); |
1977 | 1983 |
1978 SkPoint pts[] = { { x0, y0 }, { x1, y1 } }; | 1984 SkPoint pts[] = { { x0, y0 }, { x1, y1 } }; |
1979 SkColor colors[] = { c0, c1 }; | 1985 SkColor colors[] = { c0, c1 }; |
1980 SkShader* s = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShad
er::kClamp_TileMode); | 1986 auto s = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShader::kCl
amp_TileMode); |
1981 if (nullptr == s) { | 1987 if (!s) { |
1982 lua_pushnil(L); | 1988 lua_pushnil(L); |
1983 } else { | 1989 } else { |
1984 push_ref(L, s)->unref(); | 1990 push_ref(L, std::move(s)); |
1985 } | 1991 } |
1986 return 1; | 1992 return 1; |
1987 } | 1993 } |
1988 | 1994 |
1989 static int lsk_newMatrix(lua_State* L) { | 1995 static int lsk_newMatrix(lua_State* L) { |
1990 push_new<SkMatrix>(L)->reset(); | 1996 push_new<SkMatrix>(L)->reset(); |
1991 return 1; | 1997 return 1; |
1992 } | 1998 } |
1993 | 1999 |
1994 static int lsk_newPaint(lua_State* L) { | 2000 static int lsk_newPaint(lua_State* L) { |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2131 REG_CLASS(L, SkTextBlob); | 2137 REG_CLASS(L, SkTextBlob); |
2132 REG_CLASS(L, SkTypeface); | 2138 REG_CLASS(L, SkTypeface); |
2133 REG_CLASS(L, SkXfermode); | 2139 REG_CLASS(L, SkXfermode); |
2134 } | 2140 } |
2135 | 2141 |
2136 extern "C" int luaopen_skia(lua_State* L); | 2142 extern "C" int luaopen_skia(lua_State* L); |
2137 extern "C" int luaopen_skia(lua_State* L) { | 2143 extern "C" int luaopen_skia(lua_State* L) { |
2138 SkLua::Load(L); | 2144 SkLua::Load(L); |
2139 return 0; | 2145 return 0; |
2140 } | 2146 } |
OLD | NEW |