| Index: src/utils/SkLua.cpp
|
| diff --git a/src/utils/SkLua.cpp b/src/utils/SkLua.cpp
|
| index dd79a34b909a8328cb81f105151a2889805221cd..ba8a4c841ea73c9020155be53fbf9ff298e44cc5 100644
|
| --- a/src/utils/SkLua.cpp
|
| +++ b/src/utils/SkLua.cpp
|
| @@ -11,6 +11,7 @@
|
| #include "GrReducedClip.h"
|
| #endif
|
|
|
| +#include "SkBlurImageFilter.h"
|
| #include "SkCanvas.h"
|
| #include "SkData.h"
|
| #include "SkDecodingImageGenerator.h"
|
| @@ -43,6 +44,7 @@ template <typename T> const char* get_mtname();
|
| DEF_MTNAME(SkCanvas)
|
| DEF_MTNAME(SkDocument)
|
| DEF_MTNAME(SkImage)
|
| +DEF_MTNAME(SkImageFilter)
|
| DEF_MTNAME(SkMatrix)
|
| DEF_MTNAME(SkRRect)
|
| DEF_MTNAME(SkPath)
|
| @@ -402,6 +404,10 @@ static SkScalar getfield_scalar_default(lua_State* L, int index, const char key[
|
| return value;
|
| }
|
|
|
| +static SkScalar byte2unit(U8CPU byte) {
|
| + return byte / 255.0f;
|
| +}
|
| +
|
| static U8CPU unit2byte(SkScalar x) {
|
| if (x <= 0) {
|
| return 0;
|
| @@ -786,6 +792,16 @@ static int lpaint_isVerticalText(lua_State* L) {
|
| return 1;
|
| }
|
|
|
| +static int lpaint_getAlpha(lua_State* L) {
|
| + SkLua(L).pushScalar(byte2unit(get_obj<SkPaint>(L, 1)->getAlpha()));
|
| + return 1;
|
| +}
|
| +
|
| +static int lpaint_setAlpha(lua_State* L) {
|
| + get_obj<SkPaint>(L, 1)->setAlpha(unit2byte(lua2scalar(L, 2)));
|
| + return 0;
|
| +}
|
| +
|
| static int lpaint_getColor(lua_State* L) {
|
| SkLua(L).pushColor(get_obj<SkPaint>(L, 1)->getColor());
|
| return 1;
|
| @@ -959,17 +975,33 @@ static int lpaint_getEffects(lua_State* L) {
|
| const SkPaint* paint = get_obj<SkPaint>(L, 1);
|
|
|
| lua_newtable(L);
|
| - setfield_bool_if(L, "looper", !!paint->getLooper());
|
| - setfield_bool_if(L, "pathEffect", !!paint->getPathEffect());
|
| - setfield_bool_if(L, "rasterizer", !!paint->getRasterizer());
|
| - setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter());
|
| - setfield_bool_if(L, "shader", !!paint->getShader());
|
| + setfield_bool_if(L, "looper", !!paint->getLooper());
|
| + setfield_bool_if(L, "pathEffect", !!paint->getPathEffect());
|
| + setfield_bool_if(L, "rasterizer", !!paint->getRasterizer());
|
| + setfield_bool_if(L, "maskFilter", !!paint->getMaskFilter());
|
| + setfield_bool_if(L, "shader", !!paint->getShader());
|
| setfield_bool_if(L, "colorFilter", !!paint->getColorFilter());
|
| setfield_bool_if(L, "imageFilter", !!paint->getImageFilter());
|
| - setfield_bool_if(L, "xfermode", !!paint->getXfermode());
|
| + setfield_bool_if(L, "xfermode", !!paint->getXfermode());
|
| return 1;
|
| }
|
|
|
| +static int lpaint_getImageFilter(lua_State* L) {
|
| + const SkPaint* paint = get_obj<SkPaint>(L, 1);
|
| + SkImageFilter* imf = paint->getImageFilter();
|
| + if (imf) {
|
| + push_ref(L, imf);
|
| + return 1;
|
| + }
|
| + return 0;
|
| +}
|
| +
|
| +static int lpaint_setImageFilter(lua_State* L) {
|
| + SkPaint* paint = get_obj<SkPaint>(L, 1);
|
| + paint->setImageFilter(get_ref<SkImageFilter>(L, 2));
|
| + return 0;
|
| +}
|
| +
|
| static int lpaint_getShader(lua_State* L) {
|
| const SkPaint* paint = get_obj<SkPaint>(L, 1);
|
| SkShader* shader = paint->getShader();
|
| @@ -1010,6 +1042,8 @@ static const struct luaL_Reg gSkPaint_Methods[] = {
|
| { "isEmbeddedBitmapText", lpaint_isEmbeddedBitmapText },
|
| { "isAutohinted", lpaint_isAutohinted },
|
| { "isVerticalText", lpaint_isVerticalText },
|
| + { "getAlpha", lpaint_getAlpha },
|
| + { "setAlpha", lpaint_setAlpha },
|
| { "getColor", lpaint_getColor },
|
| { "setColor", lpaint_setColor },
|
| { "getTextSize", lpaint_getTextSize },
|
| @@ -1033,6 +1067,8 @@ static const struct luaL_Reg gSkPaint_Methods[] = {
|
| { "measureText", lpaint_measureText },
|
| { "getFontMetrics", lpaint_getFontMetrics },
|
| { "getEffects", lpaint_getEffects },
|
| + { "getImageFilter", lpaint_getImageFilter },
|
| + { "setImageFilter", lpaint_setImageFilter },
|
| { "getShader", lpaint_getShader },
|
| { "getPathEffect", lpaint_getPathEffect },
|
| { "__gc", lpaint_gc },
|
| @@ -1157,6 +1193,18 @@ static const struct luaL_Reg gSkPathEffect_Methods[] = {
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| +static int lpimagefilter_gc(lua_State* L) {
|
| + get_ref<SkImageFilter>(L, 1)->unref();
|
| + return 0;
|
| +}
|
| +
|
| +static const struct luaL_Reg gSkImageFilter_Methods[] = {
|
| + { "__gc", lpimagefilter_gc },
|
| + { NULL, NULL }
|
| +};
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +
|
| static int lmatrix_getType(lua_State* L) {
|
| SkMatrix::TypeMask mask = get_obj<SkMatrix>(L, 1)->getType();
|
|
|
| @@ -1688,6 +1736,19 @@ static int lsk_newDocumentPDF(lua_State* L) {
|
| }
|
| }
|
|
|
| +static int lsk_newBlurImageFilter(lua_State* L) {
|
| + SkScalar sigmaX = lua2scalar_def(L, 1, 0);
|
| + SkScalar sigmaY = lua2scalar_def(L, 2, 0);
|
| + SkImageFilter* imf = SkBlurImageFilter::Create(sigmaX, sigmaY);
|
| + if (NULL == imf) {
|
| + lua_pushnil(L);
|
| + } else {
|
| + push_ref(L, imf);
|
| + imf->unref();
|
| + }
|
| + return 1;
|
| +}
|
| +
|
| static int lsk_newMatrix(lua_State* L) {
|
| push_new<SkMatrix>(L)->reset();
|
| return 1;
|
| @@ -1776,6 +1837,7 @@ static void register_Sk(lua_State* L) {
|
|
|
| setfield_function(L, "newDocumentPDF", lsk_newDocumentPDF);
|
| setfield_function(L, "loadImage", lsk_loadImage);
|
| + setfield_function(L, "newBlurImageFilter", lsk_newBlurImageFilter);
|
| setfield_function(L, "newMatrix", lsk_newMatrix);
|
| setfield_function(L, "newPaint", lsk_newPaint);
|
| setfield_function(L, "newPath", lsk_newPath);
|
| @@ -1800,6 +1862,7 @@ void SkLua::Load(lua_State* L) {
|
| REG_CLASS(L, SkCanvas);
|
| REG_CLASS(L, SkDocument);
|
| REG_CLASS(L, SkImage);
|
| + REG_CLASS(L, SkImageFilter);
|
| REG_CLASS(L, SkPaint);
|
| REG_CLASS(L, SkPath);
|
| REG_CLASS(L, SkPathEffect);
|
|
|