| 19 | namespace Star { |
| 20 | |
| 21 | LuaMethods<CanvasWidgetPtr> LuaUserDataMethods<CanvasWidgetPtr>::make() { |
| 22 | LuaMethods<CanvasWidgetPtr> methods; |
| 23 | |
| 24 | methods.registerMethodWithSignature<Vec2I, CanvasWidgetPtr>("size", mem_fn(&CanvasWidget::size)); |
| 25 | methods.registerMethodWithSignature<Vec2I, CanvasWidgetPtr>("mousePosition", mem_fn(&CanvasWidget::mousePosition)); |
| 26 | |
| 27 | methods.registerMethodWithSignature<void, CanvasWidgetPtr>("clear", mem_fn(&CanvasWidget::clear)); |
| 28 | |
| 29 | methods.registerMethod("drawDrawable", [](CanvasWidgetPtr canvasWidget, Drawable drawable, Maybe<Vec2F> screenPos) { |
| 30 | canvasWidget->drawDrawable(std::move(drawable), screenPos.value(Vec2F())); |
| 31 | }); |
| 32 | |
| 33 | methods.registerMethod("drawDrawables", [](CanvasWidgetPtr canvasWidget, List<Drawable> drawables, Maybe<Vec2F> screenPos) { |
| 34 | Vec2F pos = screenPos.value(Vec2F()); |
| 35 | for (auto& drawable : drawables) |
| 36 | canvasWidget->drawDrawable(std::move(drawable), pos); |
| 37 | }); |
| 38 | |
| 39 | methods.registerMethod("drawImage", |
| 40 | [](CanvasWidgetPtr canvasWidget, String image, Vec2F position, Maybe<float> scale, Maybe<Color> color, Maybe<bool> centered) { |
| 41 | if (centered && *centered) |
| 42 | canvasWidget->drawImageCentered(image, position, scale.value(1.0f), color.value(Color::White).toRgba()); |
| 43 | else |
| 44 | canvasWidget->drawImage(image, position, scale.value(1.0f), color.value(Color::White).toRgba()); |
| 45 | }); |
| 46 | methods.registerMethod("drawImageDrawable", |
| 47 | [](CanvasWidgetPtr canvasWidget, String image, Vec2F position, MVariant<Vec2F, float> scale, Maybe<Color> color, Maybe<float> rotation) { |
| 48 | auto drawable = Drawable::makeImage(image, 1.0, true, {0.0, 0.0}, color.value(Color::White)); |
| 49 | if (auto s = scale.maybe<Vec2F>()) |
| 50 | drawable.transform(Mat3F::scaling(*s)); |
| 51 | else if(auto s = scale.maybe<float>()) |
| 52 | drawable.transform(Mat3F::scaling(*s)); |
| 53 | if (rotation) |
| 54 | drawable.rotate(*rotation); |
| 55 | canvasWidget->drawDrawable(drawable, position); |
| 56 | }); |
| 57 | methods.registerMethod("drawImageRect", |
| 58 | [](CanvasWidgetPtr canvasWidget, String image, RectF texCoords, RectF screenCoords, Maybe<Color> color) { |
| 59 | canvasWidget->drawImageRect(image, texCoords, screenCoords, color.value(Color::White).toRgba()); |
| 60 | }); |
| 61 | methods.registerMethod("drawTiledImage", |
| 62 | [](CanvasWidgetPtr canvasWidget, String image, Vec2D offset, RectF screenCoords, Maybe<float> scale, Maybe<Color> color) { |
| 63 | canvasWidget->drawTiledImage(image, scale.value(1.0f), offset, screenCoords, color.value(Color::White).toRgba()); |
| 64 | }); |
| 65 | methods.registerMethod("drawLine", |
| 66 | [](CanvasWidgetPtr canvasWidget, Vec2F begin, Vec2F end, Maybe<Color> color, Maybe<float> lineWidth) { |
| 67 | canvasWidget->drawLine(begin, end, color.value(Color::White).toRgba(), lineWidth.value(1.0f)); |
| 68 | }); |
| 69 | methods.registerMethod("drawRect", |
| 70 | [](CanvasWidgetPtr canvasWidget, RectF rect, Maybe<Color> color) { |
| 71 | canvasWidget->drawRect(rect, color.value(Color::White).toRgba()); |
| 72 | }); |
| 73 | methods.registerMethod("drawPoly", |
| 74 | [](CanvasWidgetPtr canvasWidget, PolyF poly, Maybe<Color> color, Maybe<float> lineWidth) { |
| 75 | canvasWidget->drawPoly(poly, color.value(Color::White).toRgba(), lineWidth.value(1.0f)); |
| 76 | }); |
| 77 | methods.registerMethod("drawTriangles", |
| 78 | [](CanvasWidgetPtr canvasWidget, List<PolyF> triangles, Maybe<Color> color) { |
nothing calls this directly
no test coverage detected