77 lines
2.3 KiB
C++
77 lines
2.3 KiB
C++
|
|
#include <M5GFX.h>
|
|
M5GFX display;
|
|
|
|
//#include <M5UnitOLED.h>
|
|
//M5UnitOLED display; // default setting
|
|
//M5UnitOLED display ( 21, 22, 400000 ); // SDA, SCL, FREQ
|
|
|
|
//#include <M5UnitLCD.h>
|
|
//M5UnitLCD display; // default setting
|
|
//M5UnitLCD display ( 21, 22, 400000 ); // SDA, SCL, FREQ
|
|
|
|
//#include <M5UnitGLASS2.h>
|
|
//M5UnitGLASS2 display; // default setting
|
|
//M5UnitGLASS2 display ( 21, 22, 400000 ); // SDA, SCL, FREQ
|
|
|
|
//#include <M5AtomDisplay.h>
|
|
//M5AtomDisplay display;
|
|
|
|
M5Canvas canvas(&display);
|
|
|
|
static constexpr char text[] = "Hello world ! こんにちは世界! this is long long string sample. 寿限無、寿限無、五劫の擦り切れ、海砂利水魚の、水行末・雲来末・風来末、喰う寝る処に住む処、藪ら柑子の藪柑子、パイポ・パイポ・パイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナの、長久命の長助";
|
|
static constexpr size_t textlen = sizeof(text) / sizeof(text[0]);
|
|
int textpos = 0;
|
|
int scrollstep = 2;
|
|
|
|
void setup(void)
|
|
{
|
|
display.begin();
|
|
display.setColorDepth(8);
|
|
|
|
if (display.isEPD())
|
|
{
|
|
scrollstep = 16;
|
|
display.setEpdMode(epd_mode_t::epd_fastest);
|
|
display.invertDisplay(true);
|
|
display.clear(TFT_BLACK);
|
|
}
|
|
if (display.width() < display.height())
|
|
{
|
|
display.setRotation(display.getRotation() ^ 1);
|
|
}
|
|
|
|
canvas.setColorDepth(1); // mono color
|
|
canvas.setFont(&fonts::lgfxJapanMinchoP_32);
|
|
canvas.setTextWrap(false);
|
|
canvas.setTextSize(2);
|
|
canvas.createSprite(display.width() + 64, 72);
|
|
}
|
|
|
|
void loop(void)
|
|
{
|
|
int32_t cursor_x = canvas.getCursorX() - scrollstep;
|
|
if (cursor_x <= 0)
|
|
{
|
|
textpos = 0;
|
|
cursor_x = display.width();
|
|
}
|
|
|
|
canvas.setCursor(cursor_x, 0);
|
|
canvas.scroll(-scrollstep, 0);
|
|
while (textpos < textlen && cursor_x <= display.width())
|
|
{
|
|
canvas.print(text[textpos++]);
|
|
cursor_x = canvas.getCursorX();
|
|
}
|
|
display.waitDisplay();
|
|
int y = (display.height() - canvas.height()) >> 1;
|
|
/*
|
|
display.copyRect(0, y, display.width(), canvas.height(), scrollstep, y);
|
|
display.setClipRect(display.width()-scrollstep, y, scrollstep, canvas.height());
|
|
canvas.pushSprite(&display, 0, (display.height() - canvas.height()) >> 1);
|
|
display.clearClipRect();
|
|
/*/
|
|
canvas.pushSprite(&display, 0, y);
|
|
//*/
|
|
}
|