Display Class for BaseMachine
ST7565_SequencerDisplay.h
- Committer:
- ryood
- Date:
- 2016-08-15
- Revision:
- 2:60f7d4c54b5f
- Parent:
- 1:1f6d3e65d946
- Child:
- 3:5b11261a545a
File content as of revision 2:60f7d4c54b5f:
/* * ST7565_SequencerDisplay.h * * 2016.08.13 * */ #ifndef _ST7565_SEQUENCE_DISPLAY_H_ #define _ST7565_SEQUENCE_DISPLAY_H_ #include "mbed.h" #include "SequencerDisplay.h" #include "st7565LCD.h" class ST7565_SequencerDisplay : public SequencerDisplay { public: ST7565_SequencerDisplay(ST7565* _gLCD, Sequence* _sequences, int _sequenceNum) : SequencerDisplay(_sequences, _sequenceNum), gLCD(_gLCD) {}; protected: virtual void displayWhileRun(int step) { int x, y; int i; gLCD->clear(); // Pos Indicator Grid for (x = 0; x <= 16; x++) { gLCD->drawline(x * 7, 0, x * 7, 3, 1); } for (y = 0; y <= 1; y++) { gLCD->drawline(0, y * 3, 112, y * 3, 1); } gLCD->fillrect(step * 7, 0, 7, 3, 1); // Sequence Grid for (x = 0; x <= 16; x++) { gLCD->drawline(x * 7, 5, x * 7, 57, 1); } for (y = 0; y <= 13; y++) { gLCD->drawline(0, y * 4 + 5, 112, y * 4 + 5, 1); } for (i = 0; i < 16; i++) { if (this->getOctave() == sequences[i].getOctave()) { int pitchRev = 12 - sequences[i].getPitch(); // Pitchの位置をGridの下から上に変換 gLCD->fillrect(i * 7, pitchRev * 4 + 5, 7, 4, 1); } } // NoteOn & Tie Grid for (x = 0; x <= 16; x++) { gLCD->drawline(x * 7, 57, x * 7, 63, 1); } gLCD->drawline(0, 63, 112, 63, 1); for (i = 0; i < 16; i++) { if (sequences[i].noteOn) { if (sequences[i].accent && sequences[i].tie) { gLCD->fillrect(i * 7, 57, 7, 6, 1); } else { gLCD->fillrect(i * 7, 59, 5, 4, 1); if (sequences[i].accent) { gLCD->fillrect(i * 7, 57, 5, 4, 1); } if (sequences[i].tie) { gLCD->fillrect(i * 7 + 5, 59, 2, 4, 1); } } } } gLCD->display(); }; virtual void displayWhileStop(int step) { displayWhileRun(step); } void displayParams(int step) { char buff[64]; gLCD->clear(); sprintf(buff, "Step: %d", step); gLCD->drawstring(0, 0, buff); sprintf(buff, "Pitch: %d", sequences[step].getPitch()); gLCD->drawstring(0, 1, buff); sprintf(buff, "BPM: %d", this->getBpm()); gLCD->drawstring(0, 2, buff); gLCD->display(); }; private: ST7565* gLCD; }; #endif //ST7565_SEQUENCE_DISPLAY_H_