From c9333c94d9d2ee618b0d88e13d8cbb456809372b Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 16 Mar 2026 20:59:04 +0200 Subject: feat: Implement horizontal line segment --- AnimationObject.c | 12 ++++++++++++ AnimationObject.h | 9 +++++++++ graphics.c | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/AnimationObject.c b/AnimationObject.c index 16489c3..87fe324 100644 --- a/AnimationObject.c +++ b/AnimationObject.c @@ -1,5 +1,6 @@ #include "AnimationObject.h" #include +#include ARGB AO_CheckerPattern(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv) { @@ -64,3 +65,14 @@ AO_Line(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* p return pixel; } + +ARGB +AO_HorSegment(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv) { + struct AO_HorSegment hs = *(struct AO_HorSegment*)priv; + + if (abs(r) <= hs.width && hs.left <= c && c <= hs.right) { + ARGB_set(&pixel, hs.color); + } + + return pixel; +} diff --git a/AnimationObject.h b/AnimationObject.h index 95aa115..16f0b0e 100644 --- a/AnimationObject.h +++ b/AnimationObject.h @@ -44,4 +44,13 @@ struct AO_Line { ARGB AO_Line(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv); +struct AO_HorSegment { + i32 left; + i32 right; + double width; + color color; +}; + +ARGB AO_HorSegment(const Animation* anim, u32 frameIndex, ARGB pixel, i32 r, i32 c, void* priv); + #endif /* _ANIMATION_OBJECT */ diff --git a/graphics.c b/graphics.c index 931c486..553474c 100644 --- a/graphics.c +++ b/graphics.c @@ -107,6 +107,25 @@ main() { }; Animation_pushEvent(&anim, 30, 110, AM_MoveLinear, &ml2); + // Segment + struct AO_HorSegment ls1 = { + .left = -40, .right = 40, + .width = 3, .color = 0xFFA0A0A0, + }; + struct AM_MoveSpin ms3 = { + .theta = 3.14159 / 10, + .centerRow = 0, .centerCol = 0, + + .callback = AO_HorSegment, .priv = &ls1, + }; + struct AM_MoveLinear ml6 = { + .startRow = 0, .startCol = 0, + .dRow = 4, .dCol = 4, + + .callback = AM_MoveSpin, .priv = &ms3, + }; + Animation_pushEvent(&anim, 0, 120, AM_MoveLinear, &ml6); + Animation_render(&anim); fclose(fbclc); -- cgit v1.2.3