ISF15ACP4 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
isf15acp4_animator.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef>
9#include <cstdint>
10
12
13namespace isf15acp4 {
14
16using AnimationFrameFn = void (*)(GraphicsContext& gfx, uint32_t frame, void* user_data) noexcept;
17
22class Animator {
23public:
24 Animator(GraphicsContext& gfx, AnimationFrameFn fn, void* user_data = nullptr,
25 uint32_t fps = 30) noexcept;
26
28 bool Tick(uint32_t elapsed_ms) noexcept;
29
31 void RenderNow() noexcept;
32
33 void SetFps(uint32_t fps) noexcept { frame_ms_ = fps > 0 ? (1000u / fps) : 33u; }
34 void Reset() noexcept { frame_ = 0; elapsed_accum_ = 0; }
35 [[nodiscard]] uint32_t Frame() const noexcept { return frame_; }
36
37private:
41 uint32_t frame_{0};
42 uint32_t frame_ms_{33};
43 uint32_t elapsed_accum_{0};
44};
45
46namespace animations {
47
48void ColorWheel(GraphicsContext& gfx, uint32_t frame, void* user_data) noexcept;
49void Plasma(GraphicsContext& gfx, uint32_t frame, void* user_data) noexcept;
50void ScrollingText(GraphicsContext& gfx, uint32_t frame, void* user_data) noexcept;
51void PulseButton(GraphicsContext& gfx, uint32_t frame, void* user_data) noexcept;
52
53} // namespace animations
54
55} // namespace isf15acp4
56
57#define ISF15ACP4_ANIMATOR_HEADER_INCLUDED
58#include "../src/isf15acp4_animator.ipp"
59#undef ISF15ACP4_ANIMATOR_HEADER_INCLUDED
Drives timed frame updates on top of a GraphicsContext.
Definition isf15acp4_animator.hpp:22
uint32_t Frame() const noexcept
Definition isf15acp4_animator.hpp:35
AnimationFrameFn frame_fn_
Definition isf15acp4_animator.hpp:39
uint32_t frame_
Definition isf15acp4_animator.hpp:41
void SetFps(uint32_t fps) noexcept
Definition isf15acp4_animator.hpp:33
void RenderNow() noexcept
Force immediate frame render.
Definition isf15acp4_animator.ipp:25
GraphicsContext & gfx_
Definition isf15acp4_animator.hpp:38
bool Tick(uint32_t elapsed_ms) noexcept
Advance animation clock and invoke frame callback when due.
Definition isf15acp4_animator.ipp:15
void * user_data_
Definition isf15acp4_animator.hpp:40
uint32_t frame_ms_
Definition isf15acp4_animator.hpp:42
void Reset() noexcept
Definition isf15acp4_animator.hpp:34
uint32_t elapsed_accum_
Definition isf15acp4_animator.hpp:43
Owns the active graphics backend selected at construction time.
Definition isf15acp4_graphics_context.hpp:42
Runtime-selectable graphics backend for SmartDisplay applications.
void Plasma(GraphicsContext &gfx, uint32_t frame, void *user_data) noexcept
Definition isf15acp4_animator.ipp:57
void PulseButton(GraphicsContext &gfx, uint32_t frame, void *user_data) noexcept
Definition isf15acp4_animator.ipp:88
void ScrollingText(GraphicsContext &gfx, uint32_t frame, void *user_data) noexcept
Definition isf15acp4_animator.ipp:75
void ColorWheel(GraphicsContext &gfx, uint32_t frame, void *user_data) noexcept
Definition isf15acp4_animator.ipp:34
Definition isf15acp4.hpp:19
void(*)(GraphicsContext &gfx, uint32_t frame, void *user_data) noexcept AnimationFrameFn
Callback that renders one animation frame into a graphics context.
Definition isf15acp4_animator.hpp:16