aboutsummaryrefslogtreecommitdiff
path: root/src/sfml/graphics/RectangleShape.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/sfml/graphics/RectangleShape.zig')
-rw-r--r--src/sfml/graphics/RectangleShape.zig103
1 files changed, 64 insertions, 39 deletions
diff --git a/src/sfml/graphics/RectangleShape.zig b/src/sfml/graphics/RectangleShape.zig
index 34bb114..324199e 100644
--- a/src/sfml/graphics/RectangleShape.zig
+++ b/src/sfml/graphics/RectangleShape.zig
@@ -17,110 +17,131 @@ pub fn create(size: sf.Vector2f) !RectangleShape {
return sf.Error.nullptrUnknownReason;
sf.c.sfRectangleShape_setFillColor(rect, sf.c.sfWhite);
- sf.c.sfRectangleShape_setSize(rect, size.toCSFML());
+ sf.c.sfRectangleShape_setSize(rect, size._toCSFML());
- return RectangleShape{ .ptr = rect.? };
+ return RectangleShape{ ._ptr = rect.? };
}
/// Destroys a rectangle shape
-pub fn destroy(self: RectangleShape) void {
- sf.c.sfRectangleShape_destroy(self.ptr);
+pub fn destroy(self: *RectangleShape) void {
+ sf.c.sfRectangleShape_destroy(self._ptr);
}
// Draw function
-pub fn sfDraw(self: RectangleShape, window: sf.RenderWindow, states: ?*sf.c.sfRenderStates) void {
- sf.c.sfRenderWindow_drawRectangleShape(window.ptr, self.ptr, states);
+pub fn sfDraw(self: RectangleShape, window: anytype, states: ?*sf.c.sfRenderStates) void {
+ switch (@TypeOf(window)) {
+ sf.RenderWindow => sf.c.sfRenderWindow_drawRectangleShape(window._ptr, self._ptr, states),
+ sf.RenderTexture => sf.c.sfRenderTexture_drawRectangleShape(window._ptr, self._ptr, states),
+ else => @compileError("window must be a render target"),
+ }
}
// Getters/setters
/// Gets the fill color of this rectangle shape
pub fn getFillColor(self: RectangleShape) sf.Color {
- return sf.Color.fromCSFML(sf.c.sfRectangleShape_getFillColor(self.ptr));
+ return sf.Color._fromCSFML(sf.c.sfRectangleShape_getFillColor(self._ptr));
}
/// Sets the fill color of this rectangle shape
-pub fn setFillColor(self: RectangleShape, color: sf.Color) void {
- sf.c.sfRectangleShape_setFillColor(self.ptr, color.toCSFML());
+pub fn setFillColor(self: *RectangleShape, color: sf.Color) void {
+ sf.c.sfRectangleShape_setFillColor(self._ptr, color._toCSFML());
+}
+
+/// Gets the outline color of this rectangle shape
+pub fn getOutlineColor(self: RectangleShape) sf.Color {
+ return sf.Color._fromCSFML(sf.c.sfRectangleShape_getOutlineColor(self._ptr));
+}
+/// Sets the outline color of this rectangle shape
+pub fn setOutlineColor(self: *RectangleShape, color: sf.Color) void {
+ sf.c.sfRectangleShape_setOutlineColor(self._ptr, color._toCSFML());
+}
+
+/// Gets the outline thickness of this rectangle shape
+pub fn getOutlineThickness(self: RectangleShape) f32 {
+ return sf.c.sfRectangleShape_getOutlineThickness(self._ptr);
+}
+/// Sets the outline thickness of this rectangle shape
+pub fn setOutlineThickness(self: *RectangleShape, thickness: f32) void {
+ sf.c.sfRectangleShape_setOutlineThickness(self._ptr, thickness);
}
/// Gets the size of this rectangle shape
pub fn getSize(self: RectangleShape) sf.Vector2f {
- return sf.Vector2f.fromCSFML(sf.c.sfRectangleShape_getSize(self.ptr));
+ return sf.Vector2f._fromCSFML(sf.c.sfRectangleShape_getSize(self._ptr));
}
/// Sets the size of this rectangle shape
-pub fn setSize(self: RectangleShape, size: sf.Vector2f) void {
- sf.c.sfRectangleShape_setSize(self.ptr, size.toCSFML());
+pub fn setSize(self: *RectangleShape, size: sf.Vector2f) void {
+ sf.c.sfRectangleShape_setSize(self._ptr, size._toCSFML());
}
/// Gets the position of this rectangle shape
pub fn getPosition(self: RectangleShape) sf.Vector2f {
- return sf.Vector2f.fromCSFML(sf.c.sfRectangleShape_getPosition(self.ptr));
+ return sf.Vector2f._fromCSFML(sf.c.sfRectangleShape_getPosition(self._ptr));
}
/// Sets the position of this rectangle shape
-pub fn setPosition(self: RectangleShape, pos: sf.Vector2f) void {
- sf.c.sfRectangleShape_setPosition(self.ptr, pos.toCSFML());
+pub fn setPosition(self: *RectangleShape, pos: sf.Vector2f) void {
+ sf.c.sfRectangleShape_setPosition(self._ptr, pos._toCSFML());
}
/// Adds the offset to this shape's position
-pub fn move(self: RectangleShape, offset: sf.Vector2f) void {
- sf.c.sfRectangleShape_move(self.ptr, offset.toCSFML());
+pub fn move(self: *RectangleShape, offset: sf.Vector2f) void {
+ sf.c.sfRectangleShape_move(self._ptr, offset._toCSFML());
}
/// Gets the origin of this rectangle shape
pub fn getOrigin(self: RectangleShape) sf.Vector2f {
- return sf.Vector2f.fromCSFML(sf.c.sfRectangleShape_getOrigin(self.ptr));
+ return sf.Vector2f._fromCSFML(sf.c.sfRectangleShape_getOrigin(self._ptr));
}
/// Sets the origin of this rectangle shape
-pub fn setOrigin(self: RectangleShape, origin: sf.Vector2f) void {
- sf.c.sfRectangleShape_setOrigin(self.ptr, origin.toCSFML());
+pub fn setOrigin(self: *RectangleShape, origin: sf.Vector2f) void {
+ sf.c.sfRectangleShape_setOrigin(self._ptr, origin._toCSFML());
}
/// Gets the rotation of this rectangle shape
pub fn getRotation(self: RectangleShape) f32 {
- return sf.c.sfRectangleShape_getRotation(self.ptr);
+ return sf.c.sfRectangleShape_getRotation(self._ptr);
}
/// Sets the rotation of this rectangle shape
-pub fn setRotation(self: RectangleShape, angle: f32) void {
- sf.c.sfRectangleShape_setRotation(self.ptr, angle);
+pub fn setRotation(self: *RectangleShape, angle: f32) void {
+ sf.c.sfRectangleShape_setRotation(self._ptr, angle);
}
/// Rotates this shape by a given amount
-pub fn rotate(self: RectangleShape, angle: f32) void {
- sf.c.sfRectangleShape_rotate(self.ptr, angle);
+pub fn rotate(self: *RectangleShape, angle: f32) void {
+ sf.c.sfRectangleShape_rotate(self._ptr, angle);
}
/// Gets the texture of this shape
pub fn getTexture(self: RectangleShape) ?sf.Texture {
- const t = sf.c.sfRectangleShape_getTexture(self.ptr);
+ const t = sf.c.sfRectangleShape_getTexture(self._ptr);
if (t) |tex| {
- return sf.Texture{ .const_ptr = tex };
- } else
- return null;
+ return sf.Texture{ ._const_ptr = tex };
+ } else return null;
}
/// Sets the texture of this shape
-pub fn setTexture(self: RectangleShape, texture: ?sf.Texture) void {
- var tex = if (texture) |t| t.get() else null;
- sf.c.sfRectangleShape_setTexture(self.ptr, tex, 0);
+pub fn setTexture(self: *RectangleShape, texture: ?sf.Texture) void {
+ var tex = if (texture) |t| t._get() else null;
+ sf.c.sfRectangleShape_setTexture(self._ptr, tex, 0);
}
/// Gets the sub-rectangle of the texture that the shape will display
pub fn getTextureRect(self: RectangleShape) sf.FloatRect {
- return sf.FloatRect.fromCSFML(sf.c.sfRectangleShape_getTextureRect(self.ptr));
+ return sf.FloatRect._fromCSFML(sf.c.sfRectangleShape_getTextureRect(self._ptr));
}
/// Sets the sub-rectangle of the texture that the shape will display
-pub fn setTextureRect(self: RectangleShape, rect: sf.FloatRect) void {
- sf.c.sfRectangleShape_getTextureRect(self.ptr, rect.toCSFML());
+pub fn setTextureRect(self: *RectangleShape, rect: sf.FloatRect) void {
+ sf.c.sfRectangleShape_getTextureRect(self._ptr, rect._toCSFML());
}
/// Gets the bounds in the local coordinates system
pub fn getLocalBounds(self: RectangleShape) sf.FloatRect {
- return sf.FloatRect.fromCSFML(sf.c.sfRectangleShape_getLocalBounds(self.ptr));
+ return sf.FloatRect._fromCSFML(sf.c.sfRectangleShape_getLocalBounds(self._ptr));
}
/// Gets the bounds in the global coordinates
pub fn getGlobalBounds(self: RectangleShape) sf.FloatRect {
- return sf.FloatRect.fromCSFML(sf.c.sfRectangleShape_getGlobalBounds(self.ptr));
+ return sf.FloatRect._fromCSFML(sf.c.sfRectangleShape_getGlobalBounds(self._ptr));
}
/// Pointer to the csfml structure
-ptr: *sf.c.sfRectangleShape,
+_ptr: *sf.c.sfRectangleShape,
test "rectangle shape: sane getters and setters" {
const tst = @import("std").testing;
@@ -131,13 +152,17 @@ test "rectangle shape: sane getters and setters" {
try tst.expectEqual(sf.Vector2f{ .x = 30, .y = 50 }, rect.getSize());
rect.setFillColor(sf.Color.Yellow);
+ rect.setOutlineColor(sf.Color.Red);
+ rect.setOutlineThickness(3);
rect.setSize(.{ .x = 15, .y = 510 });
rect.setRotation(15);
rect.setPosition(.{ .x = 1, .y = 2 });
rect.setOrigin(.{ .x = 20, .y = 25 });
- rect.setTexture(null); //Weirdly, getTexture if texture wasn't set gives a wrong pointer
+ rect.setTexture(null); //Weirdly, getTexture if texture wasn't set gives a wrong pointer
try tst.expectEqual(sf.Color.Yellow, rect.getFillColor());
+ try tst.expectEqual(sf.Color.Red, rect.getOutlineColor());
+ try tst.expectEqual(@as(f32, 3), rect.getOutlineThickness());
try tst.expectEqual(sf.Vector2f{ .x = 15, .y = 510 }, rect.getSize());
try tst.expectEqual(@as(f32, 15), rect.getRotation());
try tst.expectEqual(sf.Vector2f{ .x = 1, .y = 2 }, rect.getPosition());