Skip to content

Commit

Permalink
[Script/LuaData] Added bindings for Image::recover/setPixel()
Browse files Browse the repository at this point in the history
- This couldn't have been done before as there were no bindings for byte vectors
  • Loading branch information
Razakhel committed Sep 26, 2023
1 parent a651927 commit 848b128
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/RaZ/Script/LuaData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,24 @@ void LuaWrapper::registerDataTypes() {
image["isEmpty"] = &Image::isEmpty;
image["recoverByteValue"] = &Image::recoverByteValue;
image["recoverFloatValue"] = &Image::recoverFloatValue;
image["recoverBytePixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<uint8_t>);
image["recoverFloatPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<float>);
image["recoverVec2bPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<uint8_t, 2>);
image["recoverVec3bPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<uint8_t, 3>);
image["recoverVec4bPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<uint8_t, 4>);
image["recoverVec2fPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<float, 2>);
image["recoverVec3fPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<float, 3>);
image["recoverVec4fPixel"] = PickOverload<std::size_t, std::size_t>(&Image::recoverPixel<float, 4>);
image["setByteValue"] = &Image::setByteValue;
image["setFloatValue"] = &Image::setFloatValue;
image["setBytePixel"] = PickOverload<std::size_t, std::size_t, uint8_t>(&Image::setPixel<uint8_t>);
image["setFloatPixel"] = PickOverload<std::size_t, std::size_t, float>(&Image::setPixel<float>);
image["setVec2bPixel"] = PickOverload<std::size_t, std::size_t, const Vec2b&>(&Image::setPixel<uint8_t, 2>);
image["setVec3bPixel"] = PickOverload<std::size_t, std::size_t, const Vec3b&>(&Image::setPixel<uint8_t, 3>);
image["setVec4bPixel"] = PickOverload<std::size_t, std::size_t, const Vec4b&>(&Image::setPixel<uint8_t, 4>);
image["setVec2fPixel"] = PickOverload<std::size_t, std::size_t, const Vec2f&>(&Image::setPixel<float, 2>);
image["setVec3fPixel"] = PickOverload<std::size_t, std::size_t, const Vec3f&>(&Image::setPixel<float, 3>);
image["setVec4fPixel"] = PickOverload<std::size_t, std::size_t, const Vec4f&>(&Image::setPixel<float, 4>);

state.new_enum<ImageColorspace>("ImageColorspace", {
{ "GRAY", ImageColorspace::GRAY },
Expand Down
4 changes: 4 additions & 0 deletions tests/src/RaZ/Script/LuaData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,15 @@ TEST_CASE("LuaData Image") {
assert(not img:isEmpty())
img:setFloatValue(0, 0, 0, 3.0)
assert(img:recoverFloatValue(0, 0, 0) == 3.0)
img:setVec4fPixel(0, 0, Vec4f.new(1, 2, 3, 4))
assert(img:recoverVec4fPixel(0, 0) == Vec4f.new(1, 2, 3, 4))
img = Image.new(1, 1, ImageColorspace.SRGB, ImageDataType.BYTE)
assert(img:getChannelCount() == 3)
img:setByteValue(0, 0, 0, 127)
assert(img:recoverByteValue(0, 0, 0) == 127)
img:setVec3bPixel(0, 0, Vec3b.new(1, 2, 3))
assert(img:recoverVec3bPixel(0, 0) == Vec3b.new(1, 2, 3))
local pngPath = FilePath.new(RAZ_TESTS_ROOT .. "assets/images/dëfàùltTêst.png")
local tgaPath = FilePath.new(RAZ_TESTS_ROOT .. "assets/images/dëfàùltTêst.tga")
Expand Down

0 comments on commit 848b128

Please sign in to comment.