#ifndef D2AF35D4_5EEF_406F_A3F6_F7E6F2AA24C4 #define D2AF35D4_5EEF_406F_A3F6_F7E6F2AA24C4 #include "app_strip_if.hpp" #include "app_track_model.hpp" #include "track_core/render.hpp" #include #include namespace app::track { struct TrackRenderSpan { uint16_t start_led{}; uint16_t led_count{}; Color color; }; struct TrackRenderPlan { static constexpr size_t MAX_SPANS = 4; void add_fill(uint16_t start_led, uint16_t led_count, Color color); [[nodiscard]] bool empty() const { return span_count == 0; } std::array spans{}; size_t span_count{}; }; [[nodiscard]] TrackRenderPlan make_track_render_plan(const TrackConfig &config, const TrackInfo &info, const report &rep); void apply_render_plan(app::strip::StripView strip, const TrackRenderPlan &plan); [[nodiscard]] track_core::TrackRenderSink make_track_render_sink(app::strip::StripView &strip); } #endif /* D2AF35D4_5EEF_406F_A3F6_F7E6F2AA24C4 */