#pragma once #include class LcdDisplay : public juce::Component, private juce::Timer { public: static constexpr int kCols = 80; static constexpr int kRows = 4; LcdDisplay(); void setLine (int row, const juce::String& s); void showCursor (bool show); void clear(); void paint (juce::Graphics&) override; private: void timerCallback() override; juce::String lines[kRows]; int cursorCol = 0; int cursorRow = 0; bool cursorVisible = false; const uint8_t* getGlyph (juce::uint32 c) const; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LcdDisplay) };