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 89e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.orgSkCanvas::SaveLayerStrategy SkLuaCanvas::willSaveLayer(const SkRect* bounds, const SkPaint* paint, 90e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org SaveFlags flags) { 911c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("saveLayer"); 921c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (bounds) { 9374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(*bounds, "bounds"); 941c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 951c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 9674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 971c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 98e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org 99e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org this->INHERITED::willSaveLayer(bounds, paint, flags); 100e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org // No need for a layer. 101e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org return kNoLayer_SaveLayerStrategy; 102dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 103dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 104e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.orgvoid SkLuaCanvas::willRestore() { 1051c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("restore"); 106e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org this->INHERITED::willRestore(); 107dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 108dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 10944c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.orgvoid SkLuaCanvas::didConcat(const SkMatrix& matrix) { 110d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org switch (matrix.getType()) { 111d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org case SkMatrix::kTranslate_Mask: { 112d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("translate"); 113d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getTranslateX(), "dx"); 114d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getTranslateY(), "dy"); 115d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 116d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 117d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org case SkMatrix::kScale_Mask: { 118d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("scale"); 119d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getScaleX(), "sx"); 120d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org lua.pushScalar(matrix.getScaleY(), "sy"); 121d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 122d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 123d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org default: { 124d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org AUTO_LUA("concat"); 125ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // pushMatrix added in https://codereview.chromium.org/203203004/ 126ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // Doesn't seem to have ever been working correctly since added 127ab885be21bfc389450e6194d0562493c658b3c36commit-bot@chromium.org // lua.pushMatrix(matrix); 128d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org break; 129d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 130d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org } 131d9ea09e1f29b303e6fa36079e99729d2951925b9commit-bot@chromium.org 13244c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org this->INHERITED::didConcat(matrix); 133dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 134dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 13544c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.orgvoid SkLuaCanvas::didSetMatrix(const SkMatrix& matrix) { 13644c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org this->INHERITED::didSetMatrix(matrix); 137dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 138dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1398f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRect(const SkRect& r, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1401c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRect"); 14174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(r, "rect"); 1428f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1438f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRect(r, op, edgeStyle); 144dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 145dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1468f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1471c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRRect"); 14874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRRect(rrect, "rrect"); 1498f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1508f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRRect(rrect, op, edgeStyle); 151dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 152dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1538f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 1541c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipPath"); 15574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 1568f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com lua.pushBool(kSoft_ClipEdgeStyle == edgeStyle, "aa"); 1578f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipPath(path, op, edgeStyle); 158dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 159dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1608f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.comvoid SkLuaCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) { 1611c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("clipRegion"); 1628f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com this->INHERITED::onClipRegion(deviceRgn, op); 163dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 164dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 165dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawPaint(const SkPaint& paint) { 1661c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPaint"); 16774ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 168dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 169dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 170dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawPoints(PointMode mode, size_t count, 171dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPoint pts[], const SkPaint& paint) { 1721c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPoints"); 1732cfa3200fda29279eba1240170c7e873d12f9d48commit-bot@chromium.org lua.pushArrayPoint(pts, SkToInt(count), "points"); 17474ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 175dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 176dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 177dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawOval(const SkRect& rect, const SkPaint& paint) { 1781c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawOval"); 17974ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(rect, "rect"); 18074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 181dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 182dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 1837ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.comvoid SkLuaCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { 1841c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawRect"); 18574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRect(rect, "rect"); 18674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 187dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 188dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 189dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) { 1901c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawRRect"); 19174ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushRRect(rrect, "rrect"); 19274ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 193dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 194dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 195ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.orgvoid SkLuaCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, 196ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org const SkPaint& paint) { 197ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org AUTO_LUA("drawDRRect"); 198ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushRRect(outer, "outer"); 199ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushRRect(inner, "inner"); 200ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org lua.pushPaint(paint, "paint"); 201ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org} 202ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.org 2037ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.comvoid SkLuaCanvas::drawPath(const SkPath& path, const SkPaint& paint) { 2041c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPath"); 20574ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 20674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 207dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 208dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 209dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, 210eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkPaint* paint) { 2111c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawBitmap"); 2121c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 21374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2141c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 215dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 216dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 217dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, 218eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkRect& dst, const SkPaint* paint, 219eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org DrawBitmapRectFlags flags) { 2201c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawBitmapRectToRect"); 2211c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 22274ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2231c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 224dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 225dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 226dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, 227eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkPaint* paint) { 2281c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawBitmapMatrix"); 2291c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 23074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2311c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 232dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 233dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 234dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, 235dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPaint* paint) { 2361c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawSprite"); 2371c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org if (paint) { 23874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(*paint, "paint"); 2391c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org } 240dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 241dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 242e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 243e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkPaint& paint) { 2441c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawText"); 245e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 24674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 247dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 248dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 249e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 250e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkPaint& paint) { 2511c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPosText"); 252e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 25374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 254dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 255dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 256e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 257e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com SkScalar constY, const SkPaint& paint) { 2581c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPosTextH"); 259e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 26074ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 261dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 262dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 263e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.comvoid SkLuaCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 264e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com const SkMatrix* matrix, const SkPaint& paint) { 2651c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawTextOnPath"); 26674ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPath(path, "path"); 267e3823fd901674e22269637a669ac2b3e2667dc9creed@google.com lua.pushEncodedText(paint.getTextEncoding(), text, byteLength); 26874ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 269dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 270dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 271b7425173f96e93b090787e2386ba5f022b6c2869fmalitavoid SkLuaCanvas::onDrawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, 272b7425173f96e93b090787e2386ba5f022b6c2869fmalita const SkPaint &paint) { 273b7425173f96e93b090787e2386ba5f022b6c2869fmalita AUTO_LUA("drawTextBlob"); 274b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushTextBlob(blob, "blob"); 275b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushScalar(x, "x"); 276b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushScalar(y, "y"); 277b7425173f96e93b090787e2386ba5f022b6c2869fmalita lua.pushPaint(paint, "paint"); 278b7425173f96e93b090787e2386ba5f022b6c2869fmalita} 279b7425173f96e93b090787e2386ba5f022b6c2869fmalita 280d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reedvoid SkLuaCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, 281d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed const SkPaint* paint) { 2821c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawPicture"); 283dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com // call through so we can see the nested picture ops 284d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed this->INHERITED::onDrawPicture(picture, matrix, paint); 285dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 286dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 287dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawVertices(VertexMode vmode, int vertexCount, 288dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPoint vertices[], const SkPoint texs[], 289dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkColor colors[], SkXfermode* xmode, 290dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const uint16_t indices[], int indexCount, 291dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com const SkPaint& paint) { 2921c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawVertices"); 29374ce6f046c8c8990172cebcfa830c8e5f5e42a1ereed@google.com lua.pushPaint(paint, "paint"); 294dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 295dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com 296dff7e11c2000d6745261de046d76b1500a05ece9reed@google.comvoid SkLuaCanvas::drawData(const void* data, size_t length) { 2971c5a94f5e01d0851bfeceb7d17ad7d693bdc899emike@reedtribe.org AUTO_LUA("drawData"); 298dff7e11c2000d6745261de046d76b1500a05ece9reed@google.com} 299