Evdev joystick plugin
[lsnes.git] / lua / gui-pixel.cpp
blob7a23fde4522d375d35170e1999a3df44d2dac6dc
1 #include "lua-int.hpp"
2 #include "render.hpp"
4 namespace
6 struct render_object_pixel : public render_object
8 render_object_pixel(int32_t _x, int32_t _y, premultiplied_color _color) throw()
9 : x(_x), y(_y), color(_color) {}
10 ~render_object_pixel() throw() {}
11 void operator()(struct screen& scr) throw()
13 int32_t _x = x + scr.originx;
14 int32_t _y = y + scr.originy;
15 if(_x < 0 || static_cast<uint32_t>(_x) >= scr.width)
16 return;
17 if(_y < 0 || static_cast<uint32_t>(_y) >= scr.height)
18 return;
19 color.apply(scr.rowptr(_y)[_x]);
21 private:
22 int32_t x;
23 int32_t y;
24 premultiplied_color color;
27 function_ptr_luafun gui_pixel("gui.pixel", [](lua_State* LS, const std::string& fname) -> int {
28 if(!lua_render_ctx)
29 return 0;
30 int64_t color = 0xFFFFFFU;
31 int32_t x = get_numeric_argument<int32_t>(LS, 1, fname.c_str());
32 int32_t y = get_numeric_argument<int32_t>(LS, 2, fname.c_str());
33 get_numeric_argument<int64_t>(LS, 3, color, fname.c_str());
34 premultiplied_color pcolor(color);
35 lua_render_ctx->queue->add(*new render_object_pixel(x, y, pcolor));
36 return 0;
37 });