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

Side by Side Diff: src/utils/SkLua.cpp

Issue 2199823002: Add code to lua paths to get the fill path and get lists of verbs and (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix more minor problems Created 4 years, 4 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/count_dashes.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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 214
215 static void setarray_number(lua_State* L, int index, double value) { 215 static void setarray_number(lua_State* L, int index, double value) {
216 lua_pushnumber(L, value); 216 lua_pushnumber(L, value);
217 lua_rawseti(L, -2, index); 217 lua_rawseti(L, -2, index);
218 } 218 }
219 219
220 static void setarray_scalar(lua_State* L, int index, SkScalar value) { 220 static void setarray_scalar(lua_State* L, int index, SkScalar value) {
221 setarray_number(L, index, SkScalarToLua(value)); 221 setarray_number(L, index, SkScalarToLua(value));
222 } 222 }
223 223
224 static void setarray_string(lua_State* L, int index, const char str[]) {
225 lua_pushstring(L, str);
226 lua_rawseti(L, -2, index);
227 }
228
224 void SkLua::pushBool(bool value, const char key[]) { 229 void SkLua::pushBool(bool value, const char key[]) {
225 lua_pushboolean(fL, value); 230 lua_pushboolean(fL, value);
226 CHECK_SETFIELD(key); 231 CHECK_SETFIELD(key);
227 } 232 }
228 233
229 void SkLua::pushString(const char str[], const char key[]) { 234 void SkLua::pushString(const char str[], const char key[]) {
230 lua_pushstring(fL, str); 235 lua_pushstring(fL, str);
231 CHECK_SETFIELD(key); 236 CHECK_SETFIELD(key);
232 } 237 }
233 238
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 static int lpaint_getPathEffect(lua_State* L) { 1157 static int lpaint_getPathEffect(lua_State* L) {
1153 const SkPaint* paint = get_obj<SkPaint>(L, 1); 1158 const SkPaint* paint = get_obj<SkPaint>(L, 1);
1154 SkPathEffect* pe = paint->getPathEffect(); 1159 SkPathEffect* pe = paint->getPathEffect();
1155 if (pe) { 1160 if (pe) {
1156 push_ref(L, pe); 1161 push_ref(L, pe);
1157 return 1; 1162 return 1;
1158 } 1163 }
1159 return 0; 1164 return 0;
1160 } 1165 }
1161 1166
1167 static int lpaint_getFillPath(lua_State* L) {
1168 const SkPaint* paint = get_obj<SkPaint>(L, 1);
1169 const SkPath* path = get_obj<SkPath>(L, 2);
1170
1171 SkPath fillpath;
1172 paint->getFillPath(*path, &fillpath);
1173
1174 SkLua lua(L);
1175 lua.pushPath(fillpath);
1176
1177 return 1;
1178 }
1179
1162 static int lpaint_gc(lua_State* L) { 1180 static int lpaint_gc(lua_State* L) {
1163 get_obj<SkPaint>(L, 1)->~SkPaint(); 1181 get_obj<SkPaint>(L, 1)->~SkPaint();
1164 return 0; 1182 return 0;
1165 } 1183 }
1166 1184
1167 static const struct luaL_Reg gSkPaint_Methods[] = { 1185 static const struct luaL_Reg gSkPaint_Methods[] = {
1168 { "isAntiAlias", lpaint_isAntiAlias }, 1186 { "isAntiAlias", lpaint_isAntiAlias },
1169 { "setAntiAlias", lpaint_setAntiAlias }, 1187 { "setAntiAlias", lpaint_setAntiAlias },
1170 { "isDither", lpaint_isDither }, 1188 { "isDither", lpaint_isDither },
1171 { "setDither", lpaint_setDither }, 1189 { "setDither", lpaint_setDither },
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 { "getEffects", lpaint_getEffects }, 1228 { "getEffects", lpaint_getEffects },
1211 { "getColorFilter", lpaint_getColorFilter }, 1229 { "getColorFilter", lpaint_getColorFilter },
1212 { "setColorFilter", lpaint_setColorFilter }, 1230 { "setColorFilter", lpaint_setColorFilter },
1213 { "getImageFilter", lpaint_getImageFilter }, 1231 { "getImageFilter", lpaint_getImageFilter },
1214 { "setImageFilter", lpaint_setImageFilter }, 1232 { "setImageFilter", lpaint_setImageFilter },
1215 { "getXfermode", lpaint_getXfermode }, 1233 { "getXfermode", lpaint_getXfermode },
1216 { "setXfermode", lpaint_setXfermode }, 1234 { "setXfermode", lpaint_setXfermode },
1217 { "getShader", lpaint_getShader }, 1235 { "getShader", lpaint_getShader },
1218 { "setShader", lpaint_setShader }, 1236 { "setShader", lpaint_setShader },
1219 { "getPathEffect", lpaint_getPathEffect }, 1237 { "getPathEffect", lpaint_getPathEffect },
1238 { "getFillPath", lpaint_getFillPath },
1220 { "__gc", lpaint_gc }, 1239 { "__gc", lpaint_gc },
1221 { nullptr, nullptr } 1240 { nullptr, nullptr }
1222 }; 1241 };
1223 1242
1224 /////////////////////////////////////////////////////////////////////////////// 1243 ///////////////////////////////////////////////////////////////////////////////
1225 1244
1226 static const char* mode2string(SkShader::TileMode mode) { 1245 static const char* mode2string(SkShader::TileMode mode) {
1227 static const char* gNames[] = { "clamp", "repeat", "mirror" }; 1246 static const char* gNames[] = { "clamp", "repeat", "mirror" };
1228 SkASSERT((unsigned)mode < SK_ARRAY_COUNT(gNames)); 1247 SkASSERT((unsigned)mode < SK_ARRAY_COUNT(gNames));
1229 return gNames[mode]; 1248 return gNames[mode];
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
1579 ret_count += 4; 1598 ret_count += 4;
1580 } 1599 }
1581 return ret_count; 1600 return ret_count;
1582 } 1601 }
1583 1602
1584 static int lpath_countPoints(lua_State* L) { 1603 static int lpath_countPoints(lua_State* L) {
1585 lua_pushinteger(L, get_obj<SkPath>(L, 1)->countPoints()); 1604 lua_pushinteger(L, get_obj<SkPath>(L, 1)->countPoints());
1586 return 1; 1605 return 1;
1587 } 1606 }
1588 1607
1608 static int lpath_getVerbs(lua_State* L) {
1609 const SkPath* path = get_obj<SkPath>(L, 1);
1610 SkPath::Iter iter(*path, false);
1611 SkPoint pts[4];
1612
1613 lua_newtable(L);
1614
1615 bool done = false;
1616 int i = 0;
1617 do {
1618 switch (iter.next(pts, true)) {
1619 case SkPath::kMove_Verb:
1620 setarray_string(L, ++i, "move");
1621 break;
1622 case SkPath::kClose_Verb:
1623 setarray_string(L, ++i, "close");
1624 break;
1625 case SkPath::kLine_Verb:
1626 setarray_string(L, ++i, "line");
1627 break;
1628 case SkPath::kQuad_Verb:
1629 setarray_string(L, ++i, "quad");
1630 break;
1631 case SkPath::kConic_Verb:
1632 setarray_string(L, ++i, "conic");
1633 break;
1634 case SkPath::kCubic_Verb:
1635 setarray_string(L, ++i, "cubic");
1636 break;
1637 case SkPath::kDone_Verb:
1638 setarray_string(L, ++i, "done");
1639 done = true;
1640 break;
1641 }
1642 } while (!done);
1643
1644 return 1;
1645 }
1646
1589 static int lpath_reset(lua_State* L) { 1647 static int lpath_reset(lua_State* L) {
1590 get_obj<SkPath>(L, 1)->reset(); 1648 get_obj<SkPath>(L, 1)->reset();
1591 return 0; 1649 return 0;
1592 } 1650 }
1593 1651
1594 static int lpath_moveTo(lua_State* L) { 1652 static int lpath_moveTo(lua_State* L) {
1595 get_obj<SkPath>(L, 1)->moveTo(lua2scalar(L, 2), lua2scalar(L, 3)); 1653 get_obj<SkPath>(L, 1)->moveTo(lua2scalar(L, 2), lua2scalar(L, 3));
1596 return 0; 1654 return 0;
1597 } 1655 }
1598 1656
(...skipping 22 matching lines...) Expand all
1621 1679
1622 static int lpath_gc(lua_State* L) { 1680 static int lpath_gc(lua_State* L) {
1623 get_obj<SkPath>(L, 1)->~SkPath(); 1681 get_obj<SkPath>(L, 1)->~SkPath();
1624 return 0; 1682 return 0;
1625 } 1683 }
1626 1684
1627 static const struct luaL_Reg gSkPath_Methods[] = { 1685 static const struct luaL_Reg gSkPath_Methods[] = {
1628 { "getBounds", lpath_getBounds }, 1686 { "getBounds", lpath_getBounds },
1629 { "getFillType", lpath_getFillType }, 1687 { "getFillType", lpath_getFillType },
1630 { "getSegmentTypes", lpath_getSegmentTypes }, 1688 { "getSegmentTypes", lpath_getSegmentTypes },
1689 { "getVerbs", lpath_getVerbs },
1631 { "isConvex", lpath_isConvex }, 1690 { "isConvex", lpath_isConvex },
1632 { "isEmpty", lpath_isEmpty }, 1691 { "isEmpty", lpath_isEmpty },
1633 { "isRect", lpath_isRect }, 1692 { "isRect", lpath_isRect },
1634 { "isNestedFillRects", lpath_isNestedFillRects }, 1693 { "isNestedFillRects", lpath_isNestedFillRects },
1635 { "countPoints", lpath_countPoints }, 1694 { "countPoints", lpath_countPoints },
1636 { "reset", lpath_reset }, 1695 { "reset", lpath_reset },
1637 { "moveTo", lpath_moveTo }, 1696 { "moveTo", lpath_moveTo },
1638 { "lineTo", lpath_lineTo }, 1697 { "lineTo", lpath_lineTo },
1639 { "quadTo", lpath_quadTo }, 1698 { "quadTo", lpath_quadTo },
1640 { "cubicTo", lpath_cubicTo }, 1699 { "cubicTo", lpath_cubicTo },
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
2135 REG_CLASS(L, SkTextBlob); 2194 REG_CLASS(L, SkTextBlob);
2136 REG_CLASS(L, SkTypeface); 2195 REG_CLASS(L, SkTypeface);
2137 REG_CLASS(L, SkXfermode); 2196 REG_CLASS(L, SkXfermode);
2138 } 2197 }
2139 2198
2140 extern "C" int luaopen_skia(lua_State* L); 2199 extern "C" int luaopen_skia(lua_State* L);
2141 extern "C" int luaopen_skia(lua_State* L) { 2200 extern "C" int luaopen_skia(lua_State* L) {
2142 SkLua::Load(L); 2201 SkLua::Load(L);
2143 return 0; 2202 return 0;
2144 } 2203 }
OLDNEW
« no previous file with comments | « no previous file | tools/lua/count_dashes.lua » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698