1 #include "core/framebuffer.hpp"
2 #include "core/instance.hpp"
3 #include "lua/internal.hpp"
4 #include "lua/bitmap.hpp"
8 int screenshot(lua::state
& L
, lua::parameters
& P
)
14 CORE().fbuf
->take_screenshot(filename
);
18 int screenshot_bitmap(lua::state
& L
, lua::parameters
& P
)
21 framebuffer::raw
& _fb
= core
.fbuf
->render_get_latest_screen();
23 auto osize
= std::make_pair(_fb
.get_width(), _fb
.get_height());
24 std::vector
<uint32_t> tmp(_fb
.get_width());
25 lua_dbitmap
* b
= lua::_class
<lua_dbitmap
>::create(L
, osize
.first
, osize
.second
);
26 for(size_t y
= 0; y
< osize
.second
; y
++) {
27 _fb
.get_format()->decode(&tmp
[0], _fb
.get_start() + _fb
.get_stride() * y
,
29 for(size_t x
= 0; x
< osize
.first
; x
++)
30 b
->pixels
[y
* b
->width
+ x
] = framebuffer::color(tmp
[x
]);
33 core
.fbuf
->render_get_latest_screen_end();
36 core
.fbuf
->render_get_latest_screen_end();
40 lua::functions
LUA_screenshot_fns(lua_func_misc
, "gui", {
41 {"screenshot", screenshot
},
42 {"screenshot_bitmap", screenshot_bitmap
},