diff --git a/examples/full_buffer/FPS/FPS.ino b/examples/full_buffer/FPS/FPS.ino index f4b3dd3e..f6e36a2c 100644 --- a/examples/full_buffer/FPS/FPS.ino +++ b/examples/full_buffer/FPS/FPS.ino @@ -268,6 +268,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/full_buffer/GraphicsTest/GraphicsTest.ino b/examples/full_buffer/GraphicsTest/GraphicsTest.ino index 4facd345..1ca6a5e7 100644 --- a/examples/full_buffer/GraphicsTest/GraphicsTest.ino +++ b/examples/full_buffer/GraphicsTest/GraphicsTest.ino @@ -152,6 +152,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/full_buffer/HelloWorld/HelloWorld.ino b/examples/full_buffer/HelloWorld/HelloWorld.ino index 61f12afc..0853e245 100644 --- a/examples/full_buffer/HelloWorld/HelloWorld.ino +++ b/examples/full_buffer/HelloWorld/HelloWorld.ino @@ -151,6 +151,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/full_buffer/PrintUTF8/PrintUTF8.ino b/examples/full_buffer/PrintUTF8/PrintUTF8.ino index 30fb11c4..89e90c30 100644 --- a/examples/full_buffer/PrintUTF8/PrintUTF8.ino +++ b/examples/full_buffer/PrintUTF8/PrintUTF8.ino @@ -154,6 +154,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/full_buffer/SelectionList/SelectionList.ino b/examples/full_buffer/SelectionList/SelectionList.ino index b5662c3e..7d5660da 100644 --- a/examples/full_buffer/SelectionList/SelectionList.ino +++ b/examples/full_buffer/SelectionList/SelectionList.ino @@ -151,6 +151,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/full_buffer/U8g2Logo/U8g2Logo.ino b/examples/full_buffer/U8g2Logo/U8g2Logo.ino index b31fa149..27a1cf6c 100644 --- a/examples/full_buffer/U8g2Logo/U8g2Logo.ino +++ b/examples/full_buffer/U8g2Logo/U8g2Logo.ino @@ -152,6 +152,7 @@ //U8G2_UC1611_EA_DOGXL240_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Due, SW SPI, DOGXL240 Test Board //U8G2_SSD1606_172X72_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display // End of constructor list diff --git a/examples/page_buffer/Chinese/Chinese.ino b/examples/page_buffer/Chinese/Chinese.ino index ca0cab60..e67d039f 100644 --- a/examples/page_buffer/Chinese/Chinese.ino +++ b/examples/page_buffer/Chinese/Chinese.ino @@ -154,6 +154,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/Clock/Clock.ino b/examples/page_buffer/Clock/Clock.ino index b2f7d058..b8e4991c 100644 --- a/examples/page_buffer/Clock/Clock.ino +++ b/examples/page_buffer/Clock/Clock.ino @@ -156,6 +156,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/ContrastTest/ContrastTest.ino b/examples/page_buffer/ContrastTest/ContrastTest.ino index 29abf152..0fd70419 100644 --- a/examples/page_buffer/ContrastTest/ContrastTest.ino +++ b/examples/page_buffer/ContrastTest/ContrastTest.ino @@ -153,6 +153,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/DirectAccess/DirectAccess.ino b/examples/page_buffer/DirectAccess/DirectAccess.ino index 770feb18..8d556798 100644 --- a/examples/page_buffer/DirectAccess/DirectAccess.ino +++ b/examples/page_buffer/DirectAccess/DirectAccess.ino @@ -157,6 +157,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/ExtUTF8/ExtUTF8.ino b/examples/page_buffer/ExtUTF8/ExtUTF8.ino index 95cddff1..65c63795 100644 --- a/examples/page_buffer/ExtUTF8/ExtUTF8.ino +++ b/examples/page_buffer/ExtUTF8/ExtUTF8.ino @@ -153,6 +153,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/FPS/FPS.ino b/examples/page_buffer/FPS/FPS.ino index 6e5a3bdb..b6f3852c 100644 --- a/examples/page_buffer/FPS/FPS.ino +++ b/examples/page_buffer/FPS/FPS.ino @@ -327,6 +327,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/FlipMode/FlipMode.ino b/examples/page_buffer/FlipMode/FlipMode.ino index fd6573eb..b81f3c0e 100644 --- a/examples/page_buffer/FlipMode/FlipMode.ino +++ b/examples/page_buffer/FlipMode/FlipMode.ino @@ -148,6 +148,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/GraphicsTest/GraphicsTest.ino b/examples/page_buffer/GraphicsTest/GraphicsTest.ino index 2508808e..505e8a14 100644 --- a/examples/page_buffer/GraphicsTest/GraphicsTest.ino +++ b/examples/page_buffer/GraphicsTest/GraphicsTest.ino @@ -153,6 +153,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/HelloWorld/HelloWorld.ino b/examples/page_buffer/HelloWorld/HelloWorld.ino index 0b675ed7..846412d7 100644 --- a/examples/page_buffer/HelloWorld/HelloWorld.ino +++ b/examples/page_buffer/HelloWorld/HelloWorld.ino @@ -153,6 +153,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/Japanese/Japanese.ino b/examples/page_buffer/Japanese/Japanese.ino index 1a5b4bcb..f96b0f9e 100644 --- a/examples/page_buffer/Japanese/Japanese.ino +++ b/examples/page_buffer/Japanese/Japanese.ino @@ -154,6 +154,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/Korean/Korean.ino b/examples/page_buffer/Korean/Korean.ino index bf867062..8eaf3597 100644 --- a/examples/page_buffer/Korean/Korean.ino +++ b/examples/page_buffer/Korean/Korean.ino @@ -154,6 +154,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/PowerSaveTest/PowerSaveTest.ino b/examples/page_buffer/PowerSaveTest/PowerSaveTest.ino index 125eb724..d6162025 100644 --- a/examples/page_buffer/PowerSaveTest/PowerSaveTest.ino +++ b/examples/page_buffer/PowerSaveTest/PowerSaveTest.ino @@ -147,6 +147,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/PrintHelloWorld/PrintHelloWorld.ino b/examples/page_buffer/PrintHelloWorld/PrintHelloWorld.ino index ffce2138..b3a54ea7 100644 --- a/examples/page_buffer/PrintHelloWorld/PrintHelloWorld.ino +++ b/examples/page_buffer/PrintHelloWorld/PrintHelloWorld.ino @@ -154,6 +154,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/PrintUTF8/PrintUTF8.ino b/examples/page_buffer/PrintUTF8/PrintUTF8.ino index a286d2d6..940a7c3c 100644 --- a/examples/page_buffer/PrintUTF8/PrintUTF8.ino +++ b/examples/page_buffer/PrintUTF8/PrintUTF8.ino @@ -154,6 +154,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/ScrollingText/ScrollingText.ino b/examples/page_buffer/ScrollingText/ScrollingText.ino index d0ab6ef2..13b31823 100644 --- a/examples/page_buffer/ScrollingText/ScrollingText.ino +++ b/examples/page_buffer/ScrollingText/ScrollingText.ino @@ -157,6 +157,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/SelectionList/SelectionList.ino b/examples/page_buffer/SelectionList/SelectionList.ino index ecb6cbe7..a92c9a33 100644 --- a/examples/page_buffer/SelectionList/SelectionList.ino +++ b/examples/page_buffer/SelectionList/SelectionList.ino @@ -143,6 +143,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/U8g2Logo/U8g2Logo.ino b/examples/page_buffer/U8g2Logo/U8g2Logo.ino index 7e21de34..164070b8 100644 --- a/examples/page_buffer/U8g2Logo/U8g2Logo.ino +++ b/examples/page_buffer/U8g2Logo/U8g2Logo.ino @@ -152,6 +152,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/XBM/XBM.ino b/examples/page_buffer/XBM/XBM.ino index b1ed103e..7877c707 100644 --- a/examples/page_buffer/XBM/XBM.ino +++ b/examples/page_buffer/XBM/XBM.ino @@ -157,6 +157,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/examples/page_buffer/XORTest/XORTest.ino b/examples/page_buffer/XORTest/XORTest.ino index 58988e15..e4d9e198 100644 --- a/examples/page_buffer/XORTest/XORTest.ino +++ b/examples/page_buffer/XORTest/XORTest.ino @@ -157,6 +157,9 @@ //U8G2_UC1611_EA_DOGXL240_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // SW SPI, Due DOGXL240 Test Board //U8G2_SSD1606_172X72_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display //U8G2_SSD1607_200X200_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // eInk/ePaper Display +//U8G2_IL3820_296X128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // WaveShare 2.9 inch eInk/ePaper Display + + // End of constructor list diff --git a/extras/ChangeLog b/extras/ChangeLog index 34cea7f2..62502b10 100644 --- a/extras/ChangeLog +++ b/extras/ChangeLog @@ -127,4 +127,5 @@ https://github.com/olikraus/u8g2 ChangeLog * Support for 96x16 SSD1306 OLED (issue 295) * Fixed OldStandard-Bold fonts (osb, issue 306) * Support for SED1520/SBN1661 (issue 324) - \ No newline at end of file + 2017-xx-xx v2.17.x olikraus@gmail.com + diff --git a/library.properties b/library.properties index 4a9c24de..6f4ea8fc 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=U8g2 -version=2.16.9 +version=2.17.0 author=oliver maintainer=oliver sentence=Monochrome LCD, OLED and eInk Library. Display controller: SSD1305, SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1329, SSD1606, SSD1607, SH1106, T6963, RA8835, LC7981, PCD8544, PCF8812, UC1604, UC1608, UC1610, UC1611, UC1701, ST7565, ST7567, ST7588, NT7534, IST3020, ST7920, LD7032, KS0108, SED1520, SBN1661, MAX7219. Interfaces: I2C, SPI, Parallel. diff --git a/src/U8g2lib.h b/src/U8g2lib.h index 50182cb0..fc18d9d9 100644 --- a/src/U8g2lib.h +++ b/src/U8g2lib.h @@ -5659,6 +5659,78 @@ class U8G2_SSD1607_200X200_F_3W_SW_SPI : public U8G2 { u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; +class U8G2_IL3820_296X128_1_4W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_1_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_1_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_1_3W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_1(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_IL3820_296X128_2_4W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_2_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_2_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_2_3W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_2(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; +class U8G2_IL3820_296X128_F_4W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_F_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_F_2ND_4W_HW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8G2_IL3820_296X128_F_3W_SW_SPI : public U8G2 { + public: U8G2_IL3820_296X128_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_il3820_296x128_f(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; class U8G2_SED1330_240X128_1_6800 : public U8G2 { public: U8G2_SED1330_240X128_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { u8g2_Setup_sed1330_240x128_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); diff --git a/src/U8x8lib.h b/src/U8x8lib.h index 71923016..bbf1a0f6 100644 --- a/src/U8x8lib.h +++ b/src/U8x8lib.h @@ -2052,6 +2052,30 @@ class U8X8_SSD1607_200X200_3W_SW_SPI : public U8X8 { u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); } }; +class U8X8_IL3820_296X128_4W_SW_SPI : public U8X8 { + public: U8X8_IL3820_296X128_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset); + } +}; +class U8X8_IL3820_296X128_4W_HW_SPI : public U8X8 { + public: U8X8_IL3820_296X128_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_IL3820_296X128_2ND_4W_HW_SPI : public U8X8 { + public: U8X8_IL3820_296X128_2ND_4W_HW_SPI(uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset); + } +}; +class U8X8_IL3820_296X128_3W_SW_SPI : public U8X8 { + public: U8X8_IL3820_296X128_3W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_il3820_296x128, u8x8_cad_011, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset); + } +}; class U8X8_SED1330_240X128_6800 : public U8X8 { public: U8X8_SED1330_240X128_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_sed1330_240x128, u8x8_cad_100, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); diff --git a/src/clib/u8g2.h b/src/clib/u8g2.h index 3b6664cb..48181260 100644 --- a/src/clib/u8g2.h +++ b/src/clib/u8g2.h @@ -69,7 +69,7 @@ Use 16 Bit mode for any display with more than 240 pixel in one direction. */ -//#define U8G2_16BIT +#define U8G2_16BIT /* @@ -341,6 +341,11 @@ struct u8g2_struct #ifdef U8G2_WITH_HVLINE_COUNT unsigned long hv_cnt; #endif /* U8G2_WITH_HVLINE_COUNT */ +#ifdef __unix__ + uint16_t last_unicode; + const uint8_t *last_font_data; +#endif + }; #define u8g2_GetU8x8(u8g2) ((u8x8_t *)(u8g2)) @@ -529,6 +534,9 @@ uint8_t *u8g2_m_ssd1606_22_f(uint8_t *page_cnt); uint8_t *u8g2_m_ssd1607_25_1(uint8_t *page_cnt); uint8_t *u8g2_m_ssd1607_25_2(uint8_t *page_cnt); uint8_t *u8g2_m_ssd1607_25_f(uint8_t *page_cnt); +uint8_t *u8g2_m_il3820_37_1(uint8_t *page_cnt); +uint8_t *u8g2_m_il3820_37_2(uint8_t *page_cnt); +uint8_t *u8g2_m_il3820_37_f(uint8_t *page_cnt); uint8_t *u8g2_m_sed1330_30_1(uint8_t *page_cnt); uint8_t *u8g2_m_sed1330_30_2(uint8_t *page_cnt); uint8_t *u8g2_m_sed1330_30_f(uint8_t *page_cnt); @@ -786,6 +794,9 @@ void u8g2_Setup_ssd1606_172x72_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_m void u8g2_Setup_ssd1607_200x200_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1607_200x200_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_ssd1607_200x200_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_il3820_296x128_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_il3820_296x128_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_il3820_296x128_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_sed1330_240x128_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_sed1330_240x128_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_sed1330_240x128_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); @@ -1005,6 +1016,10 @@ extern const uint8_t u8g2_font_freedoomr10_tu[] U8G2_FONT_SECTION("u8g2_font_fre extern const uint8_t u8g2_font_freedoomr10_mu[] U8G2_FONT_SECTION("u8g2_font_freedoomr10_mu"); extern const uint8_t u8g2_font_freedoomr25_tn[] U8G2_FONT_SECTION("u8g2_font_freedoomr25_tn"); extern const uint8_t u8g2_font_freedoomr25_mn[] U8G2_FONT_SECTION("u8g2_font_freedoomr25_mn"); +extern const uint8_t u8g2_font_amstrad_cpc_extended_8f[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8f"); +extern const uint8_t u8g2_font_amstrad_cpc_extended_8r[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8r"); +extern const uint8_t u8g2_font_amstrad_cpc_extended_8n[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8n"); +extern const uint8_t u8g2_font_amstrad_cpc_extended_8u[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8u"); extern const uint8_t u8g2_font_cursor_tf[] U8G2_FONT_SECTION("u8g2_font_cursor_tf"); extern const uint8_t u8g2_font_cursor_tr[] U8G2_FONT_SECTION("u8g2_font_cursor_tr"); extern const uint8_t u8g2_font_micro_tr[] U8G2_FONT_SECTION("u8g2_font_micro_tr"); @@ -1200,10 +1215,6 @@ extern const uint8_t u8g2_font_profont29_tn[] U8G2_FONT_SECTION("u8g2_font_profo extern const uint8_t u8g2_font_profont29_mf[] U8G2_FONT_SECTION("u8g2_font_profont29_mf"); extern const uint8_t u8g2_font_profont29_mr[] U8G2_FONT_SECTION("u8g2_font_profont29_mr"); extern const uint8_t u8g2_font_profont29_mn[] U8G2_FONT_SECTION("u8g2_font_profont29_mn"); -extern const uint8_t u8g2_font_amstrad_cpc_extended_8f[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8f"); -extern const uint8_t u8g2_font_amstrad_cpc_extended_8r[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8r"); -extern const uint8_t u8g2_font_amstrad_cpc_extended_8n[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8n"); -extern const uint8_t u8g2_font_amstrad_cpc_extended_8u[] U8G2_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8u"); extern const uint8_t u8g2_font_mozart_nbp_tf[] U8G2_FONT_SECTION("u8g2_font_mozart_nbp_tf"); extern const uint8_t u8g2_font_mozart_nbp_tr[] U8G2_FONT_SECTION("u8g2_font_mozart_nbp_tr"); extern const uint8_t u8g2_font_mozart_nbp_tn[] U8G2_FONT_SECTION("u8g2_font_mozart_nbp_tn"); diff --git a/src/clib/u8g2_d_memory.c b/src/clib/u8g2_d_memory.c index 3c8bc348..c8a8288d 100644 --- a/src/clib/u8g2_d_memory.c +++ b/src/clib/u8g2_d_memory.c @@ -705,6 +705,24 @@ uint8_t *u8g2_m_ssd1607_25_f(uint8_t *page_cnt) *page_cnt = 25; return buf; } +uint8_t *u8g2_m_il3820_37_1(uint8_t *page_cnt) +{ + static uint8_t buf[296]; + *page_cnt = 1; + return buf; +} +uint8_t *u8g2_m_il3820_37_2(uint8_t *page_cnt) +{ + static uint8_t buf[592]; + *page_cnt = 2; + return buf; +} +uint8_t *u8g2_m_il3820_37_f(uint8_t *page_cnt) +{ + static uint8_t buf[4736]; + *page_cnt = 16; + return buf; +} uint8_t *u8g2_m_sed1330_30_1(uint8_t *page_cnt) { static uint8_t buf[240]; diff --git a/src/clib/u8g2_d_setup.c b/src/clib/u8g2_d_setup.c index d4241ae4..3241206f 100644 --- a/src/clib/u8g2_d_setup.c +++ b/src/clib/u8g2_d_setup.c @@ -2179,6 +2179,34 @@ void u8g2_Setup_ssd1607_200x200_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ buf = u8g2_m_ssd1607_25_f(&tile_buf_height); u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation); } +/* il3820 */ +/* il3820 1 */ +void u8g2_Setup_il3820_296x128_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_il3820_296x128, u8x8_cad_011, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_il3820_37_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation); +} +/* il3820 2 */ +void u8g2_Setup_il3820_296x128_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_il3820_296x128, u8x8_cad_011, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_il3820_37_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation); +} +/* il3820 f */ +void u8g2_Setup_il3820_296x128_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_il3820_296x128, u8x8_cad_011, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_il3820_37_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation); +} /* sed1330 */ /* sed1330 1 */ void u8g2_Setup_sed1330_240x128_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) diff --git a/src/clib/u8g2_font.c b/src/clib/u8g2_font.c index b7d7de73..e7e35f0e 100644 --- a/src/clib/u8g2_font.c +++ b/src/clib/u8g2_font.c @@ -618,18 +618,38 @@ const uint8_t *u8g2_font_get_glyph_data(u8g2_t *u8g2, uint16_t encoding) else { uint16_t e; + +#ifdef __unix__ + if ( u8g2->last_font_data != NULL && encoding >= u8g2->last_unicode ) + { + font = u8g2->last_font_data; + } + else +#endif + font += u8g2->font_info.start_pos_unicode; + + for(;;) { e = u8x8_pgm_read( font ); e <<= 8; e |= u8x8_pgm_read( font + 1 ); +#ifdef __unix__ + if ( encoding < e ) + break; +#endif + if ( e == 0 ) break; if ( e == encoding ) { +#ifdef __unix__ + u8g2->last_font_data = font; + u8g2->last_unicode = encoding; +#endif return font+3; /* skip encoding and glyph size */ } font += u8x8_pgm_read( font + 2 ); @@ -987,6 +1007,10 @@ void u8g2_SetFont(u8g2_t *u8g2, const uint8_t *font) { if ( u8g2->font != font ) { +#ifdef __unix__ + u8g2->last_font_data = NULL; + u8g2->last_unicode = 0x0ffff; +#endif u8g2->font = font; u8g2_read_font_info(&(u8g2->font_info), font); u8g2_UpdateRefHeight(u8g2); diff --git a/src/clib/u8g2_fonts.c b/src/clib/u8g2_fonts.c index 5c8a32c7..33b530ca 100644 --- a/src/clib/u8g2_fonts.c +++ b/src/clib/u8g2_fonts.c @@ -351,6 +351,189 @@ const uint8_t u8g2_font_freedoomr25_mn[446] U8G2_FONT_SECTION("u8g2_font_freedoo "\201\15B`\203\210\11\201\15B`\203\20\330 \4\66\10\201\15B`\203\20\330 \4\66\210\270\17 " "\0\71(S?\207HDB`\203\20\330 \4\66\10\201\15B`\203\20\330 \4\66\10\201\15B`" "\203\210\301\361'\342>\200\0:\21R/p\271h\345>\30/Z\271\17\64\0\0\0\0"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 222/228 + BBX Build Mode: 3 +*/ +const uint8_t u8g2_font_amstrad_cpc_extended_8f[2672] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8f") = + "\336\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\3 \12W \7\210\343\307\21\0!\11" + "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" + "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" + "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" + ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" + "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" + "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" + "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" + "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" + "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" + "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" + "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" + "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" + "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" + "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" + "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" + "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" + "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" + "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" + "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" + "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" + "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" + "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" + "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" + "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" + "\222\20\221\221G\3_\10\210\343\307\366 \0`\11\210c\225S\217\10\0a\14\210\343\7\241\223)Q" + "\63!\11b\15\210c\230\32\253\21\321\213\10R\0c\14\210\343\207\241\21Q&\42C\12d\14\210\343" + "\31\223)\321\67\23\222\0e\14\210\343\207\241\21\21\61\221#\5f\15\210\343\31\222\220\221\242\22\223\242" + "\5g\14\210\343\207)\321M\231H\11\0h\16\210c\30S!\63!\242\213\21I\0i\12\210\343\221" + "\36\323\212\24\0j\13\210c\213\36S\242\33\22\0k\17\210c\30S\242B\206HBdD\22\0l" + "\11\210c\31\323+R\0m\20\210\343\7\221\20\271\220\210P\21\241F\22\0n\12\210\343\207P$\242" + "_\2o\13\210\343\207\241\21\321\33R\0p\16\210\343\207\220\230\21\321\244F\212\10\0q\15\210\343\7" + "\231P\242M\231\24\5\0r\14\210\343\207P$!#&E\14s\13\210\343\207\241\221\243\23)\5t" + "\14\210c\21\223*\22S!\64\12u\11\210\343\7\321\337T\2v\12\210\343\7\321\67T\262\0w\20" + "\210\343\207\220\221\220\210P\21!q\42!\12x\17\210\343\207\220\21\221\20\32\222\20\221\221\4y\13\210" + "\343\7\321\67e\42%\0z\13\210\343\7\61\11\221Re\11{\14\210\343\230\23\223\33\22\23\32\6|" + "\10\210\343\21\323\267\0}\14\210c\32\22\23\232\23\223\233\4~\11\210\343\230\320\36\63\0\200\10\210\343" + "\21\323o\0\201\12\210\343\207<\70\220\207\4\202\12\210\343\21SVS\17\11\203\12\210\343\7\256\251\21" + "S\3\204\12\210\343\207\254)\323\6\0\205\12\210\343\21S\323\36\30\0\206\13\210\343\21Ssp \17" + "\11\207\14\210\343\21SVS#\246\6\0\210\13\210\343\207<\70\220\21S\3\211\12\210\343\21S\323L" + "\33\0\212\15\210\343\21Ssp #\246\6\0\213\13\210\343\15\223\262\221\213\207\2\214\13\210\343\15\33" + "\252\212\213\207\2\215\13\210c\216\223\261\22\213\7\2\216\13\210\343\215\213*\32\213\207\2\217\10\210\343G" + "F\304\1\220\11\210\343GB\304\21\0\221\11\210\343Gr\360\1\1\222\10\210c\342=\22\0\223\6\210" + "c\342\37\224\12\210c\342\350 \210#\0\225\11\210c\342\350\340\7\1\226\11\210c \342\36\31\0\227" + "\11\210c \342\220\210\3\230\10\210c \342\217\0\231\12\210c \342\350\340\3\2\232\11\210c\370\1" + "=\22\0\233\10\210c\370\1\21\17\234\11\210c\370\203 \216\0\235\7\210c\370?\10\236\11\210\343\307" + "\346\340@\0\237\11\210\343\207\70\370\3\3\241\11\210\343\21\27\323-\0\242\20\210\343\215*\221\210P\21" + "$\21!R\25\4\243\15\210c\241\21QU$&\42q\11\244\16\210\343\14\212\241\21\321\206&(\22" + "\0\245\15\210\343\20\221\241\61\22\62\222\42\5\246\12\210\343\21S.\246\26\0\247\15\210\343\241\21\33\222" + "\20\232\22\42\6\250\11\210\343\20\321\36#\0\251\23\210c\31\212\11\211\230\310&\42b\42$&h\26" + "\0\252\15\210\343\230\23\242\221\20\222\20\65\5\253\20\210c\225\20\221\20\221\20\222\20\222\220\7\1\254\11" + "\210\343\7\265\213\7\5\255\10\210\343G\64\17\14\256\22\210c\31\212\11\211\230H!\22\221\223\230\240Y" + "\0\257\10\210c\241\307\32\0\260\15\210c\31\222\220I#!\64\17\14\261\13\210\343\25\23\62\22\23\262" + "\4\262\13\210\343\240\23\32\22\253\207\5\263\13\210\343\240\23\232\223\241\7\6\264\11\210\343\21\223\222G\16" + "\265\13\210\343\7\25\321\223\32)\0\266\22\210\343\260\240\210\231\210\231\10\222\10\222\10\222\10\5\267\11\210" + "\343\7\26\223\7\6\270\10\210\343G\36\65\13\271\12\210c\31\323\212\36\26\0\272\15\210c\31\222\220I" + "#!\64\134\12\273\20\210c\224\20\222\20\222\20\221\20\221\220\7\2\274\17\210\343\10\223\213I\42\23\221" + "\212,\24\0\275\17\210\343\10\223\13\221\211\10I\23\26F\11\276\17\210c\30\214\222\11\212\220\230HE" + "\26\11\277\13\210\343\21\227R\242\15)\0\300\14\210c\21\247\21\21\61\321%\0\301\14\210c\22\246\21" + "\21\61\321%\0\302\14\210\343\221\246\21\21\61\321%\0\303\14\210c!\246\21\21\61\321%\0\304\15\210" + "\343\20\221\245\21\21\61\321%\0\305\16\210\343\221\12\11\242\21\21\61\321%\0\306\22\210\343\241\231\10\211" + "\220\221\240\250\221\220\210\220\240\4\307\17\210c\241\21\221\20\223\23\221\241\22\242\1\310\13\210\343\220>\21" + "\253\221\272\4\311\13\210\343\221=\21\253\221\272\4\312\13\210c!=\21\253\221\272\4\313\13\210\343Pz" + "\42V#u\11\314\12\210c\221\66\22Sd\11\315\12\210c\222\65\22Sd\11\316\12\210c\241\65\22" + "Sd\11\317\13\210\343\20\21\65\22Sd\11\320\20\210c(\222\220\21\221\240\20\321B\244\26\0\321\20" + "\210c\21I\42+\42\62!\42\61\242\22\0\322\16\210c\221.\221\221\220\221\220\21)\5\323\16\210c" + "\222-\221\221\220\221\220\21)\5\324\16\210c\31.\221\221\220\221\220\21)\5\325\16\210\343\250-\221\221" + "\220\221\220\21)\5\326\16\210\343P[\42#!#!#R\12\327\17\210c\224\21\221\20\232\32\222\20" + "\221\221\4\330\23\210c\231\320D\202B\42B\202BDB$b\26\0\331\12\210c\221\26\321oH\1" + "\332\12\210c\222\25\321oH\1\333\12\210c\241\25\321oH\1\334\13\210\343\20\21\25\321oH\1\335" + "\14\210c\221\26\321\206J\212\24\0\336\17\210c\20\253\221\11\221\11\221\11\251\21\7\337\17\210\343\240Q" + "!#a\42#!#Q\13\340\14\210\343\20\247\223)Q\63!\11\341\14\210\343\21\246\223)Q\63!" + "\11\342\14\210c\31\246\223)Q\63!\11\343\14\210\343\250\245\223)Q\63!\11\344\15\210\343PK'" + "S\242fB\22\0\345\16\210c\221\12\11\242\223)Q\63!\11\346\15\210\343\7\251\12\11\261P\64!" + "\11\347\15\210\343\207\241\221\11\221\253\12\223\1\350\14\210c\21\247\21\21\61\221#\5\351\14\210c\22\246" + "\21\21\61\221#\5\352\14\210c!\246\21\21\61\221#\5\353\15\210\343\20\221\245\21\21\61\221#\5\354" + "\12\210c\221\223\36SE\12\355\12\210c\222\222\36SE\12\356\13\210\343\221\12\11\36SE\12\357\12" + "\210\343\24\221\35SE\12\360\16\210\343\230\20R!\65#\242\15)\0\361\15\210c\21I\42*\61#" + "\242\227\0\362\14\210c\221\223\246\21\321\206\24\0\363\14\210c\222\222\246\21\321\206\24\0\364\15\210\343\221" + "\12\11\246\21\321\206\24\0\365\15\210c\21I\42L#\242\15)\0\366\14\210\343\24\221\245\21\321\206\24" + "\0\367\12\210\343\21\23\66\26\223\5\370\16\210\343\207\23\241\221\30\231\220!\21\3\371\13\210c\221\23\26" + "\321\233J\0\372\13\210c\222\22\26\321\233J\0\373\14\210\343\221\12\211\25\321\233J\0\374\13\210\343\24" + "\21\25\321\233J\0\375\15\210c\222\22\26\321\246L\244\4\0\376\14\210\343\214#\212\311\206(\34\0\377" + "\15\210\343\24\21\25\321\246L\244\4\0\0\0\0"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 95/228 + BBX Build Mode: 3 +*/ +const uint8_t u8g2_font_amstrad_cpc_extended_8r[1184] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8r") = + "_\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\3 \4\207 \7\210\343\307\21\0!\11" + "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" + "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" + "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" + ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" + "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" + "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" + "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" + "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" + "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" + "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" + "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" + "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" + "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" + "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" + "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" + "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" + "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" + "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" + "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" + "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" + "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" + "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" + "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" + "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" + "\222\20\221\221G\3_\10\210\343\307\366 \0`\11\210c\225S\217\10\0a\14\210\343\7\241\223)Q" + "\63!\11b\15\210c\230\32\253\21\321\213\10R\0c\14\210\343\207\241\21Q&\42C\12d\14\210\343" + "\31\223)\321\67\23\222\0e\14\210\343\207\241\21\21\61\221#\5f\15\210\343\31\222\220\221\242\22\223\242" + "\5g\14\210\343\207)\321M\231H\11\0h\16\210c\30S!\63!\242\213\21I\0i\12\210\343\221" + "\36\323\212\24\0j\13\210c\213\36S\242\33\22\0k\17\210c\30S\242B\206HBdD\22\0l" + "\11\210c\31\323+R\0m\20\210\343\7\221\20\271\220\210P\21\241F\22\0n\12\210\343\207P$\242" + "_\2o\13\210\343\207\241\21\321\33R\0p\16\210\343\207\220\230\21\321\244F\212\10\0q\15\210\343\7" + "\231P\242M\231\24\5\0r\14\210\343\207P$!#&E\14s\13\210\343\207\241\221\243\23)\5t" + "\14\210c\21\223*\22S!\64\12u\11\210\343\7\321\337T\2v\12\210\343\7\321\67T\262\0w\20" + "\210\343\207\220\221\220\210P\21!q\42!\12x\17\210\343\207\220\21\221\20\32\222\20\221\221\4y\13\210" + "\343\7\321\67e\42%\0z\13\210\343\7\61\11\221Re\11{\14\210\343\230\23\223\33\22\23\32\6|" + "\10\210\343\21\323\267\0}\14\210c\32\22\23\232\23\223\233\4~\11\210\343\230\320\36\63\0\0\0\0"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 18/228 + BBX Build Mode: 3 +*/ +const uint8_t u8g2_font_amstrad_cpc_extended_8n[235] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8n") = + "\22\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\0\0\0\0\0\322 \7\210\343\307\21\0*\16" + "\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22\223\7\2,\11\210\343G-&%\4" + "-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343\322g\361\0\60\22\210\343(\221\221\20" + "\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0\62\16\210c\241\21\21\223\241\21\23\21" + "\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221\32\212\220\11\221\71\222\42\5\65\15\210" + "\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242\15)\0\67\14\210\343\60\211\221\232R" + "\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c\241\21\321\246LD\15)\0:\12\210" + "\343\7\22\23\27\223\5\0\0\0"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 64/228 + BBX Build Mode: 3 +*/ +const uint8_t u8g2_font_amstrad_cpc_extended_8u[818] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8u") = + "@\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\0\0\3\31 \7\210\343\307\21\0!\11" + "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" + "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" + "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" + ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" + "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" + "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" + "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" + "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" + "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" + "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" + "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" + "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" + "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" + "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" + "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" + "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" + "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" + "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" + "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" + "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" + "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" + "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" + "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" + "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" + "\222\20\221\221G\3_\10\210\343\307\366 \0\0\0\0"; /* Fontname: cursor Copyright: These glyphs are unencumbered @@ -15242,189 +15425,6 @@ const uint8_t u8g2_font_profont29_mn[518] U8G2_FONT_SECTION("u8g2_font_profont29 "\225B\363\360\26\0\71'P\37\370!\63\250\212\321\260\61\3\207\14\34\62p\310\300!\3\207\14\34\63" "nL#f\252\7\17S\226\356<\274\5:\25P\37\370\341\307\203\313V<\36.\6\227\255x<|" "\16\0\0\0\0"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 222/228 - BBX Build Mode: 3 -*/ -const uint8_t u8g2_font_amstrad_cpc_extended_8f[2672] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8f") = - "\336\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\3 \12W \7\210\343\307\21\0!\11" - "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" - "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" - "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" - ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" - "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" - "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" - "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" - "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" - "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" - "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" - "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" - "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" - "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" - "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" - "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" - "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" - "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" - "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" - "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" - "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" - "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" - "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" - "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" - "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" - "\222\20\221\221G\3_\10\210\343\307\366 \0`\11\210c\225S\217\10\0a\14\210\343\7\241\223)Q" - "\63!\11b\15\210c\230\32\253\21\321\213\10R\0c\14\210\343\207\241\21Q&\42C\12d\14\210\343" - "\31\223)\321\67\23\222\0e\14\210\343\207\241\21\21\61\221#\5f\15\210\343\31\222\220\221\242\22\223\242" - "\5g\14\210\343\207)\321M\231H\11\0h\16\210c\30S!\63!\242\213\21I\0i\12\210\343\221" - "\36\323\212\24\0j\13\210c\213\36S\242\33\22\0k\17\210c\30S\242B\206HBdD\22\0l" - "\11\210c\31\323+R\0m\20\210\343\7\221\20\271\220\210P\21\241F\22\0n\12\210\343\207P$\242" - "_\2o\13\210\343\207\241\21\321\33R\0p\16\210\343\207\220\230\21\321\244F\212\10\0q\15\210\343\7" - "\231P\242M\231\24\5\0r\14\210\343\207P$!#&E\14s\13\210\343\207\241\221\243\23)\5t" - "\14\210c\21\223*\22S!\64\12u\11\210\343\7\321\337T\2v\12\210\343\7\321\67T\262\0w\20" - "\210\343\207\220\221\220\210P\21!q\42!\12x\17\210\343\207\220\21\221\20\32\222\20\221\221\4y\13\210" - "\343\7\321\67e\42%\0z\13\210\343\7\61\11\221Re\11{\14\210\343\230\23\223\33\22\23\32\6|" - "\10\210\343\21\323\267\0}\14\210c\32\22\23\232\23\223\233\4~\11\210\343\230\320\36\63\0\200\10\210\343" - "\21\323o\0\201\12\210\343\207<\70\220\207\4\202\12\210\343\21SVS\17\11\203\12\210\343\7\256\251\21" - "S\3\204\12\210\343\207\254)\323\6\0\205\12\210\343\21S\323\36\30\0\206\13\210\343\21Ssp \17" - "\11\207\14\210\343\21SVS#\246\6\0\210\13\210\343\207<\70\220\21S\3\211\12\210\343\21S\323L" - "\33\0\212\15\210\343\21Ssp #\246\6\0\213\13\210\343\15\223\262\221\213\207\2\214\13\210\343\15\33" - "\252\212\213\207\2\215\13\210c\216\223\261\22\213\7\2\216\13\210\343\215\213*\32\213\207\2\217\10\210\343G" - "F\304\1\220\11\210\343GB\304\21\0\221\11\210\343Gr\360\1\1\222\10\210c\342=\22\0\223\6\210" - "c\342\37\224\12\210c\342\350 \210#\0\225\11\210c\342\350\340\7\1\226\11\210c \342\36\31\0\227" - "\11\210c \342\220\210\3\230\10\210c \342\217\0\231\12\210c \342\350\340\3\2\232\11\210c\370\1" - "=\22\0\233\10\210c\370\1\21\17\234\11\210c\370\203 \216\0\235\7\210c\370?\10\236\11\210\343\307" - "\346\340@\0\237\11\210\343\207\70\370\3\3\241\11\210\343\21\27\323-\0\242\20\210\343\215*\221\210P\21" - "$\21!R\25\4\243\15\210c\241\21QU$&\42q\11\244\16\210\343\14\212\241\21\321\206&(\22" - "\0\245\15\210\343\20\221\241\61\22\62\222\42\5\246\12\210\343\21S.\246\26\0\247\15\210\343\241\21\33\222" - "\20\232\22\42\6\250\11\210\343\20\321\36#\0\251\23\210c\31\212\11\211\230\310&\42b\42$&h\26" - "\0\252\15\210\343\230\23\242\221\20\222\20\65\5\253\20\210c\225\20\221\20\221\20\222\20\222\220\7\1\254\11" - "\210\343\7\265\213\7\5\255\10\210\343G\64\17\14\256\22\210c\31\212\11\211\230H!\22\221\223\230\240Y" - "\0\257\10\210c\241\307\32\0\260\15\210c\31\222\220I#!\64\17\14\261\13\210\343\25\23\62\22\23\262" - "\4\262\13\210\343\240\23\32\22\253\207\5\263\13\210\343\240\23\232\223\241\7\6\264\11\210\343\21\223\222G\16" - "\265\13\210\343\7\25\321\223\32)\0\266\22\210\343\260\240\210\231\210\231\10\222\10\222\10\222\10\5\267\11\210" - "\343\7\26\223\7\6\270\10\210\343G\36\65\13\271\12\210c\31\323\212\36\26\0\272\15\210c\31\222\220I" - "#!\64\134\12\273\20\210c\224\20\222\20\222\20\221\20\221\220\7\2\274\17\210\343\10\223\213I\42\23\221" - "\212,\24\0\275\17\210\343\10\223\13\221\211\10I\23\26F\11\276\17\210c\30\214\222\11\212\220\230HE" - "\26\11\277\13\210\343\21\227R\242\15)\0\300\14\210c\21\247\21\21\61\321%\0\301\14\210c\22\246\21" - "\21\61\321%\0\302\14\210\343\221\246\21\21\61\321%\0\303\14\210c!\246\21\21\61\321%\0\304\15\210" - "\343\20\221\245\21\21\61\321%\0\305\16\210\343\221\12\11\242\21\21\61\321%\0\306\22\210\343\241\231\10\211" - "\220\221\240\250\221\220\210\220\240\4\307\17\210c\241\21\221\20\223\23\221\241\22\242\1\310\13\210\343\220>\21" - "\253\221\272\4\311\13\210\343\221=\21\253\221\272\4\312\13\210c!=\21\253\221\272\4\313\13\210\343Pz" - "\42V#u\11\314\12\210c\221\66\22Sd\11\315\12\210c\222\65\22Sd\11\316\12\210c\241\65\22" - "Sd\11\317\13\210\343\20\21\65\22Sd\11\320\20\210c(\222\220\21\221\240\20\321B\244\26\0\321\20" - "\210c\21I\42+\42\62!\42\61\242\22\0\322\16\210c\221.\221\221\220\221\220\21)\5\323\16\210c" - "\222-\221\221\220\221\220\21)\5\324\16\210c\31.\221\221\220\221\220\21)\5\325\16\210\343\250-\221\221" - "\220\221\220\21)\5\326\16\210\343P[\42#!#!#R\12\327\17\210c\224\21\221\20\232\32\222\20" - "\221\221\4\330\23\210c\231\320D\202B\42B\202BDB$b\26\0\331\12\210c\221\26\321oH\1" - "\332\12\210c\222\25\321oH\1\333\12\210c\241\25\321oH\1\334\13\210\343\20\21\25\321oH\1\335" - "\14\210c\221\26\321\206J\212\24\0\336\17\210c\20\253\221\11\221\11\221\11\251\21\7\337\17\210\343\240Q" - "!#a\42#!#Q\13\340\14\210\343\20\247\223)Q\63!\11\341\14\210\343\21\246\223)Q\63!" - "\11\342\14\210c\31\246\223)Q\63!\11\343\14\210\343\250\245\223)Q\63!\11\344\15\210\343PK'" - "S\242fB\22\0\345\16\210c\221\12\11\242\223)Q\63!\11\346\15\210\343\7\251\12\11\261P\64!" - "\11\347\15\210\343\207\241\221\11\221\253\12\223\1\350\14\210c\21\247\21\21\61\221#\5\351\14\210c\22\246" - "\21\21\61\221#\5\352\14\210c!\246\21\21\61\221#\5\353\15\210\343\20\221\245\21\21\61\221#\5\354" - "\12\210c\221\223\36SE\12\355\12\210c\222\222\36SE\12\356\13\210\343\221\12\11\36SE\12\357\12" - "\210\343\24\221\35SE\12\360\16\210\343\230\20R!\65#\242\15)\0\361\15\210c\21I\42*\61#" - "\242\227\0\362\14\210c\221\223\246\21\321\206\24\0\363\14\210c\222\222\246\21\321\206\24\0\364\15\210\343\221" - "\12\11\246\21\321\206\24\0\365\15\210c\21I\42L#\242\15)\0\366\14\210\343\24\221\245\21\321\206\24" - "\0\367\12\210\343\21\23\66\26\223\5\370\16\210\343\207\23\241\221\30\231\220!\21\3\371\13\210c\221\23\26" - "\321\233J\0\372\13\210c\222\22\26\321\233J\0\373\14\210\343\221\12\211\25\321\233J\0\374\13\210\343\24" - "\21\25\321\233J\0\375\15\210c\222\22\26\321\246L\244\4\0\376\14\210\343\214#\212\311\206(\34\0\377" - "\15\210\343\24\21\25\321\246L\244\4\0\0\0\0"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 95/228 - BBX Build Mode: 3 -*/ -const uint8_t u8g2_font_amstrad_cpc_extended_8r[1184] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8r") = - "_\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\3 \4\207 \7\210\343\307\21\0!\11" - "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" - "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" - "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" - ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" - "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" - "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" - "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" - "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" - "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" - "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" - "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" - "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" - "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" - "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" - "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" - "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" - "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" - "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" - "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" - "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" - "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" - "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" - "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" - "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" - "\222\20\221\221G\3_\10\210\343\307\366 \0`\11\210c\225S\217\10\0a\14\210\343\7\241\223)Q" - "\63!\11b\15\210c\230\32\253\21\321\213\10R\0c\14\210\343\207\241\21Q&\42C\12d\14\210\343" - "\31\223)\321\67\23\222\0e\14\210\343\207\241\21\21\61\221#\5f\15\210\343\31\222\220\221\242\22\223\242" - "\5g\14\210\343\207)\321M\231H\11\0h\16\210c\30S!\63!\242\213\21I\0i\12\210\343\221" - "\36\323\212\24\0j\13\210c\213\36S\242\33\22\0k\17\210c\30S\242B\206HBdD\22\0l" - "\11\210c\31\323+R\0m\20\210\343\7\221\20\271\220\210P\21\241F\22\0n\12\210\343\207P$\242" - "_\2o\13\210\343\207\241\21\321\33R\0p\16\210\343\207\220\230\21\321\244F\212\10\0q\15\210\343\7" - "\231P\242M\231\24\5\0r\14\210\343\207P$!#&E\14s\13\210\343\207\241\221\243\23)\5t" - "\14\210c\21\223*\22S!\64\12u\11\210\343\7\321\337T\2v\12\210\343\7\321\67T\262\0w\20" - "\210\343\207\220\221\220\210P\21!q\42!\12x\17\210\343\207\220\21\221\20\32\222\20\221\221\4y\13\210" - "\343\7\321\67e\42%\0z\13\210\343\7\61\11\221Re\11{\14\210\343\230\23\223\33\22\23\32\6|" - "\10\210\343\21\323\267\0}\14\210c\32\22\23\232\23\223\233\4~\11\210\343\230\320\36\63\0\0\0\0"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 18/228 - BBX Build Mode: 3 -*/ -const uint8_t u8g2_font_amstrad_cpc_extended_8n[235] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8n") = - "\22\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\0\0\0\0\0\322 \7\210\343\307\21\0*\16" - "\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22\223\7\2,\11\210\343G-&%\4" - "-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343\322g\361\0\60\22\210\343(\221\221\20" - "\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0\62\16\210c\241\21\21\223\241\21\23\21" - "\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221\32\212\220\11\221\71\222\42\5\65\15\210" - "\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242\15)\0\67\14\210\343\60\211\221\232R" - "\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c\241\21\321\246LD\15)\0:\12\210" - "\343\7\22\23\27\223\5\0\0\0"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 64/228 - BBX Build Mode: 3 -*/ -const uint8_t u8g2_font_amstrad_cpc_extended_8u[818] U8X8_FONT_SECTION("u8g2_font_amstrad_cpc_extended_8u") = - "@\3\4\3\4\4\1\1\5\10\7\0\0\10\0\10\1\1~\0\0\3\31 \7\210\343\307\21\0!\11" - "\210\343\21\323\271,\0\42\14\210\343P#!#!\217\30\0#\17\210\343P#!rRr\42!#" - "!\12$\16\210\343\221*\211\220\242\222\10\251\222\5%\16\210c\224\221\20\221\322DBF\22\0&\17" - "\210c\31\222\20Z\241bD\315\204$\0'\11\210\343\21S\217\32\0(\12\210c\222R\246N)\0" - ")\12\210c\221S\246J\61\0*\16\210\343\24\221!\71\10\241\21\221\7\1+\13\210\343\25\23\62\22" - "\223\7\2,\11\210\343G-&%\4-\10\210\343\7\265G\3.\10\210\343G-&\13/\10\210\343" - "\322g\361\0\60\22\210\343(\221\221\20\231\220\210\220\30\221\220\21)\5\61\12\210\343\221\32\323\221%\0" - "\62\16\210c\241\21\21\223\241\21\23\21\261\4\63\15\210c\241\211\21\23\232\23QC\12\64\16\210\343\221" - "\32\212\220\11\221\71\222\42\5\65\15\210\343\60\221\11\221\243\23QC\12\66\15\210c\241\21QV#\242" - "\15)\0\67\14\210\343\60\211\221\232R\246\26\0\70\15\210c\241\21\321\206FD\33R\0\71\15\210c" - "\241\21\321\246LD\15)\0:\12\210\343\7\22\23\27\223\5;\13\210\343\7\22\23\27\223\22\2<\11" - "\210c\222\322NS\0=\12\210\343\7\261\207\261\7\1>\11\210\343\220\323Jk\0?\13\210c\241\21" - "\21\223R.\13@\20\210\343(\221\221\220\240\220\240\220\240\220+\5A\14\210\343\221\242\21\321\304D\227" - "\0B\15\210c\260\21\321\244FD\13S\0C\15\210c\241\21\221\20S'\42C\12D\15\210c(" - "\222\220\21\321\27\42\265\0E\20\210c\70\221\11\221\10\42\222\10\222\211\270\4F\17\210c\70\221\11\221" - "\10\42\222\10\222\42\6G\16\210c\241\21\221\20S\62!#b\11H\12\210\343\20\321\23\23}\11I" - "\12\210\343\60\22\323\221%\0J\13\210\343\241\22S\242\33Z\0K\20\210c\30\321\205\14\221\204\214\210" - "\304\210$\0L\14\210c\240\22\323&D\305%\0M\20\210c\220\221X\361B\42B\215\204\214$\0" - "N\22\210c\220\221\30\221\240PA!\62!#!#\11O\21\210c\31\222\20\221\221\220\221\220\21\221" - "\20\232\5P\15\210c\260\21\321\204HL\212\30\0Q\22\210c\31\222\20\221\221\220\221P\21!\42\63" - "!\11R\20\210c\260\21\321\244FBFDb&\22\0S\15\210c\241\21QG'\242\206\24\0T" - "\15\210\343\60\211\220\10\22\323\212\24\0U\12\210\343\20\321\377\206\24\0V\12\210\343\20\321\277\241\222\5" - "W\22\210c\220\221\220\221\220\221\220\210\220\270X!#\11X\21\210c\220\21\221\20\232\32\222\20\221\221" - "\220\221\4Y\14\210\343\20\321\33*\61)R\0Z\17\210c\270\220\221\210\221R\22\242\342\22\0[\12" - "\210c!\22\323\31)\0\134\11\210c\220\323\273H\0]\11\210c!\323#R\0^\14\210\343\11\33" - "\222\20\221\221G\3_\10\210\343\307\366 \0\0\0\0"; /* Fontname: -FreeType-Mozart NBP-Medium-R-Normal--16-160-72-72-P-49-ISO10646-1 Copyright: Created by total FontGeek, generated by FontStruct. Licensed under CC BY SA diff --git a/src/clib/u8x8.h b/src/clib/u8x8.h index adb16001..18fdbc0a 100644 --- a/src/clib/u8x8.h +++ b/src/clib/u8x8.h @@ -793,6 +793,7 @@ uint8_t u8x8_d_pcd8544_84x48(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *a uint8_t u8x8_d_pcf8812_96x65(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1606_172x72(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_ssd1607_200x200(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); +uint8_t u8x8_d_il3820_296x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_lc7981_160x80(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_lc7981_160x160(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); uint8_t u8x8_d_lc7981_240x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr); @@ -877,16 +878,16 @@ uint8_t u8x8_UserInterfaceInputValue(u8x8_t *u8x8, const char *title, const char /*==========================================*/ /* start font list */ +extern const uint8_t u8x8_font_amstrad_cpc_extended_f[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_f"); +extern const uint8_t u8x8_font_amstrad_cpc_extended_r[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_r"); +extern const uint8_t u8x8_font_amstrad_cpc_extended_n[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_n"); +extern const uint8_t u8x8_font_amstrad_cpc_extended_u[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_u"); extern const uint8_t u8x8_font_5x7_f[] U8X8_FONT_SECTION("u8x8_font_5x7_f"); extern const uint8_t u8x8_font_5x7_r[] U8X8_FONT_SECTION("u8x8_font_5x7_r"); extern const uint8_t u8x8_font_5x7_n[] U8X8_FONT_SECTION("u8x8_font_5x7_n"); extern const uint8_t u8x8_font_5x8_f[] U8X8_FONT_SECTION("u8x8_font_5x8_f"); extern const uint8_t u8x8_font_5x8_r[] U8X8_FONT_SECTION("u8x8_font_5x8_r"); extern const uint8_t u8x8_font_5x8_n[] U8X8_FONT_SECTION("u8x8_font_5x8_n"); -extern const uint8_t u8x8_font_amstrad_cpc_extended_f[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_f"); -extern const uint8_t u8x8_font_amstrad_cpc_extended_r[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_r"); -extern const uint8_t u8x8_font_amstrad_cpc_extended_n[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_n"); -extern const uint8_t u8x8_font_amstrad_cpc_extended_u[] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_u"); extern const uint8_t u8x8_font_artossans8_r[] U8X8_FONT_SECTION("u8x8_font_artossans8_r"); extern const uint8_t u8x8_font_artossans8_n[] U8X8_FONT_SECTION("u8x8_font_artossans8_n"); extern const uint8_t u8x8_font_artossans8_u[] U8X8_FONT_SECTION("u8x8_font_artossans8_u"); diff --git a/src/clib/u8x8_d_il3820_296x128.c b/src/clib/u8x8_d_il3820_296x128.c new file mode 100644 index 00000000..60fae3fd --- /dev/null +++ b/src/clib/u8x8_d_il3820_296x128.c @@ -0,0 +1,428 @@ +/* + + u8x8_d_il3820_296x128.c + + Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/) + + Copyright (c) 2017, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + il3820: 200x300x1 + + command + 0x22: assign actions + 0x20: execute actions + + action for command 0x022 are (more or less guessed) + bit 7: Enable Clock + bit 6: Enable Charge Pump + bit 5: Load Temparture Value (???) + bit 4: Load LUT (???) + bit 3: Initial Display (???) + bit 2: Pattern Display --> Requires about 945ms with the LUT from below + bit 1: Disable Charge Pump + bit 0: Disable Clock + + Disable Charge Pump and Clock require about 267ms + Enable Charge Pump and Clock require about 10ms + + Notes: + - Introduced a refresh display message, which copies RAM to display + - Charge pump and clock are only enabled for the transfer RAM to display + - U8x8 will not really work because of the two buffers in the SSD1606, however U8g2 should be ok. + +*/ + + +#include "u8x8.h" + + +#define L(a,b,c,d) (((a)<<6)|((b)<<4)|((c)<<2)|(d)) + + +/* http://www.waveshare.com/wiki/File:2.9inch_e-Paper_Module_code.7z */ +static const uint8_t u8x8_d_il3820_296x128_init_seq[] = { + + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + + + + + U8X8_CA(0x10, 0x00), /* Deep Sleep mode Control: Disable */ + U8X8_C(0x01), + U8X8_A(295 % 256), U8X8_A(295/256), U8X8_A(0), + + + U8X8_CA(0x03, 0x00), /* Gate Driving voltage: 15V (lowest value)*/ + U8X8_CA(0x04, 0x0a), /* Source Driving voltage: 15V (mid value and POR)*/ + + U8X8_CA(0x11, 0x01), /* Define data entry mode, x&y inc, x first*/ + + U8X8_CAA(0x44, 0, 31), /* RAM x start & end, 32*4=128 */ + U8X8_CAAAA(0x45, 0, 0, 295&255, 295>>8), /* RAM y start & end, 0..295 */ + + U8X8_CA(0x4e, 0), /* set x pos, 0..29? */ + U8X8_CAA(0x4f, 0&255, 0>>8), /* set y pos, 0...320??? */ + + U8X8_CA(0x22, 0xc0), /* display update seq. option: enable clk, enable CP, .... todo: this is never activated */ + + U8X8_C(0x32), /* write LUT register*/ + + + /* according to the command table, the lut has 240 bits (=30 bytes * 8 bits) */ + + /* Waveform part of the LUT (20 bytes) */ + /* bit 7/6: 1 - 1 transition */ + /* bit 5/4: 1 - 0 transition */ + /* bit 3/2: 0 - 1 transition */ + /* bit 1/0: 0 - 0 transition */ + /* 00 – VSS */ + /* 01 – VSH */ + /* 10 – VSL */ + /* 11 – NA */ + +/* +LUT for the 296x128 device (IL3820) +LUT (cmd: 0x032 has 30 bytes) +section 6.8 of the datasheet mentions 256 bits = 32 bytes for the LUT +chapter 7 tells 30 bytes + +according to section 6.8: +20 bytes waveform +10 bytes timing +1 byte named as VSH/VSL +1 empty byte + +*/ +/* +static unsigned char LUTDefault_full[] = +{ + 0x32, + 0x02,0x02,0x01,0x11,0x12, 0x12,0x22,0x22,0x66,0x69, + 0x69,0x59,0x58,0x99,0x99, 0x88,0x00,0x00,0x00,0x00, + 0xF8,0xB4,0x13,0x51,0x35, 0x51,0x51,0x19,0x01,0x00, 0x00}; + static unsigned char LUTDefault_part[] = { + 0x32, + 0x10,0x18,0x18,0x08,0x18, 0x18,0x08,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, + 0x00,0x13,0x14,0x44,0x12, 0x00,0x00,0x00,0x00,0x00,0x00}; +*/ + + /* original values */ + U8X8_A(0x02), + U8X8_A(0x02), + U8X8_A(0x01), + U8X8_A(0x11), + U8X8_A(0x12), + + U8X8_A(0x12), + U8X8_A(0x22), + U8X8_A(0x22), + U8X8_A(0x66), + U8X8_A(0x69), + + U8X8_A(0x69), + U8X8_A(0x59), + U8X8_A(0x58), + U8X8_A(0x99), + U8X8_A(0x99), + + U8X8_A(0x88), + U8X8_A(0x00), + U8X8_A(0x00), + U8X8_A(0x00), + U8X8_A(0x00), + + /* Timing part of the LUT, 20 Phases with 4 bit each: 10 bytes */ + U8X8_A(0xF8), + U8X8_A(0xB4), + U8X8_A(0x13), + U8X8_A(0x51), + U8X8_A(0x35), + U8X8_A(0x51), + U8X8_A(0x51), + U8X8_A(0x19), + U8X8_A(0x01), + U8X8_A(0x00), + + //U8X8_A(0x00), + + + + U8X8_CA(0x2c, 0xa8), /* write vcom value*/ + U8X8_CA(0x3a, 0x1a), /* dummy lines */ + U8X8_CA(0x3b, 0x08), /* gate time */ + U8X8_CA(0x3c, 0x33), /* select boarder waveform */ + U8X8_CA(0x22, 0xc4), /* display update seq. option: clk -> CP -> LUT -> initial display -> pattern display */ + + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_il3820_to_display_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + + U8X8_CA(0x22, 0xc4), /* display update seq. option: clk -> CP -> LUT -> initial display -> pattern display */ + U8X8_C(0x20), /* execute sequence */ + + U8X8_DLY(250), /* delay for 2000ms. This has to be tested, maybe it can be reduced */ + U8X8_DLY(250), + U8X8_DLY(250), + U8X8_DLY(250), + + U8X8_DLY(250), + U8X8_DLY(250), + U8X8_DLY(250), + U8X8_DLY(250), + + U8X8_CA(0x22, 0x03), /* disable clock and charge pump */ + U8X8_DLY(250), + U8X8_DLY(250), + U8X8_DLY(100), + + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_il3820_296x128_powersave0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_il3820_296x128_powersave1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_il3820_296x128_flip0_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + +static const uint8_t u8x8_d_il3820_296x128_flip1_seq[] = { + U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */ + U8X8_END_TRANSFER(), /* disable chip */ + U8X8_END() /* end of sequence */ +}; + + +static uint8_t *u8x8_convert_tile_for_il3820(uint8_t *t) +{ + uint8_t i; + static uint8_t buf[8]; + uint8_t *pbuf = buf; + + for( i = 0; i < 8; i++ ) + { + *pbuf++ = ~(*t++); + } + return buf; +} + +static void u8x8_d_il3820_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr) U8X8_NOINLINE; +static void u8x8_d_il3820_draw_tile(u8x8_t *u8x8, uint8_t arg_int, void *arg_ptr) +{ + uint16_t x; + uint8_t c, page; + uint8_t *ptr; + u8x8_cad_StartTransfer(u8x8); + + page = u8x8->display_info->tile_height; + page --; + page -= (((u8x8_tile_t *)arg_ptr)->y_pos); + + //page = (((u8x8_tile_t *)arg_ptr)->y_pos); + + x = ((u8x8_tile_t *)arg_ptr)->x_pos; + x *= 8; + x += u8x8->x_offset; + + u8x8_cad_SendCmd(u8x8, 0x00f ); /* scan start */ + u8x8_cad_SendArg(u8x8, 0); + + u8x8_cad_SendCmd(u8x8, 0x011 ); /* cursor increment mode */ + u8x8_cad_SendArg(u8x8, 3); + + u8x8_cad_SendCmd(u8x8, 0x045 ); /* window start column */ + u8x8_cad_SendArg(u8x8, 0); + u8x8_cad_SendArg(u8x8, 0); + u8x8_cad_SendArg(u8x8, 199); /* end of display */ + u8x8_cad_SendArg(u8x8, 0); + + u8x8_cad_SendCmd(u8x8, 0x044 ); /* window end page */ + u8x8_cad_SendArg(u8x8, page); + u8x8_cad_SendArg(u8x8, page); + //u8x8_cad_SendArg(u8x8, 0); + //u8x8_cad_SendArg(u8x8, 199/8); + + u8x8_cad_SendCmd(u8x8, 0x04f ); /* window column */ + u8x8_cad_SendArg(u8x8, x&255); + u8x8_cad_SendArg(u8x8, x>>8); + + u8x8_cad_SendCmd(u8x8, 0x04e ); /* window row */ + u8x8_cad_SendArg(u8x8, page); + + u8x8_cad_SendCmd(u8x8, 0x024 ); + + do + { + c = ((u8x8_tile_t *)arg_ptr)->cnt; + ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; + do + { + u8x8_cad_SendData(u8x8, 8, u8x8_convert_tile_for_il3820(ptr)); + ptr += 8; + x += 8; + c--; + } while( c > 0 ); + + arg_int--; + } while( arg_int > 0 ); + + u8x8_cad_EndTransfer(u8x8); +} + + +static uint8_t u8x8_d_il3820_296x128_generic(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) +{ + switch(msg) + { + /* handled by the calling function + case U8X8_MSG_DISPLAY_SETUP_MEMORY: + u8x8_d_helper_display_setup_memory(u8x8, &u8x8_il3820_296x128_display_info); + break; + */ + case U8X8_MSG_DISPLAY_INIT: + + u8x8_d_helper_display_init(u8x8); + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_296x128_init_seq); + +#ifdef NOT_USED + /* STRATEGY FOR SSD1606 */ + /* special code for the SSD1606... */ + /* ensure that the initial buffer is clear and all eInk is set to white */ + /* this is done here, because the LUT will be of that kind, that it uses the previous color */ + /* make everything black */ + u8x8_FillDisplay(u8x8); + /* write content to the display */ + u8x8_RefreshDisplay(u8x8); + /* now make everything clear */ + u8x8_FillDisplay(u8x8); + /* write content to the display */ + u8x8_RefreshDisplay(u8x8); + /* now make everything clear */ + u8x8_ClearDisplay(u8x8); + /* write content to the display */ + u8x8_RefreshDisplay(u8x8); +#endif + + u8x8_ClearDisplay(u8x8); + /* write content to the display */ + u8x8_RefreshDisplay(u8x8); + + break; + case U8X8_MSG_DISPLAY_SET_POWER_SAVE: +/* + if ( arg_int == 0 ) + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_296x128_powersave0_seq); + else + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_296x128_powersave1_seq); +*/ + break; + case U8X8_MSG_DISPLAY_SET_FLIP_MODE: +/* + if ( arg_int == 0 ) + { + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_296x128_flip0_seq); + u8x8->x_offset = u8x8->display_info->default_x_offset; + } + else + { + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_296x128_flip1_seq); + u8x8->x_offset = u8x8->display_info->flipmode_x_offset; + } +*/ + break; +#ifdef U8X8_WITH_SET_CONTRAST +/* + case U8X8_MSG_DISPLAY_SET_CONTRAST: + u8x8_cad_StartTransfer(u8x8); + u8x8_cad_EndTransfer(u8x8); +*/ + break; +#endif + case U8X8_MSG_DISPLAY_DRAW_TILE: + u8x8_d_il3820_draw_tile(u8x8, arg_int, arg_ptr); + break; + case U8X8_MSG_DISPLAY_REFRESH: + u8x8_cad_SendSequence(u8x8, u8x8_d_il3820_to_display_seq); + break; + default: + return 0; + } + return 1; +} + + +static const u8x8_display_info_t u8x8_il3820_296x128_display_info = +{ + /* chip_enable_level = */ 0, + /* chip_disable_level = */ 1, + + /* post_chip_enable_wait_ns = */ 120, + /* pre_chip_disable_wait_ns = */ 60, + /* reset_pulse_width_ms = */ 100, + /* post_reset_wait_ms = */ 100, + /* sda_setup_time_ns = */ 50, /* IL3820 */ + /* sck_pulse_width_ns = */ 125, /* IL3820: 125ns, clock cycle = 250ns */ + /* sck_clock_hz = */ 4000000UL, /* since Arduino 1.6.0, the SPI bus speed in Hz. Should be 1000000000/sck_pulse_width_ns */ + /* spi_mode = */ 2, /* active high, rising edge */ + /* i2c_bus_clock_100kHz = */ 4, + /* data_setup_time_ns = */ 40, + /* write_pulse_width_ns = */ 150, + /* tile_width = */ 37, /* 37*8 = 296 */ + /* tile_hight = */ 16, /* 16*8 = 128 */ + /* default_x_offset = */ 0, + /* flipmode_x_offset = */ 0, + /* pixel_width = */ 296, + /* pixel_height = */ 128 +}; + +uint8_t u8x8_d_il3820_296x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) +{ + if ( msg == U8X8_MSG_DISPLAY_SETUP_MEMORY ) + { + u8x8_d_helper_display_setup_memory(u8x8, &u8x8_il3820_296x128_display_info); + return 1; + } + return u8x8_d_il3820_296x128_generic(u8x8, msg, arg_int, arg_ptr); +} + + diff --git a/src/clib/u8x8_fonts.c b/src/clib/u8x8_fonts.c index b13ff302..ef3b5bb6 100644 --- a/src/clib/u8x8_fonts.c +++ b/src/clib/u8x8_fonts.c @@ -3,6 +3,139 @@ */ #include "u8x8.h" +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 222/228 + BBX Build Mode: 3 +*/ +const uint8_t u8x8_font_amstrad_cpc_extended_f[1794] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_f") = + " \377\0\0\0\0\0\0\0\0\0\0\0__\0\0\0\0\7\7\0\7\7\0\0\24\34" + "\24\0\0$**\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\0\7\7\0" + "\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" + "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" + "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" + "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" + "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" + "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" + "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" + "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" + "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" + "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" + "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" + "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" + "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" + "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" + "\200\200\0\0\2\6\14\10\0\0 tTT\10" + "\10\0\0\0\0\0\0\0\0\10\10>wAA\0\2\3\1\3\2\1\1\0\0\0\0\0\0\0" + "\0\0\0\0\0\377\377\0\0\0\30\30\30\30\30\30\30\30\0\0\0\37\37\30\30\30\0\0\0\370\370\30" + "\30\30\30\30\30\370\370\0\0\0\30\30\30\37\37\0\0\0\30\30\30\37\37\30\30\30\0\0\0\377\377\30" + "\30\30\30\30\30\370\370\30\30\30\30\30\30\377\377\0\0\0\30\30\30\377\377\30\30\30\0\10\34>\10\10" + "\10\0\0\10\14>\14\10\0\0\0\10\10\10>\34\10\0\0\10\30>\30\10\0\0\0\0\0\0\360\360" + "\360\360\360\360\360\360\0\0\0\0\360\360\360\360\360\360\360\360\0\0\0\0\17\17\17\17\0\0\0\0\377\377" + "\377\377\360\360\360\360\17\17\17\17\360\360\360\360\377\377\377\377\17\17\17\17\0\0\0\0\17\17\17\17\360\360" + "\360\360\377\377\377\377\0\0\0\0\377\377\377\377\360\360\360\360\17\17\17\17\17\17\17\17\17\17\17\17\377\377" + "\377\377\377\377\377\377\17\17\17\17\377\377\377\377\377\377\377\377\300\300\300\300\300\300\300\300\374\374\374\374\374\374" + "\374\374\0\0\0\0\0\0\0\0\0\0\0}}\0\0\0\70|D\376Dl(\0H~IIc" + "b\0\0Z<$$\34\0\0zy\21\42zy\0\70|EED|\70\0\70|DDE}" + "\70\0\70|EEE|\70\0\70}EEE}\70\0\70}EDE}\70\0Bf<\30s]g>\35\1\0<}A@|<\0\0<|@A}<\0\0<}AA}" + "<\0\0=}@@}=\0\0\14]qp\134\14\0\42\42\42\34\0\0~III>" + "\66\0 uUTx@\0 tT|\64TX\0\0\30<\244\344$" + "(\0\0\70}UT\134\30\0\0\70|TU]\30\0\0\70}UU]\30\0\0\71}TT]" + "\31\0\0\0I{z@\0\0\0\0Hz{A\0\0\0\0JyyB\0\0\0\2JxxB" + "\2\0\0\65uKN}\61\0\10zq\11\12zq\0\0\60yKJx\60\0\0\60xJKy" + "\60\0\0\60zIIz\60\0\0\62yIJz\61\0\0\62zHHz\62\0\0\10\10kk\10" + "\10\0\200\260xhXx\64\4\0\70yCBxx\0\0\70xBCyx\0\0\70zAAz" + "x\0\0:z@@zz\0\0\230\270\242\243\371x\0\0~$$$\30\0\0\0\232\272\240\240\372" + "z"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 95/228 + BBX Build Mode: 3 +*/ +const uint8_t u8x8_font_amstrad_cpc_extended_r[762] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_r") = + " ~\0\0\0\0\0\0\0\0\0\0\0__\0\0\0\0\7\7\0\7\7\0\0\24\34" + "\24\0\0$**\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\0\7\7\0" + "\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" + "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" + "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" + "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" + "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" + "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" + "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" + "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" + "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" + "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" + "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" + "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" + "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" + "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" + "\200\200\0\0\2\6\14\10\0\0 tTT\10" + "\10\0\0\0\0\0\0\0\0\10\10>wAA\0\2\3\1\3\2\1\1"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 18/228 + BBX Build Mode: 3 +*/ +const uint8_t u8x8_font_amstrad_cpc_extended_n[218] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_n") = + " :\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10*>\34\34>*\10\0\10\10>>\10" + "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" + "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" + "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" + "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0"; +/* + Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 + Copyright: Copyright ruboku 2008 + Glyphs: 64/228 + BBX Build Mode: 3 +*/ +const uint8_t u8x8_font_amstrad_cpc_extended_u[515] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_u") = + " _\0\0\0\0\0\0\0\0\0\0\0__\0\0\0\0\7\7\0\7\7\0\0\24\34" + "\24\0\0$**\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\0\7\7\0" + "\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" + "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" + "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" + "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" + "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" + "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" + "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" + "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" + "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" + "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" + "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" + "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" + "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" + "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" + "\200\200"; /* Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 Copyright: Public domain font. Share and enjoy. @@ -221,139 +354,6 @@ const uint8_t u8x8_font_5x8_n[218] U8X8_FONT_SECTION("u8x8_font_5x8_n") = "\0\0\0cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" - "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" - "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" - "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" - "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" - "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" - "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" - "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" - "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" - "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" - "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" - "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" - "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" - "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" - "\200\200\0\0\2\6\14\10\0\0 tTT\10" - "\10\0\0\0\0\0\0\0\0\10\10>wAA\0\2\3\1\3\2\1\1\0\0\0\0\0\0\0" - "\0\0\0\0\0\377\377\0\0\0\30\30\30\30\30\30\30\30\0\0\0\37\37\30\30\30\0\0\0\370\370\30" - "\30\30\30\30\30\370\370\0\0\0\30\30\30\37\37\0\0\0\30\30\30\37\37\30\30\30\0\0\0\377\377\30" - "\30\30\30\30\30\370\370\30\30\30\30\30\30\377\377\0\0\0\30\30\30\377\377\30\30\30\0\10\34>\10\10" - "\10\0\0\10\14>\14\10\0\0\0\10\10\10>\34\10\0\0\10\30>\30\10\0\0\0\0\0\0\360\360" - "\360\360\360\360\360\360\0\0\0\0\360\360\360\360\360\360\360\360\0\0\0\0\17\17\17\17\0\0\0\0\377\377" - "\377\377\360\360\360\360\17\17\17\17\360\360\360\360\377\377\377\377\17\17\17\17\0\0\0\0\17\17\17\17\360\360" - "\360\360\377\377\377\377\0\0\0\0\377\377\377\377\360\360\360\360\17\17\17\17\17\17\17\17\17\17\17\17\377\377" - "\377\377\377\377\377\377\17\17\17\17\377\377\377\377\377\377\377\377\300\300\300\300\300\300\300\300\374\374\374\374\374\374" - "\374\374\0\0\0\0\0\0\0\0\0\0\0}}\0\0\0\70|D\376Dl(\0H~IIc" - "b\0\0Z<$$\34\0\0zy\21\42zy\0\70|EED|\70\0\70|DDE}" - "\70\0\70|EEE|\70\0\70}EEE}\70\0\70}EDE}\70\0Bf<\30s]g>\35\1\0<}A@|<\0\0<|@A}<\0\0<}AA}" - "<\0\0=}@@}=\0\0\14]qp\134\14\0\42\42\42\34\0\0~III>" - "\66\0 uUTx@\0 tT|\64TX\0\0\30<\244\344$" - "(\0\0\70}UT\134\30\0\0\70|TU]\30\0\0\70}UU]\30\0\0\71}TT]" - "\31\0\0\0I{z@\0\0\0\0Hz{A\0\0\0\0JyyB\0\0\0\2JxxB" - "\2\0\0\65uKN}\61\0\10zq\11\12zq\0\0\60yKJx\60\0\0\60xJKy" - "\60\0\0\60zIIz\60\0\0\62yIJz\61\0\0\62zHHz\62\0\0\10\10kk\10" - "\10\0\200\260xhXx\64\4\0\70yCBxx\0\0\70xBCyx\0\0\70zAAz" - "x\0\0:z@@zz\0\0\230\270\242\243\371x\0\0~$$$\30\0\0\0\232\272\240\240\372" - "z"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 95/228 - BBX Build Mode: 3 -*/ -const uint8_t u8x8_font_amstrad_cpc_extended_r[762] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_r") = - " ~\0\0\0\0\0\0\0\0\0\0\0__\0\0\0\0\7\7\0\7\7\0\0\24\34" - "\24\0\0$**\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\0\7\7\0" - "\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" - "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" - "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" - "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" - "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" - "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" - "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" - "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" - "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" - "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" - "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" - "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" - "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" - "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" - "\200\200\0\0\2\6\14\10\0\0 tTT\10" - "\10\0\0\0\0\0\0\0\0\10\10>wAA\0\2\3\1\3\2\1\1"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 18/228 - BBX Build Mode: 3 -*/ -const uint8_t u8x8_font_amstrad_cpc_extended_n[218] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_n") = - " :\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10*>\34\34>*\10\0\10\10>>\10" - "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" - "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" - "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" - "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0"; -/* - Fontname: -FreeType-Amstrad CPC extended-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1 - Copyright: Copyright ruboku 2008 - Glyphs: 64/228 - BBX Build Mode: 3 -*/ -const uint8_t u8x8_font_amstrad_cpc_extended_u[515] U8X8_FONT_SECTION("u8x8_font_amstrad_cpc_extended_u") = - " _\0\0\0\0\0\0\0\0\0\0\0__\0\0\0\0\7\7\0\7\7\0\0\24\34" - "\24\0\0$**\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\0\7\7\0" - "\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10" - "\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3" - "\1\0>QIE>\0\0@B@@\0\0r{IIof\0\0\42aII" - "\66\0\30\24RP\20\0\0'oIIy\63\0\0>II{\62\0\0\3\1q}\17" - "\7\0\0\66II\66\0\0&oII>\0\0\0\0ll\0\0\0\0\0\200\354l\0" - "\0\0\0\10\34\66cA\0\0\0$$$$$$\0\0Ac\66\34\10\0\0\0\2\3QY\17" - "\6\0>A]]_\36\0\0|~\23\23~|\0AII\66\0\34>cAAc" - "\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0<~CAQs" - "r\0\0\10\10\0\0AAAA\0\60p@A?\1\0A\10\34w" - "c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>" - "\34\0AI\11\7\6\0<~CQ\63n\134\0A\11\31?f\0\0&oII{" - "\62\0\0\3AA\3\0\0?@@?\0\0\37?``?\37\0\60\30\60" - "\0as\36\14\36sa\0\0\7OxxO\7\0GcqYMgs\0\0\0AA" - "\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200" - "\200\200"; /* Fontname: -FontForge-Artos Sans-Medium-R-Normal-Sans-8-80-75-75-P-50-ISO10646-1 Copyright: (null)