summaryrefslogtreecommitdiff
path: root/source/libs/asura-lib-core/graphics/binding/_image.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/libs/asura-lib-core/graphics/binding/_image.cpp')
-rw-r--r--source/libs/asura-lib-core/graphics/binding/_image.cpp57
1 files changed, 51 insertions, 6 deletions
diff --git a/source/libs/asura-lib-core/graphics/binding/_image.cpp b/source/libs/asura-lib-core/graphics/binding/_image.cpp
index 7c1034c..b455ad5 100644
--- a/source/libs/asura-lib-core/graphics/binding/_image.cpp
+++ b/source/libs/asura-lib-core/graphics/binding/_image.cpp
@@ -10,10 +10,13 @@ namespace AsuraEngine
LUAX_REGISTRY(Image)
{
LUAX_REGISTER_METHODS(state,
+ { "New", _New },
{ "Load", _Load },
{ "GetWidth", _GetWidth },
{ "GetHeight", _GetHeight },
- { "GetSize", _GetSize }
+ { "GetSize", _GetSize },
+ { "GetPixel", _GetPixel },
+ { "Render", _Render }
);
}
@@ -22,33 +25,75 @@ namespace AsuraEngine
}
- // image:Load()
+ // image = Image.New()
+ LUAX_IMPL_METHOD(Image, _New)
+ {
+ LUAX_STATE(L);
+
+ Image* image = new Image();
+ image->PushLuaxUserdata(state);
+ return 0;
+ }
+
+ // successed = image:Load(image_data)
LUAX_IMPL_METHOD(Image, _Load)
{
LUAX_PREPARE(L, Image);
+ ImageData* imgdata = state.CheckUserdata<ImageData>(2);
+ bool loaded = self->Load(imgdata);
+ state.Push(loaded);
+ return 1;
}
- // image:GetWidth()
+ // width = image:GetWidth()
LUAX_IMPL_METHOD(Image, _GetWidth)
{
LUAX_PREPARE(L, Image);
+ state.Push(self->GetWidth());
+ return 1;
}
- // image:GetHeight()
+ // height = image:GetHeight()
LUAX_IMPL_METHOD(Image, _GetHeight)
{
LUAX_PREPARE(L, Image);
+ state.Push(self->GetHeight());
+ return 1;
}
- // image:GetSize()
+ // w, h = image:GetSize()
LUAX_IMPL_METHOD(Image, _GetSize)
{
LUAX_PREPARE(L, Image);
+ Math::Vector2u size = self->GetSize();
+ state.Push(size.x);
+ state.Push(size.y);
+ return 2;
+ }
+
+ // color32 = image:GetPixel(x, y)
+ LUAX_IMPL_METHOD(Image, _GetPixel)
+ {
+ LUAX_PREPARE(L, Image);
+
+ uint x = state.CheckParam<uint>(2);
+ uint y = state.CheckParam<uint>(3);
+ Color32* c32 = new Color32(self->GetPixel(x, y));
+ c32->PushLuaxUserdata(state);
+ return 1;
+ }
+
+ // image:Render()
+ LUAX_IMPL_METHOD(Image, _Render)
+ {
+ LUAX_PREPARE(L, Image);
+
+ return 0;
}
}
-}
+} \ No newline at end of file