From 250e30d73f09e9da2b5a81d0fbae63744ae12a73 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 2 Apr 2019 08:47:15 +0800 Subject: *misc --- .../asura-lib-core/graphics/binding/_image.cpp | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 source/libs/asura-lib-core/graphics/binding/_image.cpp (limited to 'source/libs/asura-lib-core/graphics/binding/_image.cpp') diff --git a/source/libs/asura-lib-core/graphics/binding/_image.cpp b/source/libs/asura-lib-core/graphics/binding/_image.cpp new file mode 100644 index 0000000..cb008d3 --- /dev/null +++ b/source/libs/asura-lib-core/graphics/binding/_image.cpp @@ -0,0 +1,99 @@ +#include "../image.h" + +using namespace std; + +namespace AsuraEngine +{ + namespace Graphics + { + + LUAX_REGISTRY(Image) + { + LUAX_REGISTER_METHODS(state, + { "New", _New }, + { "Load", _Load }, + { "GetWidth", _GetWidth }, + { "GetHeight", _GetHeight }, + { "GetSize", _GetSize }, + { "GetPixel", _GetPixel }, + { "Render", _Render } + ); + } + + LUAX_POSTPROCESS(Image) + { + + } + + // 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(2); + bool loaded = self->Load(imgdata); + state.Push(loaded); + return 1; + } + + // width = image:GetWidth() + LUAX_IMPL_METHOD(Image, _GetWidth) + { + LUAX_PREPARE(L, Image); + + state.Push(self->GetWidth()); + return 1; + } + + // height = image:GetHeight() + LUAX_IMPL_METHOD(Image, _GetHeight) + { + LUAX_PREPARE(L, Image); + + state.Push(self->GetHeight()); + return 1; + } + + // 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.CheckValue(2); + uint y = state.CheckValue(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 -- cgit v1.1-26-g67d0