Lines Matching refs:L
44 template <typename T> T* push_new(lua_State* L) { in DEF_MTNAME()
45 T* addr = (T*)lua_newuserdata(L, sizeof(T)); in DEF_MTNAME()
47 luaL_getmetatable(L, get_mtname<T>()); in DEF_MTNAME()
48 lua_setmetatable(L, -2); in DEF_MTNAME()
52 template <typename T> void push_obj(lua_State* L, const T& obj) { in push_obj() argument
53 new (lua_newuserdata(L, sizeof(T))) T(obj); in push_obj()
54 luaL_getmetatable(L, get_mtname<T>()); in push_obj()
55 lua_setmetatable(L, -2); in push_obj()
58 template <typename T> void push_ref(lua_State* L, T* ref) { in push_ref() argument
59 *(T**)lua_newuserdata(L, sizeof(T*)) = SkRef(ref); in push_ref()
60 luaL_getmetatable(L, get_mtname<T>()); in push_ref()
61 lua_setmetatable(L, -2); in push_ref()
64 template <typename T> T* get_ref(lua_State* L, int index) { in get_ref() argument
65 return *(T**)luaL_checkudata(L, index, get_mtname<T>()); in get_ref()
68 template <typename T> T* get_obj(lua_State* L, int index) { in get_obj() argument
69 return (T*)luaL_checkudata(L, index, get_mtname<T>()); in get_obj()
72 static bool lua2bool(lua_State* L, int index) { in lua2bool() argument
73 return !!lua_toboolean(L, index); in lua2bool()
84 SkLua::SkLua(lua_State* L) : fL(L), fWeOwnL(false) {} in SkLua() argument
116 static void setfield_bool_if(lua_State* L, const char key[], bool pred) { in setfield_bool_if() argument
118 lua_pushboolean(L, true); in setfield_bool_if()
119 lua_setfield(L, -2, key); in setfield_bool_if()
123 static void setfield_string(lua_State* L, const char key[], const char value[]) { in setfield_string() argument
124 lua_pushstring(L, value); in setfield_string()
125 lua_setfield(L, -2, key); in setfield_string()
128 static void setfield_number(lua_State* L, const char key[], double value) { in setfield_number() argument
129 lua_pushnumber(L, value); in setfield_number()
130 lua_setfield(L, -2, key); in setfield_number()
133 static void setfield_boolean(lua_State* L, const char key[], bool value) { in setfield_boolean() argument
134 lua_pushboolean(L, value); in setfield_boolean()
135 lua_setfield(L, -2, key); in setfield_boolean()
138 static void setfield_scalar(lua_State* L, const char key[], SkScalar value) { in setfield_scalar() argument
139 setfield_number(L, key, SkScalarToLua(value)); in setfield_scalar()
142 static void setfield_function(lua_State* L, in setfield_function() argument
144 lua_pushcfunction(L, value); in setfield_function()
145 lua_setfield(L, -2, key); in setfield_function()
148 static void setarray_number(lua_State* L, int index, double value) { in setarray_number() argument
149 lua_pushnumber(L, value); in setarray_number()
150 lua_rawseti(L, -2, index); in setarray_number()
240 static SkScalar lua2scalar(lua_State* L, int index) { in lua2scalar() argument
241 SkASSERT(lua_isnumber(L, index)); in lua2scalar()
242 return SkLuaToScalar(lua_tonumber(L, index)); in lua2scalar()
245 static SkScalar lua2scalar_def(lua_State* L, int index, SkScalar defaultValue) { in lua2scalar_def() argument
246 if (lua_isnumber(L, index)) { in lua2scalar_def()
247 return SkLuaToScalar(lua_tonumber(L, index)); in lua2scalar_def()
253 static SkScalar getfield_scalar(lua_State* L, int index, const char key[]) { in getfield_scalar() argument
254 SkASSERT(lua_istable(L, index)); in getfield_scalar()
255 lua_pushstring(L, key); in getfield_scalar()
256 lua_gettable(L, index); in getfield_scalar()
258 SkScalar value = lua2scalar(L, -1); in getfield_scalar()
259 lua_pop(L, 1); in getfield_scalar()
263 static SkScalar getfield_scalar_default(lua_State* L, int index, const char key[], SkScalar def) { in getfield_scalar_default() argument
264 SkASSERT(lua_istable(L, index)); in getfield_scalar_default()
265 lua_pushstring(L, key); in getfield_scalar_default()
266 lua_gettable(L, index); in getfield_scalar_default()
269 if (lua_isnil(L, -1)) { in getfield_scalar_default()
272 value = lua2scalar(L, -1); in getfield_scalar_default()
274 lua_pop(L, 1); in getfield_scalar_default()
288 static SkColor lua2color(lua_State* L, int index) { in lua2color() argument
289 return SkColorSetARGB(unit2byte(getfield_scalar(L, index, "a")), in lua2color()
290 unit2byte(getfield_scalar(L, index, "r")), in lua2color()
291 unit2byte(getfield_scalar(L, index, "g")), in lua2color()
292 unit2byte(getfield_scalar(L, index, "b"))); in lua2color()
295 static SkRect* lua2rect(lua_State* L, int index, SkRect* rect) { in lua2rect() argument
296 rect->set(getfield_scalar_default(L, index, "left", 0), in lua2rect()
297 getfield_scalar_default(L, index, "top", 0), in lua2rect()
298 getfield_scalar(L, index, "right"), in lua2rect()
299 getfield_scalar(L, index, "bottom")); in lua2rect()
303 static int lcanvas_drawColor(lua_State* L) { in lcanvas_drawColor() argument
304 get_ref<SkCanvas>(L, 1)->drawColor(lua2color(L, 2)); in lcanvas_drawColor()
308 static int lcanvas_drawRect(lua_State* L) { in lcanvas_drawRect() argument
310 get_ref<SkCanvas>(L, 1)->drawRect(*lua2rect(L, 2, &rect), in lcanvas_drawRect()
311 *get_obj<SkPaint>(L, 3)); in lcanvas_drawRect()
315 static int lcanvas_drawOval(lua_State* L) { in lcanvas_drawOval() argument
317 get_ref<SkCanvas>(L, 1)->drawOval(*lua2rect(L, 2, &rect), in lcanvas_drawOval()
318 *get_obj<SkPaint>(L, 3)); in lcanvas_drawOval()
322 static int lcanvas_drawCircle(lua_State* L) { in lcanvas_drawCircle() argument
323 get_ref<SkCanvas>(L, 1)->drawCircle(lua2scalar(L, 2), in lcanvas_drawCircle()
324 lua2scalar(L, 3), in lcanvas_drawCircle()
325 lua2scalar(L, 4), in lcanvas_drawCircle()
326 *get_obj<SkPaint>(L, 5)); in lcanvas_drawCircle()
330 static int lcanvas_drawImage(lua_State* L) { in lcanvas_drawImage() argument
331 SkCanvas* canvas = get_ref<SkCanvas>(L, 1); in lcanvas_drawImage()
332 SkImage* image = get_ref<SkImage>(L, 2); in lcanvas_drawImage()
336 SkScalar x = lua2scalar(L, 3); in lcanvas_drawImage()
337 SkScalar y = lua2scalar(L, 4); in lcanvas_drawImage()
341 if (lua_isnumber(L, 5)) { in lcanvas_drawImage()
342 paint.setAlpha(SkScalarRoundToInt(lua2scalar(L, 5) * 255)); in lcanvas_drawImage()
349 static int lcanvas_drawPath(lua_State* L) { in lcanvas_drawPath() argument
350 get_ref<SkCanvas>(L, 1)->drawPath(*get_obj<SkPath>(L, 2), in lcanvas_drawPath()
351 *get_obj<SkPaint>(L, 3)); in lcanvas_drawPath()
355 static int lcanvas_drawText(lua_State* L) { in lcanvas_drawText() argument
356 if (lua_gettop(L) < 5) { in lcanvas_drawText()
360 if (lua_isstring(L, 2) && lua_isnumber(L, 3) && lua_isnumber(L, 4)) { in lcanvas_drawText()
362 const char* text = lua_tolstring(L, 2, &len); in lcanvas_drawText()
363 get_ref<SkCanvas>(L, 1)->drawText(text, len, in lcanvas_drawText()
364 lua2scalar(L, 3), lua2scalar(L, 4), in lcanvas_drawText()
365 *get_obj<SkPaint>(L, 5)); in lcanvas_drawText()
370 static int lcanvas_getSaveCount(lua_State* L) { in lcanvas_getSaveCount() argument
371 lua_pushnumber(L, get_ref<SkCanvas>(L, 1)->getSaveCount()); in lcanvas_getSaveCount()
375 static int lcanvas_getTotalMatrix(lua_State* L) { in lcanvas_getTotalMatrix() argument
376 SkLua(L).pushMatrix(get_ref<SkCanvas>(L, 1)->getTotalMatrix()); in lcanvas_getTotalMatrix()
380 static int lcanvas_save(lua_State* L) { in lcanvas_save() argument
381 lua_pushinteger(L, get_ref<SkCanvas>(L, 1)->save()); in lcanvas_save()
385 static int lcanvas_restore(lua_State* L) { in lcanvas_restore() argument
386 get_ref<SkCanvas>(L, 1)->restore(); in lcanvas_restore()
390 static int lcanvas_scale(lua_State* L) { in lcanvas_scale() argument
391 SkScalar sx = lua2scalar_def(L, 2, 1); in lcanvas_scale()
392 SkScalar sy = lua2scalar_def(L, 3, sx); in lcanvas_scale()
393 get_ref<SkCanvas>(L, 1)->scale(sx, sy); in lcanvas_scale()
397 static int lcanvas_translate(lua_State* L) { in lcanvas_translate() argument
398 SkScalar tx = lua2scalar_def(L, 2, 0); in lcanvas_translate()
399 SkScalar ty = lua2scalar_def(L, 3, 0); in lcanvas_translate()
400 get_ref<SkCanvas>(L, 1)->translate(tx, ty); in lcanvas_translate()
404 static int lcanvas_rotate(lua_State* L) { in lcanvas_rotate() argument
405 SkScalar degrees = lua2scalar_def(L, 2, 0); in lcanvas_rotate()
406 get_ref<SkCanvas>(L, 1)->rotate(degrees); in lcanvas_rotate()
410 static int lcanvas_gc(lua_State* L) { in lcanvas_gc() argument
411 get_ref<SkCanvas>(L, 1)->unref(); in lcanvas_gc()
436 static int ldocument_beginPage(lua_State* L) { in ldocument_beginPage() argument
438 push_ref(L, get_ref<SkDocument>(L, 1)->beginPage(lua2scalar(L, 2), in ldocument_beginPage()
439 lua2scalar(L, 3), in ldocument_beginPage()
444 static int ldocument_endPage(lua_State* L) { in ldocument_endPage() argument
445 get_ref<SkDocument>(L, 1)->endPage(); in ldocument_endPage()
449 static int ldocument_close(lua_State* L) { in ldocument_close() argument
450 get_ref<SkDocument>(L, 1)->close(); in ldocument_close()
454 static int ldocument_gc(lua_State* L) { in ldocument_gc() argument
455 get_ref<SkDocument>(L, 1)->unref(); in ldocument_gc()
469 static int lpaint_isAntiAlias(lua_State* L) { in lpaint_isAntiAlias() argument
470 lua_pushboolean(L, get_obj<SkPaint>(L, 1)->isAntiAlias()); in lpaint_isAntiAlias()
474 static int lpaint_setAntiAlias(lua_State* L) { in lpaint_setAntiAlias() argument
475 get_obj<SkPaint>(L, 1)->setAntiAlias(lua2bool(L, 2)); in lpaint_setAntiAlias()
479 static int lpaint_getColor(lua_State* L) { in lpaint_getColor() argument
480 SkLua(L).pushColor(get_obj<SkPaint>(L, 1)->getColor()); in lpaint_getColor()
484 static int lpaint_setColor(lua_State* L) { in lpaint_setColor() argument
485 get_obj<SkPaint>(L, 1)->setColor(lua2color(L, 2)); in lpaint_setColor()
489 static int lpaint_getTextSize(lua_State* L) { in lpaint_getTextSize() argument
490 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getTextSize()); in lpaint_getTextSize()
494 static int lpaint_setTextSize(lua_State* L) { in lpaint_setTextSize() argument
495 get_obj<SkPaint>(L, 1)->setTextSize(lua2scalar(L, 2)); in lpaint_setTextSize()
499 static int lpaint_getTypeface(lua_State* L) { in lpaint_getTypeface() argument
500 push_ref(L, get_obj<SkPaint>(L, 1)->getTypeface()); in lpaint_getTypeface()
504 static int lpaint_setTypeface(lua_State* L) { in lpaint_setTypeface() argument
505 get_obj<SkPaint>(L, 1)->setTypeface(get_ref<SkTypeface>(L, 2)); in lpaint_setTypeface()
509 static int lpaint_getFontID(lua_State* L) { in lpaint_getFontID() argument
510 SkTypeface* face = get_obj<SkPaint>(L, 1)->getTypeface(); in lpaint_getFontID()
511 SkLua(L).pushU32(SkTypeface::UniqueID(face)); in lpaint_getFontID()
524 static int lpaint_getTextAlign(lua_State* L) { in lpaint_getTextAlign() argument
525 SkPaint::Align align = get_obj<SkPaint>(L, 1)->getTextAlign(); in lpaint_getTextAlign()
528 lua_pushstring(L, gAlignRec[i].fLabel); in lpaint_getTextAlign()
535 static int lpaint_setTextAlign(lua_State* L) { in lpaint_setTextAlign() argument
536 if (lua_isstring(L, 2)) { in lpaint_setTextAlign()
538 const char* label = lua_tolstring(L, 2, &len); in lpaint_setTextAlign()
542 get_obj<SkPaint>(L, 1)->setTextAlign(gAlignRec[i].fAlign); in lpaint_setTextAlign()
550 static int lpaint_getStroke(lua_State* L) { in lpaint_getStroke() argument
551 lua_pushboolean(L, SkPaint::kStroke_Style == get_obj<SkPaint>(L, 1)->getStyle()); in lpaint_getStroke()
555 static int lpaint_setStroke(lua_State* L) { in lpaint_setStroke() argument
558 if (lua_toboolean(L, 2)) { in lpaint_setStroke()
563 get_obj<SkPaint>(L, 1)->setStyle(style); in lpaint_setStroke()
567 static int lpaint_getStrokeWidth(lua_State* L) { in lpaint_getStrokeWidth() argument
568 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->getStrokeWidth()); in lpaint_getStrokeWidth()
572 static int lpaint_setStrokeWidth(lua_State* L) { in lpaint_setStrokeWidth() argument
573 get_obj<SkPaint>(L, 1)->setStrokeWidth(lua2scalar(L, 2)); in lpaint_setStrokeWidth()
577 static int lpaint_measureText(lua_State* L) { in lpaint_measureText() argument
578 if (lua_isstring(L, 2)) { in lpaint_measureText()
580 const char* text = lua_tolstring(L, 2, &len); in lpaint_measureText()
581 SkLua(L).pushScalar(get_obj<SkPaint>(L, 1)->measureText(text, len)); in lpaint_measureText()
599 static int lpaint_getFontMetrics(lua_State* L) { in lpaint_getFontMetrics() argument
601 SkScalar height = get_obj<SkPaint>(L, 1)->getFontMetrics(&fm); in lpaint_getFontMetrics()
603 lua_newtable(L); in lpaint_getFontMetrics()
604 setfield_scalar(L, "top", fm.fTop); in lpaint_getFontMetrics()
605 setfield_scalar(L, "ascent", fm.fAscent); in lpaint_getFontMetrics()
606 setfield_scalar(L, "descent", fm.fDescent); in lpaint_getFontMetrics()
607 setfield_scalar(L, "bottom", fm.fBottom); in lpaint_getFontMetrics()
608 setfield_scalar(L, "leading", fm.fLeading); in lpaint_getFontMetrics()
609 SkLua(L).pushScalar(height); in lpaint_getFontMetrics()
613 static int lpaint_getEffects(lua_State* L) { in lpaint_getEffects() argument
614 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getEffects()
616 lua_newtable(L); in lpaint_getEffects()
617 setfield_bool_if(L, "looper", !!paint->getLooper()); in lpaint_getEffects()
618 setfield_bool_if(L, "pathEffect", !!paint->getPathEffect()); in lpaint_getEffects()
619 setfield_bool_if(L, "rasterizer", !!paint->getRasterizer()); in lpaint_getEffects()
620 setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter()); in lpaint_getEffects()
621 setfield_bool_if(L, "shader", !!paint->getShader()); in lpaint_getEffects()
622 setfield_bool_if(L, "colorFilter", !!paint->getColorFilter()); in lpaint_getEffects()
623 setfield_bool_if(L, "imageFilter", !!paint->getImageFilter()); in lpaint_getEffects()
624 setfield_bool_if(L, "xfermode", !!paint->getXfermode()); in lpaint_getEffects()
628 static int lpaint_getShader(lua_State* L) { in lpaint_getShader() argument
629 const SkPaint* paint = get_obj<SkPaint>(L, 1); in lpaint_getShader()
632 push_ref(L, shader); in lpaint_getShader()
638 static int lpaint_gc(lua_State* L) { in lpaint_gc() argument
639 get_obj<SkPaint>(L, 1)->~SkPaint(); in lpaint_gc()
683 static int lshader_isOpaque(lua_State* L) { in lshader_isOpaque() argument
684 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_isOpaque()
688 static int lshader_asABitmap(lua_State* L) { in lshader_asABitmap() argument
689 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_asABitmap()
696 lua_newtable(L); in lshader_asABitmap()
697 setfield_number(L, "genID", bm.pixelRef() ? bm.pixelRef()->getGenerationID() : 0); in lshader_asABitmap()
698 setfield_number(L, "width", bm.width()); in lshader_asABitmap()
699 setfield_number(L, "height", bm.height()); in lshader_asABitmap()
700 setfield_string(L, "tileX", mode2string(modes[0])); in lshader_asABitmap()
701 setfield_string(L, "tileY", mode2string(modes[1])); in lshader_asABitmap()
710 static int lshader_asAGradient(lua_State* L) { in lshader_asAGradient() argument
711 SkShader* shader = get_ref<SkShader>(L, 1); in lshader_asAGradient()
726 lua_newtable(L); in lshader_asAGradient()
727 setfield_string(L, "type", gradtype2string(t)); in lshader_asAGradient()
728 setfield_number(L, "colorCount", info.fColorCount); in lshader_asAGradient()
729 setfield_string(L, "tile", mode2string(info.fTileMode)); in lshader_asAGradient()
732 setfield_number(L, "midPos", pos[1]); in lshader_asAGradient()
741 static int lshader_gc(lua_State* L) { in lshader_gc() argument
742 get_ref<SkShader>(L, 1)->unref(); in lshader_gc()
756 static int lmatrix_getType(lua_State* L) { in lmatrix_getType() argument
757 SkMatrix::TypeMask mask = get_obj<SkMatrix>(L, 1)->getType(); in lmatrix_getType()
759 lua_newtable(L); in lmatrix_getType()
760 setfield_boolean(L, "translate", SkToBool(mask & SkMatrix::kTranslate_Mask)); in lmatrix_getType()
761 setfield_boolean(L, "scale", SkToBool(mask & SkMatrix::kScale_Mask)); in lmatrix_getType()
762 setfield_boolean(L, "affine", SkToBool(mask & SkMatrix::kAffine_Mask)); in lmatrix_getType()
763 setfield_boolean(L, "perspective", SkToBool(mask & SkMatrix::kPerspective_Mask)); in lmatrix_getType()
767 static int lmatrix_getScaleX(lua_State* L) { in lmatrix_getScaleX() argument
768 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getScaleX()); in lmatrix_getScaleX()
772 static int lmatrix_getScaleY(lua_State* L) { in lmatrix_getScaleY() argument
773 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getScaleY()); in lmatrix_getScaleY()
777 static int lmatrix_getTranslateX(lua_State* L) { in lmatrix_getTranslateX() argument
778 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getTranslateX()); in lmatrix_getTranslateX()
782 static int lmatrix_getTranslateY(lua_State* L) { in lmatrix_getTranslateY() argument
783 lua_pushnumber(L, get_obj<SkMatrix>(L,1)->getTranslateY()); in lmatrix_getTranslateY()
798 static int lpath_getBounds(lua_State* L) { in lpath_getBounds() argument
799 SkLua(L).pushRect(get_obj<SkPath>(L, 1)->getBounds()); in lpath_getBounds()
803 static int lpath_isEmpty(lua_State* L) { in lpath_isEmpty() argument
804 lua_pushboolean(L, get_obj<SkPath>(L, 1)->isEmpty()); in lpath_isEmpty()
808 static int lpath_isRect(lua_State* L) { in lpath_isRect() argument
810 bool pred = get_obj<SkPath>(L, 1)->isRect(&r); in lpath_isRect()
812 lua_pushboolean(L, pred); in lpath_isRect()
814 SkLua(L).pushRect(r); in lpath_isRect()
828 static int lpath_isNestedRects(lua_State* L) { in lpath_isNestedRects() argument
831 bool pred = get_obj<SkPath>(L, 1)->isNestedRects(rects, dirs); in lpath_isNestedRects()
833 lua_pushboolean(L, pred); in lpath_isNestedRects()
835 SkLua lua(L); in lpath_isNestedRects()
838 lua_pushstring(L, dir2string(dirs[0])); in lpath_isNestedRects()
839 lua_pushstring(L, dir2string(dirs[0])); in lpath_isNestedRects()
845 static int lpath_reset(lua_State* L) { in lpath_reset() argument
846 get_obj<SkPath>(L, 1)->reset(); in lpath_reset()
850 static int lpath_moveTo(lua_State* L) { in lpath_moveTo() argument
851 get_obj<SkPath>(L, 1)->moveTo(lua2scalar(L, 2), lua2scalar(L, 3)); in lpath_moveTo()
855 static int lpath_lineTo(lua_State* L) { in lpath_lineTo() argument
856 get_obj<SkPath>(L, 1)->lineTo(lua2scalar(L, 2), lua2scalar(L, 3)); in lpath_lineTo()
860 static int lpath_quadTo(lua_State* L) { in lpath_quadTo() argument
861 get_obj<SkPath>(L, 1)->quadTo(lua2scalar(L, 2), lua2scalar(L, 3), in lpath_quadTo()
862 lua2scalar(L, 4), lua2scalar(L, 5)); in lpath_quadTo()
866 static int lpath_cubicTo(lua_State* L) { in lpath_cubicTo() argument
867 get_obj<SkPath>(L, 1)->cubicTo(lua2scalar(L, 2), lua2scalar(L, 3), in lpath_cubicTo()
868 lua2scalar(L, 4), lua2scalar(L, 5), in lpath_cubicTo()
869 lua2scalar(L, 6), lua2scalar(L, 7)); in lpath_cubicTo()
873 static int lpath_close(lua_State* L) { in lpath_close() argument
874 get_obj<SkPath>(L, 1)->close(); in lpath_close()
878 static int lpath_gc(lua_State* L) { in lpath_gc() argument
879 get_obj<SkPath>(L, 1)->~SkPath(); in lpath_gc()
913 static int lrrect_rect(lua_State* L) { in lrrect_rect() argument
914 SkLua(L).pushRect(get_obj<SkRRect>(L, 1)->rect()); in lrrect_rect()
918 static int lrrect_type(lua_State* L) { in lrrect_type() argument
919 lua_pushstring(L, rrect_type(*get_obj<SkRRect>(L, 1))); in lrrect_type()
923 static int lrrect_radii(lua_State* L) { in lrrect_radii() argument
924 int corner = lua_tointeger(L, 2); in lrrect_radii()
930 v = get_obj<SkRRect>(L, 1)->radii((SkRRect::Corner)corner); in lrrect_radii()
932 lua_pushnumber(L, v.fX); in lrrect_radii()
933 lua_pushnumber(L, v.fY); in lrrect_radii()
937 static int lrrect_gc(lua_State* L) { in lrrect_gc() argument
938 get_obj<SkRRect>(L, 1)->~SkRRect(); in lrrect_gc()
952 static int limage_width(lua_State* L) { in limage_width() argument
953 lua_pushinteger(L, get_ref<SkImage>(L, 1)->width()); in limage_width()
957 static int limage_height(lua_State* L) { in limage_height() argument
958 lua_pushinteger(L, get_ref<SkImage>(L, 1)->height()); in limage_height()
962 static int limage_gc(lua_State* L) { in limage_gc() argument
963 get_ref<SkImage>(L, 1)->unref(); in limage_gc()
976 static int ltypeface_gc(lua_State* L) { in ltypeface_gc() argument
977 get_ref<SkTypeface>(L, 1)->unref(); in ltypeface_gc()
990 AutoCallLua(lua_State* L, const char func[], const char verb[]) : fL(L) { in AutoCallLua() argument
991 lua_getglobal(L, func); in AutoCallLua()
992 if (!lua_isfunction(L, -1)) { in AutoCallLua()
993 int t = lua_type(L, -1); in AutoCallLua()
997 lua_newtable(L); in AutoCallLua()
998 setfield_string(L, "verb", verb); in AutoCallLua()
1016 static int lsk_newDocumentPDF(lua_State* L) { in lsk_newDocumentPDF() argument
1018 if (lua_gettop(L) > 0 && lua_isstring(L, 1)) { in lsk_newDocumentPDF()
1019 file = lua_tolstring(L, 1, NULL); in lsk_newDocumentPDF()
1027 push_ref(L, doc); in lsk_newDocumentPDF()
1033 static int lsk_newPaint(lua_State* L) { in lsk_newPaint() argument
1034 push_new<SkPaint>(L); in lsk_newPaint()
1038 static int lsk_newPath(lua_State* L) { in lsk_newPath() argument
1039 push_new<SkPath>(L); in lsk_newPath()
1043 static int lsk_newRRect(lua_State* L) { in lsk_newRRect() argument
1044 SkRRect* rr = push_new<SkRRect>(L); in lsk_newRRect()
1049 static int lsk_newTypeface(lua_State* L) { in lsk_newTypeface() argument
1053 int count = lua_gettop(L); in lsk_newTypeface()
1054 if (count > 0 && lua_isstring(L, 1)) { in lsk_newTypeface()
1055 name = lua_tolstring(L, 1, NULL); in lsk_newTypeface()
1056 if (count > 1 && lua_isnumber(L, 2)) { in lsk_newTypeface()
1057 style = lua_tointegerx(L, 2, NULL) & SkTypeface::kBoldItalic; in lsk_newTypeface()
1067 push_ref(L, face); in lsk_newTypeface()
1072 static int lsk_loadImage(lua_State* L) { in lsk_loadImage() argument
1073 if (lua_gettop(L) > 0 && lua_isstring(L, 1)) { in lsk_loadImage()
1074 const char* name = lua_tolstring(L, 1, NULL); in lsk_loadImage()
1079 push_ref(L, image); in lsk_loadImage()
1088 static void register_Sk(lua_State* L) { in register_Sk() argument
1089 lua_newtable(L); in register_Sk()
1090 lua_pushvalue(L, -1); in register_Sk()
1091 lua_setglobal(L, "Sk"); in register_Sk()
1094 setfield_function(L, "newDocumentPDF", lsk_newDocumentPDF); in register_Sk()
1095 setfield_function(L, "loadImage", lsk_loadImage); in register_Sk()
1096 setfield_function(L, "newPaint", lsk_newPaint); in register_Sk()
1097 setfield_function(L, "newPath", lsk_newPath); in register_Sk()
1098 setfield_function(L, "newRRect", lsk_newRRect); in register_Sk()
1099 setfield_function(L, "newTypeface", lsk_newTypeface); in register_Sk()
1100 lua_pop(L, 1); // pop off the Sk table in register_Sk()
1103 #define REG_CLASS(L, C) \ argument
1105 luaL_newmetatable(L, get_mtname<C>()); \
1106 lua_pushvalue(L, -1); \
1107 lua_setfield(L, -2, "__index"); \
1108 luaL_setfuncs(L, g##C##_Methods, 0); \
1109 lua_pop(L, 1); /* pop off the meta-table */ \
1112 void SkLua::Load(lua_State* L) { in Load() argument
1113 register_Sk(L); in Load()
1114 REG_CLASS(L, SkCanvas); in Load()
1115 REG_CLASS(L, SkDocument); in Load()
1116 REG_CLASS(L, SkImage); in Load()
1117 REG_CLASS(L, SkPath); in Load()
1118 REG_CLASS(L, SkPaint); in Load()
1119 REG_CLASS(L, SkRRect); in Load()
1120 REG_CLASS(L, SkShader); in Load()
1121 REG_CLASS(L, SkTypeface); in Load()
1122 REG_CLASS(L, SkMatrix); in Load()
1125 extern "C" int luaopen_skia(lua_State* L);
1126 extern "C" int luaopen_skia(lua_State* L) { in luaopen_skia() argument
1127 SkLua::Load(L); in luaopen_skia()