From 560ae08424956bb495bc2453973467d138029c7c Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 25 Mar 2024 03:46:21 +1100 Subject: Add support for directly setting image assets and processing Image userdata --- source/base/scripting/StarImageLuaBindings.cpp | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 source/base/scripting/StarImageLuaBindings.cpp (limited to 'source/base/scripting/StarImageLuaBindings.cpp') diff --git a/source/base/scripting/StarImageLuaBindings.cpp b/source/base/scripting/StarImageLuaBindings.cpp new file mode 100644 index 0000000..0f5d1e4 --- /dev/null +++ b/source/base/scripting/StarImageLuaBindings.cpp @@ -0,0 +1,38 @@ +#include "StarImageLuaBindings.hpp" +#include "StarLuaConverters.hpp" +#include "StarImage.hpp" +#include "StarRootBase.hpp" + +namespace Star { + +LuaMethods LuaUserDataMethods::make() { + LuaMethods methods; + + methods.registerMethodWithSignature("size", mem_fn(&Image::size)); + methods.registerMethodWithSignature("drawInto", mem_fn(&Image::drawInto)); + methods.registerMethodWithSignature("copyInto", mem_fn(&Image::copyInto)); + methods.registerMethod("set", [](Image& image, unsigned x, unsigned y, Color const& color) { + image.set(x, y, color.toRgba()); + }); + + methods.registerMethod("get", [](Image& image, unsigned x, unsigned y) { + return Color::rgba(image.get(x, y)); + }); + + methods.registerMethod("subImage", [](Image& image, Vec2U const& min, Vec2U const& size) { + return image.subImage(min, size); + }); + + methods.registerMethod("process", [](Image& image, String const& directives) { + return processImageOperations(parseImageOperations(directives), image, [](String const& path) -> Image const* { + if (auto root = RootBase::singletonPtr()) + return root->assets()->image(path).get(); + else + return nullptr; + }); + }); + + return methods; +} + +} -- cgit v1.2.3