mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-07 12:01:50 +00:00
add canvas:set_data
This commit is contained in:
parent
22d49c1c65
commit
6078a8802e
4 changed files with 32 additions and 10 deletions
|
|
@ -132,6 +132,25 @@ static int l_blit(State* L) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int l_set_data(State* L) {
|
||||
auto& canvas = require_canvas(L, 1);
|
||||
auto& image = canvas.data();
|
||||
auto data = image.getData();
|
||||
int len = objlen(L, 2);
|
||||
if (len < image.getDataSize()) {
|
||||
throw std::runtime_error(
|
||||
"data size mismatch expected " +
|
||||
std::to_string(image.getDataSize()) + ", got " + std::to_string(len)
|
||||
);
|
||||
}
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
rawgeti(L, i + 1, 2);
|
||||
data[i] = tointeger(L, -1);
|
||||
pop(L);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l_update(State* L) {
|
||||
if (auto canvas = touserdata<LuaCanvas>(L, 1)) {
|
||||
if (canvas->hasTexture()) {
|
||||
|
|
@ -148,6 +167,7 @@ static std::unordered_map<std::string, lua_CFunction> methods {
|
|||
{"blit", lua::wrap<l_blit>},
|
||||
{"clear", lua::wrap<l_clear>},
|
||||
{"update", lua::wrap<l_update>},
|
||||
{"set_data", lua::wrap<l_set_data>},
|
||||
};
|
||||
|
||||
static int l_meta_index(State* L) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue