#pragma once #include "mockclassicnote.h" #include "graphics/classicgraphicsmanager.h" #include "core/timeline.h" #include class ClassicSprite; class ClassicEditorGraphicsManager : public ClassicGraphicsManager { public: explicit ClassicEditorGraphicsManager(Timeline& timeline, const microsec& visibility_offset); virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const override; void draw(const std::vector& elements, sf::RenderTarget& target, sf::RenderStates states) const; void setGraphics(std::vector &elements, TimeRange&& range); virtual void update(const microsec& offset) override; private: using Iterator = Timeline::Iterator; Iterator _first; Iterator _last; Timeline * const _timeline; inline bool nothingToDraw() const noexcept; inline bool isVisiblyClose(const Iterator& iterator, const microsec& music_offset) const noexcept; inline sf::VertexArray makeLine(const Coordinates& c1, const Coordinates& c2) const; void fetchFirstNote(const microsec& offset); void fetchLastNote(const microsec& offset); void updateVisibleNotes(const microsec& offset); };