Added an optional third argument to the width/height variant of love.image.newImageData. The new argument is a string containing raw byte pixel data to copy to the new ImageData (e.g. the result of a previous ImageData:getString with an ImageData of the same width and height..)

This commit is contained in:
Alex Szpakowski
2015-05-27 21:21:47 -03:00
parent f141cb3a16
commit 7e42d82308
2 changed files with 18 additions and 1 deletions
+17
View File
@@ -44,9 +44,26 @@ int w_newImageData(lua_State *L)
if (w <= 0 || h <= 0)
return luaL_error(L, "Invalid image size.");
size_t numbytes = 0;
const char *bytes = nullptr;
if (!lua_isnoneornil(L, 3))
bytes = luaL_checklstring(L, 3, &numbytes);
ImageData *t = nullptr;
luax_catchexcept(L, [&](){ t = instance()->newImageData(w, h); });
if (bytes)
{
if (numbytes != t->getSize())
{
t->release();
return luaL_error(L, "The size of the raw byte string must match the ImageData's actual size in bytes.");
}
memcpy(t->getData(), bytes, t->getSize());
}
luax_pushtype(L, IMAGE_IMAGE_DATA_ID, t);
t->release();
return 1;