1dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com/* 2dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com * Copyright 2013 Google Inc. 3dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com * 4dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com * Use of this source code is governed by a BSD-style license that can be 5dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com * found in the LICENSE file. 6dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com */ 7dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 8dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com#include "SkLuaCanvas.h" 974ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com#include "SkLua.h" 10dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 11dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comextern "C" { 12dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com #include "lua.h" 13f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.org #include "lauxlib.h" 14dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 15dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.comclass AutoCallLua : public SkLua { 171c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.orgpublic: 1874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com AutoCallLua(lua_State* L, const char func[], const char verb[]) : INHERITED(L) { 191c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org lua_getglobal(L, func); 201c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (!lua_isfunction(L, -1)) { 211c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org int t = lua_type(L, -1); 221c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org SkDebugf("--- expected function %d\n", t); 231c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 24539f364e80a1e8ee35845b93fd6547e855380cadskia.committer@gmail.com 251c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org lua_newtable(L); 2674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com this->pushString(verb, "verb"); 27dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com } 28dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 291c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org ~AutoCallLua() { 303597b73bc6e3e169f1d360de80d77e6e0ab65e96reed@google.com lua_State* L = this->get(); 3174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com if (lua_pcall(L, 1, 0, 0) != LUA_OK) { 3274ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com SkDebugf("lua err: %s\n", lua_tostring(L, -1)); 331c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 3474ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua_settop(L, -1); 35dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com } 361c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org 37e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com void pushEncodedText(SkPaint::TextEncoding, const void*, size_t); 38e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com 391c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.orgprivate: 4074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com typedef SkLua INHERITED; 419a73104c1b2238aa816de4d1beea3b4f570cfea0reed@google.com}; 429a73104c1b2238aa816de4d1beea3b4f570cfea0reed@google.com 4374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com#define AUTO_LUA(verb) AutoCallLua lua(fL, fFunc.c_str(), verb) 449a73104c1b2238aa816de4d1beea3b4f570cfea0reed@google.com 45e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com 46e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com/////////////////////////////////////////////////////////////////////////////// 47e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com 48e3823fd901674e22269637a669ac2b3e2667dc9creed@google.comvoid AutoCallLua::pushEncodedText(SkPaint::TextEncoding enc, const void* text, 49e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com size_t length) { 50e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com switch (enc) { 51e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com case SkPaint::kUTF8_TextEncoding: 52e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com this->pushString((const char*)text, length, "text"); 53e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com break; 54e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com case SkPaint::kUTF16_TextEncoding: { 55e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com SkString str; 56e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com str.setUTF16((const uint16_t*)text, length); 57e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com this->pushString(str, "text"); 58e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com } break; 59e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com case SkPaint::kGlyphID_TextEncoding: 607fa2a65c0cfc714364490cb715171461143024e0reed@google.com this->pushArrayU16((const uint16_t*)text, SkToInt(length >> 1), 617fa2a65c0cfc714364490cb715171461143024e0reed@google.com "glyphs"); 62e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com break; 63e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com case SkPaint::kUTF32_TextEncoding: 64e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com break; 65e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com } 66e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com} 67e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com 689a73104c1b2238aa816de4d1beea3b4f570cfea0reed@google.com/////////////////////////////////////////////////////////////////////////////// 699a73104c1b2238aa816de4d1beea3b4f570cfea0reed@google.com 70f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.orgvoid SkLuaCanvas::pushThis() { 7174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com SkLua(fL).pushCanvas(this); 72f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.org} 73f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.org 74f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.org/////////////////////////////////////////////////////////////////////////////// 75f02fe3d4fec9120da009c941d14af66980911a4emike@reedtribe.org 76dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comSkLuaCanvas::SkLuaCanvas(int width, int height, lua_State* L, const char func[]) 77e254310a55d55a710309714c48f7fbbe7a6126f7commit-bot@chromium.org : INHERITED(width, height) 78dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com , fL(L) 79dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com , fFunc(func) { 80dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 81dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 82dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comSkLuaCanvas::~SkLuaCanvas() {} 83dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 845f6102d07982043542343ff0a6c67b1319ac9fc7Florin Malitavoid SkLuaCanvas::willSave() { 851c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("save"); 865f6102d07982043542343ff0a6c67b1319ac9fc7Florin Malita this->INHERITED::willSave(); 87dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 88dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 894960eeec4a1f2a772654883d7f3615d47bcd5dc3reedSkCanvas::SaveLayerStrategy SkLuaCanvas::getSaveLayerStrategy(const SaveLayerRec& rec) { 901c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("saveLayer"); 914960eeec4a1f2a772654883d7f3615d47bcd5dc3reed if (rec.fBounds) { 924960eeec4a1f2a772654883d7f3615d47bcd5dc3reed lua.pushRect(*rec.fBounds, "bounds"); 931c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 944960eeec4a1f2a772654883d7f3615d47bcd5dc3reed if (rec.fPaint) { 954960eeec4a1f2a772654883d7f3615d47bcd5dc3reed lua.pushPaint(*rec.fPaint, "paint"); 961c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 97e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org 984960eeec4a1f2a772654883d7f3615d47bcd5dc3reed (void)this->INHERITED::getSaveLayerStrategy(rec); 99e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org // No need for a layer. 100e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org return kNoLayer_SaveLayerStrategy; 101dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 102dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 103e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.orgvoid SkLuaCanvas::willRestore() { 1041c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("restore"); 105e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org this->INHERITED::willRestore(); 106dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 107dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 10844c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.orgvoid SkLuaCanvas::didConcat(const SkMatrix& matrix) { 109d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org switch (matrix.getType()) { 110d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org case SkMatrix::kTranslate_Mask: { 111d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("translate"); 112d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getTranslateX(), "dx"); 113d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getTranslateY(), "dy"); 114d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 115d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 116d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org case SkMatrix::kScale_Mask: { 117d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("scale"); 118d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getScaleX(), "sx"); 119d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getScaleY(), "sy"); 120d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 121d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 122d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org default: { 123d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("concat"); 124ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // pushMatrix added in https://codereview.chromium.org/203203004/ 125ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // Doesn't seem to have ever been working correctly since added 126ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // lua.pushMatrix(matrix); 127d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 128d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 129d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 130d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org 13144c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org this->INHERITED::didConcat(matrix); 132dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 133dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 13444c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.orgvoid SkLuaCanvas::didSetMatrix(const SkMatrix& matrix) { 13544c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org this->INHERITED::didSetMatrix(matrix); 136dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 137dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1388f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRect(const SkRect& r, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1391c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRect"); 14074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(r, "rect"); 1418f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1428f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRect(r, op, edgeStyle); 143dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 144dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1458f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1461c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRRect"); 14774ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRRect(rrect, "rrect"); 1488f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1498f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRRect(rrect, op, edgeStyle); 150dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 151dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1528f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1531c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipPath"); 15474ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 1558f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1568f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipPath(path, op, edgeStyle); 157dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 158dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1598f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) { 1601c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRegion"); 1618f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRegion(deviceRgn, op); 162dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 163dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 16441af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawPaint(const SkPaint& paint) { 1651c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPaint"); 16674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 167dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 168dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 16941af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawPoints(PointMode mode, size_t count, 170dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPoint pts[], const SkPaint& paint) { 1711c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPoints"); 1722cfa3200fda29279eba1240170c7e873d12f9d48commit-bot@chromium.org lua.pushArrayPoint(pts, SkToInt(count), "points"); 17374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 174dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 175dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 17641af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawOval(const SkRect& rect, const SkPaint& paint) { 1771c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawOval"); 17874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(rect, "rect"); 17974ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 180dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 181dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 18241af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) { 1831c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawRect"); 18474ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(rect, "rect"); 18574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 186dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 187dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 18841af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawRRect(const SkRRect& rrect, const SkPaint& paint) { 1891c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawRRect"); 19074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRRect(rrect, "rrect"); 19174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 192dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 193dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 194ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.orgvoid SkLuaCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, 195ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org const SkPaint& paint) { 196ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org AUTO_LUA("drawDRRect"); 197ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushRRect(outer, "outer"); 198ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushRRect(inner, "inner"); 199ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushPaint(paint, "paint"); 200ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org} 201ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org 20241af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) { 2031c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPath"); 20474ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 20574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 206dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 207dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 20841af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, 20941af966ab338e95eee81ab618ab28195075338f7reed const SkPaint* paint) { 2101c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawBitmap"); 2111c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 21274ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2131c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 214dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 215dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 21641af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, 217562fe4767cc73e08a4e039362bc0336aea66ecfbreed const SkPaint* paint, SrcRectConstraint) { 21841af966ab338e95eee81ab618ab28195075338f7reed AUTO_LUA("drawBitmapRect"); 2191c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 22074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2211c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 222dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 223dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 22441af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, 22541af966ab338e95eee81ab618ab28195075338f7reed const SkPaint* paint) { 22641af966ab338e95eee81ab618ab28195075338f7reed AUTO_LUA("drawBitmapNine"); 22741af966ab338e95eee81ab618ab28195075338f7reed if (paint) { 22841af966ab338e95eee81ab618ab28195075338f7reed lua.pushPaint(*paint, "paint"); 22941af966ab338e95eee81ab618ab28195075338f7reed } 23041af966ab338e95eee81ab618ab28195075338f7reed} 23141af966ab338e95eee81ab618ab28195075338f7reed 23241af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawImage(const SkImage* image, SkScalar x, SkScalar y, const SkPaint* paint) { 23341af966ab338e95eee81ab618ab28195075338f7reed AUTO_LUA("drawImage"); 23441af966ab338e95eee81ab618ab28195075338f7reed if (paint) { 23541af966ab338e95eee81ab618ab28195075338f7reed lua.pushPaint(*paint, "paint"); 23641af966ab338e95eee81ab618ab28195075338f7reed } 23741af966ab338e95eee81ab618ab28195075338f7reed} 23841af966ab338e95eee81ab618ab28195075338f7reed 23941af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const SkRect& dst, 240562fe4767cc73e08a4e039362bc0336aea66ecfbreed const SkPaint* paint, SrcRectConstraint) { 24141af966ab338e95eee81ab618ab28195075338f7reed AUTO_LUA("drawImageRect"); 24241af966ab338e95eee81ab618ab28195075338f7reed if (paint) { 24341af966ab338e95eee81ab618ab28195075338f7reed lua.pushPaint(*paint, "paint"); 24441af966ab338e95eee81ab618ab28195075338f7reed } 24541af966ab338e95eee81ab618ab28195075338f7reed} 24641af966ab338e95eee81ab618ab28195075338f7reed 247e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 248e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkPaint& paint) { 2491c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawText"); 250e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 25174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 252dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 253dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 254e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 255e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkPaint& paint) { 2561c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPosText"); 257e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 25874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 259dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 260dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 261e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 262e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com SkScalar constY, const SkPaint& paint) { 2631c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPosTextH"); 264e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 26574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 266dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 267dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 268e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 269e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkMatrix* matrix, const SkPaint& paint) { 2701c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawTextOnPath"); 27174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 272e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 27374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 274dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 275dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 276b7425173f96e93b090787e2386ba5f022b6c2869fmalitavoid SkLuaCanvas::onDrawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, 277b7425173f96e93b090787e2386ba5f022b6c2869fmalita const SkPaint &paint) { 278b7425173f96e93b090787e2386ba5f022b6c2869fmalita AUTO_LUA("drawTextBlob"); 279b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushTextBlob(blob, "blob"); 280b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushScalar(x, "x"); 281b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushScalar(y, "y"); 282b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushPaint(paint, "paint"); 283b7425173f96e93b090787e2386ba5f022b6c2869fmalita} 284b7425173f96e93b090787e2386ba5f022b6c2869fmalita 285d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reedvoid SkLuaCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, 286d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed const SkPaint* paint) { 2871c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPicture"); 288dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com // call through so we can see the nested picture ops 289d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed this->INHERITED::onDrawPicture(picture, matrix, paint); 290dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 291dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 29241af966ab338e95eee81ab618ab28195075338f7reedvoid SkLuaCanvas::onDrawVertices(VertexMode vmode, int vertexCount, 293dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPoint vertices[], const SkPoint texs[], 294dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkColor colors[], SkXfermode* xmode, 295dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const uint16_t indices[], int indexCount, 296dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPaint& paint) { 2971c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawVertices"); 29874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 299dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 300