50 lines
930 B
C++
50 lines
930 B
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <vector>
|
|
|
|
#include "track_core/model.hpp"
|
|
#include "track_core/render.hpp"
|
|
|
|
namespace track_core {
|
|
|
|
class MemoryStrip {
|
|
public:
|
|
explicit MemoryStrip(std::size_t led_count = 0);
|
|
|
|
[[nodiscard]]
|
|
TrackError begin();
|
|
|
|
[[nodiscard]]
|
|
TrackError clear();
|
|
|
|
[[nodiscard]]
|
|
TrackError fill(std::size_t start, std::size_t count, Color color);
|
|
|
|
[[nodiscard]]
|
|
TrackError show();
|
|
|
|
[[nodiscard]]
|
|
TrackError set_leds_count(std::size_t count);
|
|
|
|
[[nodiscard]]
|
|
std::size_t leds_count() const;
|
|
|
|
[[nodiscard]]
|
|
std::uint64_t frame_sequence() const;
|
|
|
|
[[nodiscard]]
|
|
std::span<const Color> pixels() const;
|
|
|
|
private:
|
|
std::vector<Color> pixels_;
|
|
std::uint64_t frame_sequence_{};
|
|
bool begun_{};
|
|
};
|
|
|
|
[[nodiscard]]
|
|
TrackError apply_render_plan(MemoryStrip &strip, const TrackRenderPlan &plan);
|
|
|
|
} // namespace track_core
|