Lines Matching +full:- +full:l
4 * Use of this source code is governed by a BSD-style license that can be
70 template <typename T, typename... Args> T* push_new(lua_State* L, Args&&... args) { in DEF_MTNAME()
71 T* addr = (T*)lua_newuserdata(L, sizeof(T)); in DEF_MTNAME()
73 luaL_getmetatable(L, get_mtname<T>()); in DEF_MTNAME()
74 lua_setmetatable(L, -2); in DEF_MTNAME()
78 template <typename T> void push_obj(lua_State* L, const T& obj) { in push_obj() argument
79 new (lua_newuserdata(L, sizeof(T))) T(obj); in push_obj()
80 luaL_getmetatable(L, get_mtname<T>()); in push_obj()
81 lua_setmetatable(L, -2); in push_obj()
84 template <typename T> T* push_ptr(lua_State* L, T* ptr) { in push_ptr() argument
85 *(T**)lua_newuserdata(L, sizeof(T*)) = ptr; in push_ptr()
86 luaL_getmetatable(L, get_mtname<T>()); in push_ptr()
87 lua_setmetatable(L, -2); in push_ptr()
91 template <typename T> T* push_ref(lua_State* L, T* ref) { in push_ref() argument
92 *(T**)lua_newuserdata(L, sizeof(T*)) = SkSafeRef(ref); in push_ref()
93 luaL_getmetatable(L, get_mtname<T>()); in push_ref()
94 lua_setmetatable(L, -2); in push_ref()
98 template <typename T> void push_ref(lua_State* L, sk_sp<T> sp) { in push_ref() argument
99 *(T**)lua_newuserdata(L, sizeof(T*)) = sp.release(); in push_ref()
100 luaL_getmetatable(L, get_mtname<T>()); in push_ref()
101 lua_setmetatable(L, -2); in push_ref()
104 template <typename T> T* get_ref(lua_State* L, int index) { in get_ref() argument
105 return *(T**)luaL_checkudata(L, index, get_mtname<T>()); in get_ref()
108 template <typename T> T* get_obj(lua_State* L, int index) { in get_obj() argument
109 return (T*)luaL_checkudata(L, index, get_mtname<T>()); in get_obj()
112 static bool lua2bool(lua_State* L, int index) { in lua2bool() argument
113 return !!lua_toboolean(L, index); in lua2bool()
124 SkLua::SkLua(lua_State* L) : fL(L), fWeOwnL(false) {} in SkLua() argument
131 SkDebugf("lua err: %s\n", lua_tostring(fL, -1)); in ~SkLua()
141 SkDebugf("--- lua failed: %s\n", lua_tostring(fL, -1)); in runCode()
149 return this->runCode(str.c_str()); in runCode()
154 #define CHECK_SETFIELD(key) do if (key) lua_setfield(fL, -2, key); while (0)
156 static void setfield_bool_if(lua_State* L, const char key[], bool pred) { in setfield_bool_if() argument
158 lua_pushboolean(L, true); in setfield_bool_if()
159 lua_setfield(L, -2, key); in setfield_bool_if()
163 static void setfield_string(lua_State* L, const char key[], const char value[]) { in setfield_string() argument
164 lua_pushstring(L, value); in setfield_string()
165 lua_setfield(L, -2, key); in setfield_string()
168 static void setfield_number(lua_State* L, const char key[], double value) { in setfield_number() argument
169 lua_pushnumber(L, value); in setfield_number()
170 lua_setfield(L, -2, key); in setfield_number()
173 static void setfield_boolean(lua_State* L, const char key[], bool value) { in setfield_boolean() argument
174 lua_pushboolean(L, value); in setfield_boolean()
175 lua_setfield(L, -2, key); in setfield_boolean()
178 static void setfield_scalar(lua_State* L, const char key[], SkScalar value) { in setfield_scalar() argument
179 setfield_number(L, key, SkScalarToLua(value)); in setfield_scalar()
182 static void setfield_function(lua_State* L, in setfield_function() argument
184 lua_pushcfunction(L, value); in setfield_function()
185 lua_setfield(L, -2, key); in setfield_function()
188 static int lua2int_def(lua_State* L, int index, int defaultValue) { in lua2int_def() argument
189 if (lua_isnumber(L, index)) { in lua2int_def()
190 return (int)lua_tonumber(L, index); in lua2int_def()
196 static SkScalar lua2scalar(lua_State* L, int index) { in lua2scalar() argument
197 SkASSERT(lua_isnumber(L, index)); in lua2scalar()
198 return SkLuaToScalar(lua_tonumber(L, index)); in lua2scalar()
201 static SkScalar lua2scalar_def(lua_State* L, int index, SkScalar defaultValue) { in lua2scalar_def() argument
202 if (lua_isnumber(L, index)) { in lua2scalar_def()
203 return SkLuaToScalar(lua_tonumber(L, index)); in lua2scalar_def()
209 static SkScalar getarray_scalar(lua_State* L, int stackIndex, int arrayIndex) { in getarray_scalar() argument
210 SkASSERT(lua_istable(L, stackIndex)); in getarray_scalar()
211 lua_rawgeti(L, stackIndex, arrayIndex); in getarray_scalar()
213 SkScalar value = lua2scalar(L, -1); in getarray_scalar()
214 lua_pop(L, 1); in getarray_scalar()
218 static void getarray_scalars(lua_State* L, int stackIndex, SkScalar dst[], int count) { in getarray_scalars() argument
220 dst[i] = getarray_scalar(L, stackIndex, i + 1); in getarray_scalars()
224 static void getarray_points(lua_State* L, int stackIndex, SkPoint pts[], int count) { in getarray_points() argument
225 getarray_scalars(L, stackIndex, &pts[0].fX, count * 2); in getarray_points()
228 static void setarray_number(lua_State* L, int index, double value) { in setarray_number() argument
229 lua_pushnumber(L, value); in setarray_number()
230 lua_rawseti(L, -2, index); in setarray_number()
233 static void setarray_scalar(lua_State* L, int index, SkScalar value) { in setarray_scalar() argument
234 setarray_number(L, index, SkScalarToLua(value)); in setarray_scalar()
237 static void setarray_string(lua_State* L, int index, const char str[]) { in setarray_string() argument
238 lua_pushstring(L, str); in setarray_string()
239 lua_rawseti(L, -2, index); in setarray_string()
286 // make it base-1 to match lua convention in pushArrayU16()
295 // make it base-1 to match lua convention in pushArrayPoint()
297 this->pushScalar(array[i].fX, "x"); in pushArrayPoint()
298 this->pushScalar(array[i].fY, "y"); in pushArrayPoint()
299 lua_rawseti(fL, -2, i + 1); in pushArrayPoint()
307 // make it base-1 to match lua convention in pushArrayScalar()
330 this->pushArrayScalar(info.fIntervals, info.fCount, "intervals"); in pushDash()
363 static SkScalar getfield_scalar(lua_State* L, int index, const char key[]) { in getfield_scalar() argument
364 SkASSERT(lua_istable(L, index)); in getfield_scalar()
365 lua_pushstring(L, key); in getfield_scalar()
366 lua_gettable(L, index); in getfield_scalar()
368 SkScalar value = lua2scalar(L, -1); in getfield_scalar()
369 lua_pop(L, 1); in getfield_scalar()
373 static SkScalar getfield_scalar_default(lua_State* L, int index, const char key[], SkScalar def) { in getfield_scalar_default() argument
374 SkASSERT(lua_istable(L, index)); in getfield_scalar_default()
375 lua_pushstring(L, key); in getfield_scalar_default()
376 lua_gettable(L, index); in getfield_scalar_default()
379 if (lua_isnil(L, -1)) { in getfield_scalar_default()
382 value = lua2scalar(L, -1); in getfield_scalar_default()
384 lua_pop(L, 1); in getfield_scalar_default()
402 static SkColor lua2color(lua_State* L, int index) { in lua2color() argument
403 return SkColorSetARGB(unit2byte(getfield_scalar_default(L, index, "a", 1)), in lua2color()
404 unit2byte(getfield_scalar_default(L, index, "r", 0)), in lua2color()
405 unit2byte(getfield_scalar_default(L, index, "g", 0)), in lua2color()
406 unit2byte(getfield_scalar_default(L, index, "b", 0))); in lua2color()
409 static SkRect* lua2rect(lua_State* L, int index, SkRect* rect) { in lua2rect() argument
410 rect->set(getfield_scalar_default(L, index, "left", 0), in lua2rect()
411 getfield_scalar_default(L, index, "top", 0), in lua2rect()
412 getfield_scalar(L, index, "right"), in lua2rect()
413 getfield_scalar(L, index, "bottom")); in lua2rect()
417 static int lcanvas_clear(lua_State* L) { in lcanvas_clear() argument
418 get_ref<SkCanvas>(L, 1)->clear(0); in lcanvas_clear()
422 static int lcanvas_drawColor(lua_State* L) { in lcanvas_drawColor() argument
423 get_ref<SkCanvas>(L, 1)->drawColor(lua2color(L, 2)); in lcanvas_drawColor()
427 static int lcanvas_drawPaint(lua_State* L) { in lcanvas_drawPaint() argument
428 get_ref<SkCanvas>(L, 1)->drawPaint(*get_obj<SkPaint>(L, 2)); in lcanvas_drawPaint()
432 static int lcanvas_drawRect(lua_State* L) { in lcanvas_drawRect() argument
434 lua2rect(L, 2, &rect); in lcanvas_drawRect()
435 const SkPaint* paint = get_obj<SkPaint>(L, 3); in lcanvas_drawRect()
436 get_ref<SkCanvas>(L, 1)->drawRect(rect, *paint); in lcanvas_drawRect()
440 static int lcanvas_drawOval(lua_State* L) { in lcanvas_drawOval() argument
442 get_ref<SkCanvas>(L, 1)->drawOval(*lua2rect(L, 2, &rect), in lcanvas_drawOval()
443 *get_obj<SkPaint>(L, 3)); in lcanvas_drawOval()
447 static int lcanvas_drawCircle(lua_State* L) { in lcanvas_drawCircle() argument
448 get_ref<SkCanvas>(L, 1)->drawCircle(lua2scalar(L, 2), in lcanvas_drawCircle()
449 lua2scalar(L, 3), in lcanvas_drawCircle()
450 lua2scalar(L, 4), in lcanvas_drawCircle()
451 *get_obj<SkPaint>(L, 5)); in lcanvas_drawCircle()
455 static SkPaint* lua2OptionalPaint(lua_State* L, int index, SkPaint* paint) { in lua2OptionalPaint() argument
456 if (lua_isnumber(L, index)) { in lua2OptionalPaint()
457 paint->setAlpha(SkScalarRoundToInt(lua2scalar(L, index) * 255)); in lua2OptionalPaint()
459 } else if (lua_isuserdata(L, index)) { in lua2OptionalPaint()
460 const SkPaint* ptr = get_obj<SkPaint>(L, index); in lua2OptionalPaint()
469 static int lcanvas_drawImage(lua_State* L) { in lcanvas_drawImage() argument
470 SkCanvas* canvas = get_ref<SkCanvas>(L, 1); in lcanvas_drawImage()
471 SkImage* image = get_ref<SkImage>(L, 2); in lcanvas_drawImage()
475 SkScalar x = lua2scalar(L, 3); in lcanvas_drawImage()
476 SkScalar y = lua2scalar(L, 4); in lcanvas_drawImage()
479 canvas->drawImage(image, x, y, lua2OptionalPaint(L, 5, &paint)); in lcanvas_drawImage()
483 static int lcanvas_drawImageRect(lua_State* L) { in lcanvas_drawImageRect() argument
484 SkCanvas* canvas = get_ref<SkCanvas>(L, 1); in lcanvas_drawImageRect()
485 SkImage* image = get_ref<SkImage>(L, 2); in lcanvas_drawImageRect()
492 if (!lua_isnil(L, 3)) { in lcanvas_drawImageRect()
493 srcRPtr = lua2rect(L, 3, &srcR); in lcanvas_drawImageRect()
495 lua2rect(L, 4, &dstR); in lcanvas_drawImageRect()
498 canvas->legacy_drawImageRect(image, srcRPtr, dstR, lua2OptionalPaint(L, 5, &paint)); in lcanvas_drawImageRect()
502 static int lcanvas_drawPatch(lua_State* L) { in lcanvas_drawPatch() argument
510 getarray_points(L, 2, cubics, 12); in lcanvas_drawPatch()
517 if (lua_isnil(L, 4)) { in lcanvas_drawPatch()
520 getarray_points(L, 4, texStorage, 4); in lcanvas_drawPatch()
524 get_ref<SkCanvas>(L, 1)->drawPatch(cubics, colors, texs, *get_obj<SkPaint>(L, 5)); in lcanvas_drawPatch()
528 static int lcanvas_drawPath(lua_State* L) { in lcanvas_drawPath() argument
529 get_ref<SkCanvas>(L, 1)->drawPath(*get_obj<SkPath>(L, 2), in lcanvas_drawPath()
530 *get_obj<SkPaint>(L, 3)); in lcanvas_drawPath()
535 static int lcanvas_drawPicture(lua_State* L) { in lcanvas_drawPicture() argument
536 SkCanvas* canvas = get_ref<SkCanvas>(L, 1); in lcanvas_drawPicture()
537 SkPicture* picture = get_ref<SkPicture>(L, 2); in lcanvas_drawPicture()
538 SkScalar x = lua2scalar_def(L, 3, 0); in lcanvas_drawPicture()
539 SkScalar y = lua2scalar_def(L, 4, 0); in lcanvas_drawPicture()
546 canvas->drawPicture(picture, matrixPtr, lua2OptionalPaint(L, 5, &paint)); in lcanvas_drawPicture()
550 static int lcanvas_drawText(lua_State* L) { in lcanvas_drawText() argument
551 if (lua_gettop(L) < 5) { in lcanvas_drawText()
555 if (lua_isstring(L, 2) && lua_isnumber(L, 3) && lua_isnumber(L, 4)) { in lcanvas_drawText()
557 const char* text = lua_tolstring(L, 2, &len); in lcanvas_drawText()
558 get_ref<SkCanvas>(L, 1)->drawText(text, len, in lcanvas_drawText()
559 lua2scalar(L, 3), lua2scalar(L, 4), in lcanvas_drawText()
560 *get_obj<SkPaint>(L, 5)); in lcanvas_drawText()
565 static int lcanvas_drawTextBlob(lua_State* L) { in lcanvas_drawTextBlob() argument
566 const SkTextBlob* blob = get_ref<SkTextBlob>(L, 2); in lcanvas_drawTextBlob()
567 SkScalar x = lua2scalar(L, 3); in lcanvas_drawTextBlob()
568 SkScalar y = lua2scalar(L, 4); in lcanvas_drawTextBlob()
569 const SkPaint& paint = *get_obj<SkPaint>(L, 5); in lcanvas_drawTextBlob()
570 get_ref<SkCanvas>(L, 1)->drawTextBlob(blob, x, y, paint); in lcanvas_drawTextBlob()
574 static int lcanvas_getSaveCount(lua_State* L) { in lcanvas_getSaveCount() argument
575 lua_pushnumber(L, get_ref<SkCanvas>(L, 1)->getSaveCount()); in lcanvas_getSaveCount()
579 static int lcanvas_getTotalMatrix(lua_State* L) { in lcanvas_getTotalMatrix() argument
580 SkLua(L).pushMatrix(get_ref<SkCanvas>(L, 1)->getTotalMatrix()); in lcanvas_getTotalMatrix()
584 static int lcanvas_save(lua_State* L) { in lcanvas_save() argument
585 lua_pushinteger(L, get_ref<SkCanvas>(L, 1)->save()); in lcanvas_save()
589 static int lcanvas_saveLayer(lua_State* L) { in lcanvas_saveLayer() argument
591 … lua_pushinteger(L, get_ref<SkCanvas>(L, 1)->saveLayer(nullptr, lua2OptionalPaint(L, 2, &paint))); in lcanvas_saveLayer()
595 static int lcanvas_restore(lua_State* L) { in lcanvas_restore() argument
596 get_ref<SkCanvas>(L, 1)->restore(); in lcanvas_restore()
600 static int lcanvas_scale(lua_State* L) { in lcanvas_scale() argument
601 SkScalar sx = lua2scalar_def(L, 2, 1); in lcanvas_scale()
602 SkScalar sy = lua2scalar_def(L, 3, sx); in lcanvas_scale()
603 get_ref<SkCanvas>(L, 1)->scale(sx, sy); in lcanvas_scale()
607 static int lcanvas_translate(lua_State* L) { in lcanvas_translate() argument
608 SkScalar tx = lua2scalar_def(L, 2, 0); in lcanvas_translate()
609 SkScalar ty = lua2scalar_def(L, 3, 0); in lcanvas_translate()
610 get_ref<SkCanvas>(L, 1)->translate(tx, ty); in lcanvas_translate()
614 static int lcanvas_rotate(lua_State* L) { in lcanvas_rotate() argument
615 SkScalar degrees = lua2scalar_def(L, 2, 0); in lcanvas_rotate()
616 get_ref<SkCanvas>(L, 1)->rotate(degrees); in lcanvas_rotate()
620 static int lcanvas_concat(lua_State* L) { in lcanvas_concat() argument
621 get_ref<SkCanvas>(L, 1)->concat(*get_obj<SkMatrix>(L, 2)); in lcanvas_concat()
625 static int lcanvas_newSurface(lua_State* L) { in lcanvas_newSurface() argument
626 int width = lua2int_def(L, 2, 0); in lcanvas_newSurface()
627 int height = lua2int_def(L, 3, 0); in lcanvas_newSurface()
629 auto surface = get_ref<SkCanvas>(L, 1)->makeSurface(info); in lcanvas_newSurface()
631 lua_pushnil(L); in lcanvas_newSurface()
633 push_ref(L, surface); in lcanvas_newSurface()
638 static int lcanvas_gc(lua_State* L) { in lcanvas_gc() argument
675 static int ldocument_beginPage(lua_State* L) { in ldocument_beginPage() argument
677 push_ptr(L, get_obj<DocHolder>(L, 1)->fDoc->beginPage(lua2scalar(L, 2), in ldocument_beginPage()
678 lua2scalar(L, 3), in ldocument_beginPage()
683 static int ldocument_endPage(lua_State* L) { in ldocument_endPage() argument
684 get_obj<DocHolder>(L, 1)->fDoc->endPage(); in ldocument_endPage()
688 static int ldocument_close(lua_State* L) { in ldocument_close() argument
689 get_obj<DocHolder>(L, 1)->fDoc->close(); in ldocument_close()
693 static int ldocument_gc(lua_State* L) { in ldocument_gc() argument
694 get_obj<DocHolder>(L, 1)->~DocHolder(); in ldocument_gc()
708 static int lpaint_isAntiAlias(lua_State* L) { in lpaint_isAntiAlias() argument
709 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isAntiAlias()); in lpaint_isAntiAlias()
713 static int lpaint_setAntiAlias(lua_State* L) { in lpaint_setAntiAlias() argument
714 get_obj<SkPaint>(L, 1)->setAntiAlias(lua2bool(L, 2)); in lpaint_setAntiAlias()
718 static int lpaint_isDither(lua_State* L) { in lpaint_isDither() argument
719 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isDither()); in lpaint_isDither()
723 static int lpaint_setDither(lua_State* L) { in lpaint_setDither() argument
724 get_obj<SkPaint>(L, 1)->setDither(lua2bool(L, 2)); in lpaint_setDither()
728 static int lpaint_isFakeBoldText(lua_State* L) { in lpaint_isFakeBoldText() argument
729 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isFakeBoldText()); in lpaint_isFakeBoldText()
733 static int lpaint_isLinearText(lua_State* L) { in lpaint_isLinearText() argument
734 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isLinearText()); in lpaint_isLinearText()
738 static int lpaint_isSubpixelText(lua_State* L) { in lpaint_isSubpixelText() argument
739 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isSubpixelText()); in lpaint_isSubpixelText()
743 static int lpaint_setSubpixelText(lua_State* L) { in lpaint_setSubpixelText() argument
744 get_obj<SkPaint>(L, 1)->setSubpixelText(lua2bool(L, 2)); in lpaint_setSubpixelText()
748 static int lpaint_isDevKernText(lua_State* L) { in lpaint_isDevKernText() argument
749 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isDevKernText()); in lpaint_isDevKernText()
753 static int lpaint_isLCDRenderText(lua_State* L) { in lpaint_isLCDRenderText() argument
754 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isLCDRenderText()); in lpaint_isLCDRenderText()
758 static int lpaint_setLCDRenderText(lua_State* L) { in lpaint_setLCDRenderText() argument
759 get_obj<SkPaint>(L, 1)->setLCDRenderText(lua2bool(L, 2)); in lpaint_setLCDRenderText()
763 static int lpaint_isEmbeddedBitmapText(lua_State* L) { in lpaint_isEmbeddedBitmapText() argument
764 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isEmbeddedBitmapText()); in lpaint_isEmbeddedBitmapText()
768 static int lpaint_isAutohinted(lua_State* L) { in lpaint_isAutohinted() argument
769 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isAutohinted()); in lpaint_isAutohinted()
773 static int lpaint_isVerticalText(lua_State* L) { in lpaint_isVerticalText() argument
774 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isVerticalText()); in lpaint_isVerticalText()
778 static int lpaint_getAlpha(lua_State* L) { in lpaint_getAlpha() argument
779 SkLua(L).pushScalar(byte2unit(get_obj<SkPaint>(L, 1)->getAlpha())); in lpaint_getAlpha()
783 static int lpaint_setAlpha(lua_State* L) { in lpaint_setAlpha() argument
784 get_obj<SkPaint>(L, 1)->setAlpha(unit2byte(lua2scalar(L, 2))); in lpaint_setAlpha()
788 static int lpaint_getColor(lua_State* L) { in lpaint_getColor() argument
789 SkLua(L).pushColor(get_obj<SkPaint>(L, 1)->getColor()); in lpaint_getColor()
793 static int lpaint_setColor(lua_State* L) { in lpaint_setColor() argument
794 get_obj<SkPaint>(L, 1)->setColor(lua2color(L, 2)); in lpaint_setColor()
798 static int lpaint_getTextSize(lua_State* L) { in lpaint_getTextSize() argument
799 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getTextSize()); in lpaint_getTextSize()
803 static int lpaint_getTextScaleX(lua_State* L) { in lpaint_getTextScaleX() argument
804 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getTextScaleX()); in lpaint_getTextScaleX()
808 static int lpaint_getTextSkewX(lua_State* L) { in lpaint_getTextSkewX() argument
809 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getTextSkewX()); in lpaint_getTextSkewX()
813 static int lpaint_setTextSize(lua_State* L) { in lpaint_setTextSize() argument
814 get_obj<SkPaint>(L, 1)->setTextSize(lua2scalar(L, 2)); in lpaint_setTextSize()
818 static int lpaint_getTypeface(lua_State* L) { in lpaint_getTypeface() argument
819 push_ref(L, get_obj<SkPaint>(L, 1)->getTypeface()); in lpaint_getTypeface()
823 static int lpaint_setTypeface(lua_State* L) { in lpaint_setTypeface() argument
824 get_obj<SkPaint>(L, 1)->setTypeface(sk_ref_sp(get_ref<SkTypeface>(L, 2))); in lpaint_setTypeface()
828 static int lpaint_getHinting(lua_State* L) { in lpaint_getHinting() argument
829 SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getHinting()); in lpaint_getHinting()
833 static int lpaint_getFilterQuality(lua_State* L) { in lpaint_getFilterQuality() argument
834 SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getFilterQuality()); in lpaint_getFilterQuality()
838 static int lpaint_setFilterQuality(lua_State* L) { in lpaint_setFilterQuality() argument
839 int level = lua2int_def(L, 2, -1); in lpaint_setFilterQuality()
841 get_obj<SkPaint>(L, 1)->setFilterQuality((SkFilterQuality)level); in lpaint_setFilterQuality()
846 static int lpaint_getFontID(lua_State* L) { in lpaint_getFontID() argument
847 SkTypeface* face = get_obj<SkPaint>(L, 1)->getTypeface(); in lpaint_getFontID()
848 SkLua(L).pushU32(SkTypeface::UniqueID(face)); in lpaint_getFontID()
861 static int lpaint_getTextAlign(lua_State* L) { in lpaint_getTextAlign() argument
862 SkPaint::Align align = get_obj<SkPaint>(L, 1)->getTextAlign(); in lpaint_getTextAlign()
865 lua_pushstring(L, gAlignRec[i].fLabel); in lpaint_getTextAlign()
872 static int lpaint_setTextAlign(lua_State* L) { in lpaint_setTextAlign() argument
873 if (lua_isstring(L, 2)) { in lpaint_setTextAlign()
875 const char* label = lua_tolstring(L, 2, &len); in lpaint_setTextAlign()
879 get_obj<SkPaint>(L, 1)->setTextAlign(gAlignRec[i].fAlign); in lpaint_setTextAlign()
887 static int lpaint_getStroke(lua_State* L) { in lpaint_getStroke() argument
888 lua_pushboolean(L, SkPaint::kStroke_Style == get_obj<SkPaint>(L, 1)->getStyle()); in lpaint_getStroke()
892 static int lpaint_setStroke(lua_State* L) { in lpaint_setStroke() argument
895 if (lua_toboolean(L, 2)) { in lpaint_setStroke()
900 get_obj<SkPaint>(L, 1)->setStyle(style); in lpaint_setStroke()
904 static int lpaint_getStrokeCap(lua_State* L) { in lpaint_getStrokeCap() argument
905 SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getStrokeCap()); in lpaint_getStrokeCap()
909 static int lpaint_getStrokeJoin(lua_State* L) { in lpaint_getStrokeJoin() argument
910 SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getStrokeJoin()); in lpaint_getStrokeJoin()
914 static int lpaint_getTextEncoding(lua_State* L) { in lpaint_getTextEncoding() argument
915 SkLua(L).pushU32(get_obj<SkPaint>(L, 1)->getTextEncoding()); in lpaint_getTextEncoding()
919 static int lpaint_getStrokeWidth(lua_State* L) { in lpaint_getStrokeWidth() argument
920 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getStrokeWidth()); in lpaint_getStrokeWidth()
924 static int lpaint_setStrokeWidth(lua_State* L) { in lpaint_setStrokeWidth() argument
925 get_obj<SkPaint>(L, 1)->setStrokeWidth(lua2scalar(L, 2)); in lpaint_setStrokeWidth()
929 static int lpaint_getStrokeMiter(lua_State* L) { in lpaint_getStrokeMiter() argument
930 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getStrokeMiter()); in lpaint_getStrokeMiter()
934 static int lpaint_measureText(lua_State* L) { in lpaint_measureText() argument
935 if (lua_isstring(L, 2)) { in lpaint_measureText()
937 const char* text = lua_tolstring(L, 2, &len); in lpaint_measureText()
938 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->measureText(text, len)); in lpaint_measureText()
956 static int lpaint_getFontMetrics(lua_State* L) { in lpaint_getFontMetrics() argument
958 SkScalar height = get_obj<SkPaint>(L, 1)->getFontMetrics(&fm); in lpaint_getFontMetrics()
960 lua_newtable(L); in lpaint_getFontMetrics()
961 setfield_scalar(L, "top", fm.fTop); in lpaint_getFontMetrics()
962 setfield_scalar(L, "ascent", fm.fAscent); in lpaint_getFontMetrics()
963 setfield_scalar(L, "descent", fm.fDescent); in lpaint_getFontMetrics()
964 setfield_scalar(L, "bottom", fm.fBottom); in lpaint_getFontMetrics()
965 setfield_scalar(L, "leading", fm.fLeading); in lpaint_getFontMetrics()
966 SkLua(L).pushScalar(height); in lpaint_getFontMetrics()
970 static int lpaint_getEffects(lua_State* L) { in lpaint_getEffects() argument
971 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getEffects()
973 lua_newtable(L); in lpaint_getEffects()
974 setfield_bool_if(L, "looper", !!paint->getLooper()); in lpaint_getEffects()
975 setfield_bool_if(L, "pathEffect", !!paint->getPathEffect()); in lpaint_getEffects()
976 setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter()); in lpaint_getEffects()
977 setfield_bool_if(L, "shader", !!paint->getShader()); in lpaint_getEffects()
978 setfield_bool_if(L, "colorFilter", !!paint->getColorFilter()); in lpaint_getEffects()
979 setfield_bool_if(L, "imageFilter", !!paint->getImageFilter()); in lpaint_getEffects()
983 static int lpaint_getColorFilter(lua_State* L) { in lpaint_getColorFilter() argument
984 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getColorFilter()
985 SkColorFilter* cf = paint->getColorFilter(); in lpaint_getColorFilter()
987 push_ref(L, cf); in lpaint_getColorFilter()
993 static int lpaint_setColorFilter(lua_State* L) { in lpaint_setColorFilter() argument
994 SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_setColorFilter()
995 paint->setColorFilter(sk_ref_sp(get_ref<SkColorFilter>(L, 2))); in lpaint_setColorFilter()
999 static int lpaint_getImageFilter(lua_State* L) { in lpaint_getImageFilter() argument
1000 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getImageFilter()
1001 SkImageFilter* imf = paint->getImageFilter(); in lpaint_getImageFilter()
1003 push_ref(L, imf); in lpaint_getImageFilter()
1009 static int lpaint_setImageFilter(lua_State* L) { in lpaint_setImageFilter() argument
1010 SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_setImageFilter()
1011 paint->setImageFilter(sk_ref_sp(get_ref<SkImageFilter>(L, 2))); in lpaint_setImageFilter()
1015 static int lpaint_getShader(lua_State* L) { in lpaint_getShader() argument
1016 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getShader()
1017 SkShader* shader = paint->getShader(); in lpaint_getShader()
1019 push_ref(L, shader); in lpaint_getShader()
1025 static int lpaint_setShader(lua_State* L) { in lpaint_setShader() argument
1026 SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_setShader()
1027 paint->setShader(sk_ref_sp(get_ref<SkShader>(L, 2))); in lpaint_setShader()
1031 static int lpaint_getPathEffect(lua_State* L) { in lpaint_getPathEffect() argument
1032 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getPathEffect()
1033 SkPathEffect* pe = paint->getPathEffect(); in lpaint_getPathEffect()
1035 push_ref(L, pe); in lpaint_getPathEffect()
1041 static int lpaint_getFillPath(lua_State* L) { in lpaint_getFillPath() argument
1042 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getFillPath()
1043 const SkPath* path = get_obj<SkPath>(L, 2); in lpaint_getFillPath()
1046 paint->getFillPath(*path, &fillpath); in lpaint_getFillPath()
1048 SkLua lua(L); in lpaint_getFillPath()
1054 static int lpaint_gc(lua_State* L) { in lpaint_gc() argument
1055 get_obj<SkPaint>(L, 1)->~SkPaint(); in lpaint_gc()
1129 static int lshader_isOpaque(lua_State* L) { in lshader_isOpaque() argument
1130 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_isOpaque()
1131 return shader && shader->isOpaque(); in lshader_isOpaque()
1134 static int lshader_isAImage(lua_State* L) { in lshader_isAImage() argument
1135 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_isAImage()
1139 if (SkImage* image = shader->isAImage(&matrix, modes)) { in lshader_isAImage()
1140 lua_newtable(L); in lshader_isAImage()
1141 setfield_number(L, "id", image->uniqueID()); in lshader_isAImage()
1142 setfield_number(L, "width", image->width()); in lshader_isAImage()
1143 setfield_number(L, "height", image->height()); in lshader_isAImage()
1144 setfield_string(L, "tileX", mode2string(modes[0])); in lshader_isAImage()
1145 setfield_string(L, "tileY", mode2string(modes[1])); in lshader_isAImage()
1152 static int lshader_asAGradient(lua_State* L) { in lshader_asAGradient() argument
1153 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_asAGradient()
1158 SkShader::GradientType t = shader->asAGradient(&info); in lshader_asAGradient()
1163 shader->asAGradient(&info); in lshader_asAGradient()
1165 lua_newtable(L); in lshader_asAGradient()
1166 setfield_string(L, "type", gradtype2string(t)); in lshader_asAGradient()
1167 setfield_string(L, "tile", mode2string(info.fTileMode)); in lshader_asAGradient()
1168 setfield_number(L, "colorCount", info.fColorCount); in lshader_asAGradient()
1170 lua_newtable(L); in lshader_asAGradient()
1172 // Lua uses 1-based indexing in lshader_asAGradient()
1173 setarray_scalar(L, i+1, pos[i]); in lshader_asAGradient()
1175 lua_setfield(L, -2, "positions"); in lshader_asAGradient()
1183 static int lshader_gc(lua_State* L) { in lshader_gc() argument
1184 get_ref<SkShader>(L, 1)->unref(); in lshader_gc()
1198 static int lpatheffect_asADash(lua_State* L) { in lpatheffect_asADash() argument
1199 SkPathEffect* pe = get_ref<SkPathEffect>(L, 1); in lpatheffect_asADash()
1202 SkPathEffect::DashType dashType = pe->asADash(&info); in lpatheffect_asADash()
1206 pe->asADash(&info); in lpatheffect_asADash()
1207 SkLua(L).pushDash(info); in lpatheffect_asADash()
1214 static int lpatheffect_gc(lua_State* L) { in lpatheffect_gc() argument
1215 get_ref<SkPathEffect>(L, 1)->unref(); in lpatheffect_gc()
1227 static int lpcolorfilter_gc(lua_State* L) { in lpcolorfilter_gc() argument
1228 get_ref<SkColorFilter>(L, 1)->unref(); in lpcolorfilter_gc()
1239 static int lpimagefilter_gc(lua_State* L) { in lpimagefilter_gc() argument
1240 get_ref<SkImageFilter>(L, 1)->unref(); in lpimagefilter_gc()
1251 static int lmatrix_getType(lua_State* L) { in lmatrix_getType() argument
1252 SkMatrix::TypeMask mask = get_obj<SkMatrix>(L, 1)->getType(); in lmatrix_getType()
1254 lua_newtable(L); in lmatrix_getType()
1255 setfield_boolean(L, "translate", SkToBool(mask & SkMatrix::kTranslate_Mask)); in lmatrix_getType()
1256 setfield_boolean(L, "scale", SkToBool(mask & SkMatrix::kScale_Mask)); in lmatrix_getType()
1257 setfield_boolean(L, "affine", SkToBool(mask & SkMatrix::kAffine_Mask)); in lmatrix_getType()
1258 setfield_boolean(L, "perspective", SkToBool(mask & SkMatrix::kPerspective_Mask)); in lmatrix_getType()
1262 static int lmatrix_getScaleX(lua_State* L) { in lmatrix_getScaleX() argument
1263 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getScaleX()); in lmatrix_getScaleX()
1267 static int lmatrix_getScaleY(lua_State* L) { in lmatrix_getScaleY() argument
1268 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getScaleY()); in lmatrix_getScaleY()
1272 static int lmatrix_getTranslateX(lua_State* L) { in lmatrix_getTranslateX() argument
1273 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getTranslateX()); in lmatrix_getTranslateX()
1277 static int lmatrix_getTranslateY(lua_State* L) { in lmatrix_getTranslateY() argument
1278 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getTranslateY()); in lmatrix_getTranslateY()
1282 static int lmatrix_invert(lua_State* L) { in lmatrix_invert() argument
1283 lua_pushboolean(L, get_obj<SkMatrix>(L, 1)->invert(get_obj<SkMatrix>(L, 2))); in lmatrix_invert()
1287 static int lmatrix_mapXY(lua_State* L) { in lmatrix_mapXY() argument
1288 SkPoint pt = { lua2scalar(L, 2), lua2scalar(L, 3) }; in lmatrix_mapXY()
1289 get_obj<SkMatrix>(L, 1)->mapPoints(&pt, &pt, 1); in lmatrix_mapXY()
1290 lua_pushnumber(L, pt.x()); in lmatrix_mapXY()
1291 lua_pushnumber(L, pt.y()); in lmatrix_mapXY()
1295 static int lmatrix_setRectToRect(lua_State* L) { in lmatrix_setRectToRect() argument
1296 SkMatrix* matrix = get_obj<SkMatrix>(L, 1); in lmatrix_setRectToRect()
1298 lua2rect(L, 2, &srcR); in lmatrix_setRectToRect()
1299 lua2rect(L, 3, &dstR); in lmatrix_setRectToRect()
1300 const char* scaleToFitStr = lua_tostring(L, 4); in lmatrix_setRectToRect()
1322 matrix->setRectToRect(srcR, dstR, scaleToFit); in lmatrix_setRectToRect()
1340 static int lpath_getBounds(lua_State* L) { in lpath_getBounds() argument
1341 SkLua(L).pushRect(get_obj<SkPath>(L, 1)->getBounds()); in lpath_getBounds()
1348 return "even-odd"; in fill_type_to_str()
1352 return "inverse-even-odd"; in fill_type_to_str()
1354 return "inverse-winding"; in fill_type_to_str()
1359 static int lpath_getFillType(lua_State* L) { in lpath_getFillType() argument
1360 SkPath::FillType fill = get_obj<SkPath>(L, 1)->getFillType(); in lpath_getFillType()
1361 SkLua(L).pushString(fill_type_to_str(fill)); in lpath_getFillType()
1400 static int lpath_getSegmentTypes(lua_State* L) { in lpath_getSegmentTypes() argument
1401 uint32_t segMasks = get_obj<SkPath>(L, 1)->getSegmentMasks(); in lpath_getSegmentTypes()
1402 SkLua(L).pushString(segment_masks_to_str(segMasks)); in lpath_getSegmentTypes()
1406 static int lpath_isConvex(lua_State* L) { in lpath_isConvex() argument
1407 bool isConvex = SkPath::kConvex_Convexity == get_obj<SkPath>(L, 1)->getConvexity(); in lpath_isConvex()
1408 SkLua(L).pushBool(isConvex); in lpath_isConvex()
1412 static int lpath_isEmpty(lua_State* L) { in lpath_isEmpty() argument
1413 lua_pushboolean(L, get_obj<SkPath>(L, 1)->isEmpty()); in lpath_isEmpty()
1417 static int lpath_isRect(lua_State* L) { in lpath_isRect() argument
1419 bool pred = get_obj<SkPath>(L, 1)->isRect(&r); in lpath_isRect()
1421 lua_pushboolean(L, pred); in lpath_isRect()
1423 SkLua(L).pushRect(r); in lpath_isRect()
1437 static int lpath_isNestedFillRects(lua_State* L) { in lpath_isNestedFillRects() argument
1440 bool pred = get_obj<SkPath>(L, 1)->isNestedFillRects(rects, dirs); in lpath_isNestedFillRects()
1442 lua_pushboolean(L, pred); in lpath_isNestedFillRects()
1444 SkLua lua(L); in lpath_isNestedFillRects()
1447 lua_pushstring(L, dir2string(dirs[0])); in lpath_isNestedFillRects()
1448 lua_pushstring(L, dir2string(dirs[0])); in lpath_isNestedFillRects()
1454 static int lpath_countPoints(lua_State* L) { in lpath_countPoints() argument
1455 lua_pushinteger(L, get_obj<SkPath>(L, 1)->countPoints()); in lpath_countPoints()
1459 static int lpath_getVerbs(lua_State* L) { in lpath_getVerbs() argument
1460 const SkPath* path = get_obj<SkPath>(L, 1); in lpath_getVerbs()
1464 lua_newtable(L); in lpath_getVerbs()
1471 setarray_string(L, ++i, "move"); in lpath_getVerbs()
1474 setarray_string(L, ++i, "close"); in lpath_getVerbs()
1477 setarray_string(L, ++i, "line"); in lpath_getVerbs()
1480 setarray_string(L, ++i, "quad"); in lpath_getVerbs()
1483 setarray_string(L, ++i, "conic"); in lpath_getVerbs()
1486 setarray_string(L, ++i, "cubic"); in lpath_getVerbs()
1489 setarray_string(L, ++i, "done"); in lpath_getVerbs()
1498 static int lpath_reset(lua_State* L) { in lpath_reset() argument
1499 get_obj<SkPath>(L, 1)->reset(); in lpath_reset()
1503 static int lpath_moveTo(lua_State* L) { in lpath_moveTo() argument
1504 get_obj<SkPath>(L, 1)->moveTo(lua2scalar(L, 2), lua2scalar(L, 3)); in lpath_moveTo()
1508 static int lpath_lineTo(lua_State* L) { in lpath_lineTo() argument
1509 get_obj<SkPath>(L, 1)->lineTo(lua2scalar(L, 2), lua2scalar(L, 3)); in lpath_lineTo()
1513 static int lpath_quadTo(lua_State* L) { in lpath_quadTo() argument
1514 get_obj<SkPath>(L, 1)->quadTo(lua2scalar(L, 2), lua2scalar(L, 3), in lpath_quadTo()
1515 lua2scalar(L, 4), lua2scalar(L, 5)); in lpath_quadTo()
1519 static int lpath_cubicTo(lua_State* L) { in lpath_cubicTo() argument
1520 get_obj<SkPath>(L, 1)->cubicTo(lua2scalar(L, 2), lua2scalar(L, 3), in lpath_cubicTo()
1521 lua2scalar(L, 4), lua2scalar(L, 5), in lpath_cubicTo()
1522 lua2scalar(L, 6), lua2scalar(L, 7)); in lpath_cubicTo()
1526 static int lpath_close(lua_State* L) { in lpath_close() argument
1527 get_obj<SkPath>(L, 1)->close(); in lpath_close()
1531 static int lpath_gc(lua_State* L) { in lpath_gc() argument
1532 get_obj<SkPath>(L, 1)->~SkPath(); in lpath_gc()
1564 case SkRRect::kNinePatch_Type: return "nine-patch"; in rrect_type()
1571 static int lrrect_rect(lua_State* L) { in lrrect_rect() argument
1572 SkLua(L).pushRect(get_obj<SkRRect>(L, 1)->rect()); in lrrect_rect()
1576 static int lrrect_type(lua_State* L) { in lrrect_type() argument
1577 lua_pushstring(L, rrect_type(*get_obj<SkRRect>(L, 1))); in lrrect_type()
1581 static int lrrect_radii(lua_State* L) { in lrrect_radii() argument
1582 int corner = SkToInt(lua_tointeger(L, 2)); in lrrect_radii()
1588 v = get_obj<SkRRect>(L, 1)->radii((SkRRect::Corner)corner); in lrrect_radii()
1590 lua_pushnumber(L, v.fX); in lrrect_radii()
1591 lua_pushnumber(L, v.fY); in lrrect_radii()
1595 static int lrrect_gc(lua_State* L) { in lrrect_gc() argument
1596 get_obj<SkRRect>(L, 1)->~SkRRect(); in lrrect_gc()
1610 static int limage_width(lua_State* L) { in limage_width() argument
1611 lua_pushinteger(L, get_ref<SkImage>(L, 1)->width()); in limage_width()
1615 static int limage_height(lua_State* L) { in limage_height() argument
1616 lua_pushinteger(L, get_ref<SkImage>(L, 1)->height()); in limage_height()
1620 static int limage_newShader(lua_State* L) { in limage_newShader() argument
1623 push_ref(L, get_ref<SkImage>(L, 1)->makeShader(tmode, tmode, localM)); in limage_newShader()
1627 static int limage_gc(lua_State* L) { in limage_gc() argument
1628 get_ref<SkImage>(L, 1)->unref(); in limage_gc()
1642 static int lsurface_width(lua_State* L) { in lsurface_width() argument
1643 lua_pushinteger(L, get_ref<SkSurface>(L, 1)->width()); in lsurface_width()
1647 static int lsurface_height(lua_State* L) { in lsurface_height() argument
1648 lua_pushinteger(L, get_ref<SkSurface>(L, 1)->height()); in lsurface_height()
1652 static int lsurface_getCanvas(lua_State* L) { in lsurface_getCanvas() argument
1653 SkCanvas* canvas = get_ref<SkSurface>(L, 1)->getCanvas(); in lsurface_getCanvas()
1655 lua_pushnil(L); in lsurface_getCanvas()
1657 push_ptr(L, canvas); in lsurface_getCanvas()
1667 static int lsurface_newImageSnapshot(lua_State* L) { in lsurface_newImageSnapshot() argument
1668 sk_sp<SkImage> image = get_ref<SkSurface>(L, 1)->makeImageSnapshot(); in lsurface_newImageSnapshot()
1670 lua_pushnil(L); in lsurface_newImageSnapshot()
1672 push_ref(L, image); in lsurface_newImageSnapshot()
1677 static int lsurface_newSurface(lua_State* L) { in lsurface_newSurface() argument
1678 int width = lua2int_def(L, 2, 0); in lsurface_newSurface()
1679 int height = lua2int_def(L, 3, 0); in lsurface_newSurface()
1681 auto surface = get_ref<SkSurface>(L, 1)->makeSurface(info); in lsurface_newSurface()
1683 lua_pushnil(L); in lsurface_newSurface()
1685 push_ref(L, surface); in lsurface_newSurface()
1690 static int lsurface_gc(lua_State* L) { in lsurface_gc() argument
1691 get_ref<SkSurface>(L, 1)->unref(); in lsurface_gc()
1707 static int lpicturerecorder_beginRecording(lua_State* L) { in lpicturerecorder_beginRecording() argument
1708 const SkScalar w = lua2scalar_def(L, 2, -1); in lpicturerecorder_beginRecording()
1709 const SkScalar h = lua2scalar_def(L, 3, -1); in lpicturerecorder_beginRecording()
1711 lua_pushnil(L); in lpicturerecorder_beginRecording()
1715 SkCanvas* canvas = get_obj<SkPictureRecorder>(L, 1)->beginRecording(w, h); in lpicturerecorder_beginRecording()
1717 lua_pushnil(L); in lpicturerecorder_beginRecording()
1721 push_ptr(L, canvas); in lpicturerecorder_beginRecording()
1725 static int lpicturerecorder_getCanvas(lua_State* L) { in lpicturerecorder_getCanvas() argument
1726 SkCanvas* canvas = get_obj<SkPictureRecorder>(L, 1)->getRecordingCanvas(); in lpicturerecorder_getCanvas()
1728 lua_pushnil(L); in lpicturerecorder_getCanvas()
1731 push_ptr(L, canvas); in lpicturerecorder_getCanvas()
1735 static int lpicturerecorder_endRecording(lua_State* L) { in lpicturerecorder_endRecording() argument
1736 sk_sp<SkPicture> pic = get_obj<SkPictureRecorder>(L, 1)->finishRecordingAsPicture(); in lpicturerecorder_endRecording()
1738 lua_pushnil(L); in lpicturerecorder_endRecording()
1741 push_ref(L, std::move(pic)); in lpicturerecorder_endRecording()
1745 static int lpicturerecorder_gc(lua_State* L) { in lpicturerecorder_gc() argument
1746 get_obj<SkPictureRecorder>(L, 1)->~SkPictureRecorder(); in lpicturerecorder_gc()
1760 static int lpicture_width(lua_State* L) { in lpicture_width() argument
1761 lua_pushnumber(L, get_ref<SkPicture>(L, 1)->cullRect().width()); in lpicture_width()
1765 static int lpicture_height(lua_State* L) { in lpicture_height() argument
1766 lua_pushnumber(L, get_ref<SkPicture>(L, 1)->cullRect().height()); in lpicture_height()
1770 static int lpicture_gc(lua_State* L) { in lpicture_gc() argument
1771 get_ref<SkPicture>(L, 1)->unref(); in lpicture_gc()
1784 static int ltextblob_bounds(lua_State* L) { in ltextblob_bounds() argument
1785 SkLua(L).pushRect(get_ref<SkTextBlob>(L, 1)->bounds()); in ltextblob_bounds()
1789 static int ltextblob_gc(lua_State* L) { in ltextblob_gc() argument
1790 SkSafeUnref(get_ref<SkTextBlob>(L, 1)); in ltextblob_gc()
1802 static int ltypeface_getFamilyName(lua_State* L) { in ltypeface_getFamilyName() argument
1804 get_ref<SkTypeface>(L, 1)->getFamilyName(&str); in ltypeface_getFamilyName()
1805 lua_pushstring(L, str.c_str()); in ltypeface_getFamilyName()
1809 static int ltypeface_getStyle(lua_State* L) { in ltypeface_getStyle() argument
1810 push_obj(L, get_ref<SkTypeface>(L, 1)->fontStyle()); in ltypeface_getStyle()
1814 static int ltypeface_gc(lua_State* L) { in ltypeface_gc() argument
1815 SkSafeUnref(get_ref<SkTypeface>(L, 1)); in ltypeface_gc()
1828 static int lfontstyle_weight(lua_State* L) { in lfontstyle_weight() argument
1829 lua_pushnumber(L, get_ref<SkFontStyle>(L, 1)->weight()); in lfontstyle_weight()
1833 static int lfontstyle_width(lua_State* L) { in lfontstyle_width() argument
1834 lua_pushnumber(L, get_ref<SkFontStyle>(L, 1)->width()); in lfontstyle_width()
1838 static int lfontstyle_slant(lua_State* L) { in lfontstyle_slant() argument
1839 lua_pushnumber(L, get_ref<SkFontStyle>(L, 1)->slant()); in lfontstyle_slant()
1843 static int lfontstyle_gc(lua_State* L) { in lfontstyle_gc() argument
1844 get_obj<SkFontStyle>(L, 1)->~SkFontStyle(); in lfontstyle_gc()
1860 AutoCallLua(lua_State* L, const char func[], const char verb[]) : fL(L) { in AutoCallLua() argument
1861 lua_getglobal(L, func); in AutoCallLua()
1862 if (!lua_isfunction(L, -1)) { in AutoCallLua()
1863 int t = lua_type(L, -1); in AutoCallLua()
1864 SkDebugf("--- expected function %d\n", t); in AutoCallLua()
1867 lua_newtable(L); in AutoCallLua()
1868 setfield_string(L, "verb", verb); in AutoCallLua()
1873 SkDebugf("lua err: %s\n", lua_tostring(fL, -1)); in ~AutoCallLua()
1875 lua_settop(fL, -1); in ~AutoCallLua()
1886 static int lsk_newDocumentPDF(lua_State* L) { in lsk_newDocumentPDF() argument
1888 if (lua_gettop(L) > 0 && lua_isstring(L, 1)) { in lsk_newDocumentPDF()
1889 filename = lua_tolstring(L, 1, nullptr); in lsk_newDocumentPDF()
1895 if (!file->isValid()) { in lsk_newDocumentPDF()
1902 push_ptr(L, new DocHolder{std::move(doc), std::move(file)}); in lsk_newDocumentPDF()
1906 static int lsk_newBlurImageFilter(lua_State* L) { in lsk_newBlurImageFilter() argument
1907 SkScalar sigmaX = lua2scalar_def(L, 1, 0); in lsk_newBlurImageFilter()
1908 SkScalar sigmaY = lua2scalar_def(L, 2, 0); in lsk_newBlurImageFilter()
1911 lua_pushnil(L); in lsk_newBlurImageFilter()
1913 push_ref(L, std::move(imf)); in lsk_newBlurImageFilter()
1918 static int lsk_newLinearGradient(lua_State* L) { in lsk_newLinearGradient() argument
1919 SkScalar x0 = lua2scalar_def(L, 1, 0); in lsk_newLinearGradient()
1920 SkScalar y0 = lua2scalar_def(L, 2, 0); in lsk_newLinearGradient()
1921 SkColor c0 = lua2color(L, 3); in lsk_newLinearGradient()
1922 SkScalar x1 = lua2scalar_def(L, 4, 0); in lsk_newLinearGradient()
1923 SkScalar y1 = lua2scalar_def(L, 5, 0); in lsk_newLinearGradient()
1924 SkColor c1 = lua2color(L, 6); in lsk_newLinearGradient()
1931 lua_pushnil(L); in lsk_newLinearGradient()
1933 push_ref(L, std::move(s)); in lsk_newLinearGradient()
1938 static int lsk_newMatrix(lua_State* L) { in lsk_newMatrix() argument
1939 push_new<SkMatrix>(L)->reset(); in lsk_newMatrix()
1943 static int lsk_newPaint(lua_State* L) { in lsk_newPaint() argument
1944 push_new<SkPaint>(L); in lsk_newPaint()
1948 static int lsk_newPath(lua_State* L) { in lsk_newPath() argument
1949 push_new<SkPath>(L); in lsk_newPath()
1953 static int lsk_newPictureRecorder(lua_State* L) { in lsk_newPictureRecorder() argument
1954 push_new<SkPictureRecorder>(L); in lsk_newPictureRecorder()
1958 static int lsk_newRRect(lua_State* L) { in lsk_newRRect() argument
1959 push_new<SkRRect>(L)->setEmpty(); in lsk_newRRect()
1965 static int lsk_newTextBlob(lua_State* L) { in lsk_newTextBlob() argument
1966 const char* text = lua_tolstring(L, 1, nullptr); in lsk_newTextBlob()
1968 lua2rect(L, 2, &bounds); in lsk_newTextBlob()
1969 const SkPaint& paint = *get_obj<SkPaint>(L, 3); in lsk_newTextBlob()
1977 push_ref<SkTextBlob>(L, box.snapshotTextBlob(&newBottom)); in lsk_newTextBlob()
1978 SkLua(L).pushScalar(newBottom); in lsk_newTextBlob()
1982 static int lsk_newTypeface(lua_State* L) { in lsk_newTypeface() argument
1986 int count = lua_gettop(L); in lsk_newTypeface()
1987 if (count > 0 && lua_isstring(L, 1)) { in lsk_newTypeface()
1988 name = lua_tolstring(L, 1, nullptr); in lsk_newTypeface()
1990 SkFontStyle* passedStyle = get_obj<SkFontStyle>(L, 2); in lsk_newTypeface()
1998 // SkDebugf("---- name <%s> style=%d, face=%p ref=%d\n", name, style, face, face->getRefCnt()); in lsk_newTypeface()
2002 push_ref(L, std::move(face)); in lsk_newTypeface()
2006 static int lsk_newFontStyle(lua_State* L) { in lsk_newFontStyle() argument
2007 int count = lua_gettop(L); in lsk_newFontStyle()
2011 if (count >= 1 && lua_isnumber(L, 1)) { in lsk_newFontStyle()
2012 weight = lua_tointegerx(L, 1, nullptr); in lsk_newFontStyle()
2014 if (count >= 2 && lua_isnumber(L, 2)) { in lsk_newFontStyle()
2015 width = lua_tointegerx(L, 2, nullptr); in lsk_newFontStyle()
2017 if (count >= 3 && lua_isnumber(L, 3)) { in lsk_newFontStyle()
2018 slant = static_cast<SkFontStyle::Slant>(lua_tointegerx(L, 3, nullptr)); in lsk_newFontStyle()
2020 push_new<SkFontStyle>(L, weight, width, slant); in lsk_newFontStyle()
2024 static int lsk_newRasterSurface(lua_State* L) { in lsk_newRasterSurface() argument
2025 int width = lua2int_def(L, 1, 0); in lsk_newRasterSurface()
2026 int height = lua2int_def(L, 2, 0); in lsk_newRasterSurface()
2031 lua_pushnil(L); in lsk_newRasterSurface()
2033 push_ref(L, surface); in lsk_newRasterSurface()
2038 static int lsk_loadImage(lua_State* L) { in lsk_loadImage() argument
2039 if (lua_gettop(L) > 0 && lua_isstring(L, 1)) { in lsk_loadImage()
2040 const char* name = lua_tolstring(L, 1, nullptr); in lsk_loadImage()
2045 push_ref(L, std::move(image)); in lsk_loadImage()
2053 static void register_Sk(lua_State* L) { in register_Sk() argument
2054 lua_newtable(L); in register_Sk()
2055 lua_pushvalue(L, -1); in register_Sk()
2056 lua_setglobal(L, "Sk"); in register_Sk()
2059 setfield_function(L, "newDocumentPDF", lsk_newDocumentPDF); in register_Sk()
2060 setfield_function(L, "loadImage", lsk_loadImage); in register_Sk()
2061 setfield_function(L, "newBlurImageFilter", lsk_newBlurImageFilter); in register_Sk()
2062 setfield_function(L, "newLinearGradient", lsk_newLinearGradient); in register_Sk()
2063 setfield_function(L, "newMatrix", lsk_newMatrix); in register_Sk()
2064 setfield_function(L, "newPaint", lsk_newPaint); in register_Sk()
2065 setfield_function(L, "newPath", lsk_newPath); in register_Sk()
2066 setfield_function(L, "newPictureRecorder", lsk_newPictureRecorder); in register_Sk()
2067 setfield_function(L, "newRRect", lsk_newRRect); in register_Sk()
2068 setfield_function(L, "newRasterSurface", lsk_newRasterSurface); in register_Sk()
2069 setfield_function(L, "newTextBlob", lsk_newTextBlob); in register_Sk()
2070 setfield_function(L, "newTypeface", lsk_newTypeface); in register_Sk()
2071 setfield_function(L, "newFontStyle", lsk_newFontStyle); in register_Sk()
2072 lua_pop(L, 1); // pop off the Sk table in register_Sk()
2075 #define REG_CLASS(L, C) \ argument
2077 luaL_newmetatable(L, get_mtname<C>()); \
2078 lua_pushvalue(L, -1); \
2079 lua_setfield(L, -2, "__index"); \
2080 luaL_setfuncs(L, g##C##_Methods, 0); \
2081 lua_pop(L, 1); /* pop off the meta-table */ \
2084 void SkLua::Load(lua_State* L) { in Load() argument
2085 register_Sk(L); in Load()
2086 REG_CLASS(L, SkCanvas); in Load()
2087 REG_CLASS(L, SkColorFilter); in Load()
2088 REG_CLASS(L, DocHolder); in Load()
2089 REG_CLASS(L, SkImage); in Load()
2090 REG_CLASS(L, SkImageFilter); in Load()
2091 REG_CLASS(L, SkMatrix); in Load()
2092 REG_CLASS(L, SkPaint); in Load()
2093 REG_CLASS(L, SkPath); in Load()
2094 REG_CLASS(L, SkPathEffect); in Load()
2095 REG_CLASS(L, SkPicture); in Load()
2096 REG_CLASS(L, SkPictureRecorder); in Load()
2097 REG_CLASS(L, SkRRect); in Load()
2098 REG_CLASS(L, SkShader); in Load()
2099 REG_CLASS(L, SkSurface); in Load()
2100 REG_CLASS(L, SkTextBlob); in Load()
2101 REG_CLASS(L, SkTypeface); in Load()
2102 REG_CLASS(L, SkFontStyle); in Load()
2105 extern "C" int luaopen_skia(lua_State* L);
2106 extern "C" int luaopen_skia(lua_State* L) { in luaopen_skia() argument
2107 SkLua::Load(L); in luaopen_skia()