diff options
| -rw-r--r-- | AnimationObject.c | 12 | ||||
| -rw-r--r-- | AnimationObject.h | 9 | ||||
| -rw-r--r-- | graphics.c | 19 |
3 files changed, 40 insertions, 0 deletions
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 <math.h> +#include <stdlib.h> 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 */ @@ -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); |
