diff --git a/libs/epaper/CMakeLists.txt b/libs/epaper/CMakeLists.txt
index dd7bccf..9179961 100644
--- a/libs/epaper/CMakeLists.txt
+++ b/libs/epaper/CMakeLists.txt
@@ -1,4 +1,3 @@
add_subdirectory(Config)
add_subdirectory(e-Paper)
add_subdirectory(Fonts)
-add_subdirectory(GUI)
diff --git a/libs/epaper/Fonts/font12CN.c b/libs/epaper/Fonts/font12CN.c
deleted file mode 100644
index cf29da2..0000000
--- a/libs/epaper/Fonts/font12CN.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- ******************************************************************************
- * @file Font12.c
- * @author MCD Application Team
- * @version V1.0.0
- * @date 18-February-2014
- * @brief This file provides text Font12 for STM32xx-EVAL's LCD driver.
- ******************************************************************************
- * @attention
- *
- *
© COPYRIGHT(c) 2014 STMicroelectronics
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * 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.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "fonts.h"
-
-
-//
-// Font data for Courier New 12pt
-//
-
-const CH_CN Font12CN_Table[] =
-{
-/*-- ÎÄ×Ö: Äã --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"Äã"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0xC0,0x1D,0x80,0x3B,0xFF,0x3B,0x07,
-0x3F,0x77,0x7E,0x76,0xF8,0x70,0xFB,0xFE,0xFB,0xFE,0x3F,0x77,0x3F,0x77,0x3E,0x73,
-0x38,0x70,0x38,0x70,0x3B,0xE0,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ºÃ --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"ºÃ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x73,0xFF,0x70,0x0F,0xFE,0x1E,
-0x7E,0x3C,0x6E,0x38,0xEE,0x30,0xEF,0xFF,0xFC,0x30,0x7C,0x30,0x38,0x30,0x3E,0x30,
-0x7E,0x30,0xE0,0x30,0xC1,0xF0,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ê÷ --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"Ê÷"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0E,0x30,0x0E,0x3F,0xEE,0x30,0xEE,
-0xFC,0xFF,0x76,0xCE,0x77,0xFE,0x7B,0xFE,0xFF,0xFE,0xF3,0xDE,0xF3,0xCE,0x37,0xEE,
-0x3E,0x6E,0x3C,0x0E,0x30,0x3E,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ý® --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"Ý®"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x70,0xFF,0xFF,0x3E,0x70,0x38,0x00,
-0x7F,0xFF,0xE0,0x00,0xFF,0xFC,0x3B,0x8C,0x39,0xCC,0xFF,0xFF,0x73,0x9C,0x71,0xDC,
-0x7F,0xFF,0x00,0x1C,0x01,0xF8,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ÅÉ --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"ÅÉ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xFF,0xF0,0x3E,0x00,0x0E,0x1F,
-0xCF,0xFB,0xFF,0xF8,0x3F,0xFF,0x0F,0xFF,0x7F,0xD8,0x7F,0xDC,0x6F,0xCE,0xED,0xFF,
-0xFD,0xF7,0xF9,0xC0,0x00,0x00,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: a --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"a"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x3E,0x00,0x67,0x00,0x07,0x80,0x0F,0x80,0x7F,0x80,0xE3,0x80,0xE7,0x80,0xE7,0x80,
-0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: b --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"b"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,
-0x7F,0x00,0x7B,0x80,0x71,0xC0,0x71,0xC0,0x71,0xC0,0x71,0xC0,0x71,0xC0,0x7B,0x80,
-0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: c --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"c"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x3F,0x00,0x73,0x00,0xF0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xF0,0x00,0x73,0x00,
-0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: A --*/
-/*-- ΢ÈíÑźÚ12; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=16x21 --*/
-{{"A"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x1F,0x00,0x1F,0x00,
-0x1F,0x00,0x3B,0x80,0x3B,0x80,0x71,0x80,0x7F,0xC0,0x71,0xC0,0xE0,0xE0,0xE0,0xE0,
-0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
-};
-
-cFONT Font12CN = {
- Font12CN_Table,
- sizeof(Font12CN_Table)/sizeof(CH_CN), /*size of table*/
- 11, /* ASCII Width */
- 16, /* Width */
- 21, /* Height */
-};
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/libs/epaper/Fonts/font24CN.c b/libs/epaper/Fonts/font24CN.c
deleted file mode 100644
index d3c9584..0000000
--- a/libs/epaper/Fonts/font24CN.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/**
- ******************************************************************************
- * @file Font12.c
- * @author MCD Application Team
- * @version V1.0.0
- * @date 18-February-2014
- * @brief This file provides text Font12 for STM32xx-EVAL's LCD driver.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT(c) 2014 STMicroelectronics
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * 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.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "fonts.h"
-
-
-//
-// Font data for Courier New 12pt
-//
-
-const CH_CN Font24CN_Table[] =
-{
-/*-- ÎÄ×Ö: Äã --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Äã"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC1,0xC0,0x00,
-0x01,0xE3,0xE0,0x00,0x03,0xE3,0xC0,0x00,0x03,0xC7,0x80,0x00,0x03,0xC7,0xFF,0xFF,
-0x07,0x8F,0xFF,0xFF,0x07,0x8F,0x00,0x0F,0x0F,0x1E,0x00,0x1E,0x0F,0x3C,0x1E,0x1E,
-0x1F,0x3C,0x1E,0x3E,0x1F,0x18,0x1E,0x3C,0x3F,0x00,0x1E,0x1C,0x7F,0x00,0x1E,0x00,
-0x7F,0x07,0x9E,0x70,0xFF,0x07,0x9E,0xF0,0xEF,0x0F,0x9E,0x78,0x6F,0x0F,0x1E,0x78,
-0x0F,0x0F,0x1E,0x3C,0x0F,0x1E,0x1E,0x3C,0x0F,0x1E,0x1E,0x1E,0x0F,0x3C,0x1E,0x1E,
-0x0F,0x3C,0x1E,0x1F,0x0F,0x7C,0x1E,0x0F,0x0F,0x78,0x1E,0x0E,0x0F,0x00,0x1E,0x00,
-0x0F,0x00,0x1E,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x07,0xFC,0x00,0x0F,0x07,0xF8,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ºÃ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"ºÃ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
-0x0F,0x07,0xFF,0xFE,0x0F,0x07,0xFF,0xFE,0x0F,0x00,0x00,0x3E,0x1E,0x00,0x00,0xFC,
-0xFF,0xF8,0x01,0xF0,0xFF,0xF8,0x03,0xE0,0x1E,0x78,0x07,0xC0,0x1E,0x78,0x0F,0x80,
-0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,
-0x3C,0x7F,0xFF,0xFF,0x78,0xFF,0xFF,0xFF,0x78,0xF0,0x0F,0x00,0x78,0xF0,0x0F,0x00,
-0x3D,0xE0,0x0F,0x00,0x1F,0xE0,0x0F,0x00,0x0F,0xE0,0x0F,0x00,0x07,0xC0,0x0F,0x00,
-0x07,0xE0,0x0F,0x00,0x07,0xF0,0x0F,0x00,0x0F,0xF8,0x0F,0x00,0x1E,0x7C,0x0F,0x00,
-0x3C,0x38,0x0F,0x00,0x78,0x00,0x0F,0x00,0xF0,0x03,0xFF,0x00,0x60,0x01,0xFE,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ΢ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"΢"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x01,0xE0,0x07,0x87,0x01,0xE0,
-0x07,0x07,0x01,0xC0,0x0F,0xF7,0x79,0xC0,0x1E,0xF7,0x7B,0xC0,0x1E,0xF7,0x7B,0x80,
-0x3C,0xF7,0x7B,0xFF,0x78,0xF7,0x7B,0xFF,0xF8,0xF7,0x7F,0x9E,0xF7,0xFF,0xFF,0x9E,
-0x67,0xFF,0xFF,0x9E,0x07,0x00,0x7F,0x9C,0x0F,0x00,0x0F,0x9C,0x1E,0x00,0x1F,0x9C,
-0x1E,0x7F,0xFF,0xBC,0x3E,0x7F,0xF3,0xFC,0x3E,0x00,0x03,0xFC,0x7E,0x00,0x01,0xF8,
-0xFE,0x00,0x01,0xF8,0xFE,0x7F,0xE1,0xF8,0xDE,0x7F,0xE1,0xF8,0x1E,0x78,0xE0,0xF0,
-0x1E,0x78,0xEE,0xF0,0x1E,0x78,0xFF,0xF0,0x1E,0x78,0xFD,0xF8,0x1E,0x79,0xFB,0xFC,
-0x1E,0xF1,0xF7,0xBC,0x1E,0xF0,0xEF,0x9E,0x1F,0xE0,0x0F,0x0F,0x1E,0xC0,0x1E,0x0F,
-0x1E,0x00,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Èí --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Èí"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x03,0xC0,0x78,0x00,0x07,0x80,0x78,0x00,0x07,0x80,0x78,0x00,
-0x07,0x80,0xF0,0x00,0x0F,0x00,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
-0x1E,0x03,0xC0,0x1F,0x1E,0x03,0xC0,0x1E,0x1F,0xE7,0x8F,0x3E,0x3D,0xE7,0x8F,0x3C,
-0x3D,0xEF,0x0F,0x7C,0x3D,0xE7,0x0F,0x78,0x79,0xE0,0x0F,0x00,0x79,0xE0,0x0E,0x00,
-0x7F,0xFE,0x0E,0x00,0x7F,0xFE,0x1F,0x00,0x01,0xE0,0x1F,0x00,0x01,0xE0,0x1F,0x00,
-0x01,0xE0,0x1F,0x80,0x01,0xE0,0x1F,0x80,0x01,0xE0,0x3F,0x80,0x01,0xFF,0x3F,0xC0,
-0x0F,0xFF,0x7B,0xC0,0xFF,0xF0,0x79,0xE0,0xF9,0xE0,0xF1,0xF0,0x01,0xE1,0xF0,0xF0,
-0x01,0xE3,0xE0,0xF8,0x01,0xE7,0xC0,0x7C,0x01,0xFF,0x80,0x3F,0x01,0xFF,0x00,0x1F,
-0x01,0xEC,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ÑÅ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"ÑÅ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0xFF,0x00,
-0x7F,0xFC,0xF7,0x80,0x7F,0xFD,0xE3,0xC0,0x01,0xC1,0xE3,0xC0,0x01,0xC3,0xC1,0x80,
-0x3D,0xC7,0xFF,0xFF,0x39,0xC7,0xFF,0xFF,0x39,0xCF,0x83,0x80,0x79,0xDF,0x83,0x80,
-0x79,0xFF,0x83,0x80,0x79,0xDF,0x83,0x80,0x71,0xC3,0x83,0x80,0x7F,0xFF,0xFF,0xFE,
-0x7F,0xFF,0xFF,0xFE,0x03,0xC3,0x83,0x80,0x07,0xC3,0x83,0x80,0x07,0xC3,0x83,0x80,
-0x0F,0xC3,0x83,0x80,0x0F,0xC3,0x83,0x80,0x1F,0xC3,0xFF,0xFE,0x1D,0xC3,0xFF,0xFE,
-0x3D,0xC3,0x83,0x80,0x79,0xC3,0x83,0x80,0xF1,0xC3,0x83,0x80,0xF1,0xC3,0x83,0x80,
-0x61,0xC3,0x83,0x80,0x01,0xC3,0xFF,0xFF,0x03,0xC3,0xFF,0xFF,0x1F,0xC3,0x80,0x00,
-0x1F,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ºÚ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"ºÚ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1E,0x03,0xC0,0x3C,0x1E,0xC3,0xC7,0x3C,
-0x1F,0xE3,0xC7,0xBC,0x1E,0xF3,0xCF,0x3C,0x1E,0xFB,0xDF,0x3C,0x1E,0x7B,0xDE,0x3C,
-0x1E,0x33,0xDC,0x3C,0x1E,0x03,0xC0,0x3C,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,
-0x1E,0x03,0xC0,0x3C,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x3F,0xFF,0xFF,0xFC,
-0x3F,0xFF,0xFF,0xFC,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1C,0x38,0x70,0x70,
-0x3E,0x78,0xF8,0xF8,0x3C,0x7C,0x78,0x7C,0x7C,0x3C,0x3C,0x3E,0xF8,0x3E,0x3C,0x1F,
-0xF0,0x1C,0x18,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ´Ë --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"´Ë"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x3C,0x00,
-0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,
-0x00,0x78,0x3C,0x0C,0x3C,0x78,0x3C,0x1E,0x3C,0x78,0x3C,0x3F,0x3C,0x78,0x3C,0xF8,
-0x3C,0x7F,0xFD,0xF0,0x3C,0x7F,0xFF,0xE0,0x3C,0x78,0x3F,0x80,0x3C,0x78,0x3E,0x00,
-0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,
-0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x0E,0x3C,0x78,0x3C,0x0F,
-0x3C,0x78,0x3C,0x0F,0x3C,0x79,0xFC,0x0F,0x3C,0x7F,0xFC,0x0F,0x3F,0xFF,0x3C,0x0F,
-0x3F,0xF0,0x3E,0x1E,0xFF,0x00,0x1F,0xFE,0xF0,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ×Ö --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"×Ö"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x03,0xC0,0x00,
-0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
-0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,
-0x7B,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,
-0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
-0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
-0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xFF,0xC0,0x00,0x00,0xFF,0x80,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ìå --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ìå"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x3C,0x00,
-0x03,0xC0,0x3C,0x00,0x03,0xC0,0x3C,0x00,0x07,0x80,0x3C,0x00,0x07,0x80,0x3C,0x00,
-0x07,0x80,0x3C,0x00,0x0F,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x1F,0x01,0xFE,0x00,
-0x1F,0x01,0xFF,0x00,0x3F,0x01,0xFF,0x00,0x3F,0x03,0xFF,0x00,0x7F,0x03,0xFF,0x80,
-0x7F,0x07,0xBF,0x80,0xFF,0x07,0xBF,0xC0,0xEF,0x0F,0x3D,0xC0,0xCF,0x0F,0x3D,0xE0,
-0x0F,0x1E,0x3D,0xE0,0x0F,0x1E,0x3C,0xF0,0x0F,0x3C,0x3C,0x78,0x0F,0x7C,0x3C,0x7C,
-0x0F,0xF8,0x3C,0x3E,0x0F,0xF7,0xFF,0xDF,0x0F,0xE7,0xFF,0xCF,0x0F,0xC0,0x3C,0x06,
-0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,
-0x0F,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ï --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"ÏÂ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
-0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
-0x00,0x0F,0xE0,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xBF,0x00,
-0x00,0x0F,0x9F,0x80,0x00,0x0F,0x87,0xE0,0x00,0x0F,0x83,0xF0,0x00,0x0F,0x80,0xF8,
-0x00,0x0F,0x80,0x7C,0x00,0x0F,0x80,0x38,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
-0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
-0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ¶Ô --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"¶Ô"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,
-0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x7F,0xFC,0x00,0x78,0x7F,0xFC,0x00,0x78,
-0x00,0x3C,0x00,0x78,0x00,0x3F,0xFF,0xFF,0x30,0x3F,0xFF,0xFF,0x78,0x3C,0x00,0x78,
-0x3C,0x38,0x00,0x78,0x3E,0x78,0x00,0x78,0x1E,0x78,0xC0,0x78,0x0F,0x79,0xE0,0x78,
-0x0F,0xF0,0xF0,0x78,0x07,0xF0,0xF8,0x78,0x03,0xF0,0x78,0x78,0x01,0xE0,0x3C,0x78,
-0x03,0xF0,0x3E,0x78,0x03,0xF0,0x18,0x78,0x07,0xF8,0x00,0x78,0x07,0xFC,0x00,0x78,
-0x0F,0x3E,0x00,0x78,0x1F,0x1E,0x00,0x78,0x3E,0x1F,0x00,0x78,0x7C,0x0E,0x00,0xF8,
-0xF8,0x00,0x00,0xF0,0xF0,0x00,0x3F,0xF0,0x60,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ó¦ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ó¦"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,
-0x00,0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,
-0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x01,0xE0,0x78,0x1E,0x01,0xE0,0x78,
-0x1E,0xE1,0xE0,0x78,0x1F,0xF1,0xF0,0xF8,0x1E,0xF0,0xF0,0xF0,0x1E,0xF0,0xF0,0xF0,
-0x1E,0xF8,0xF0,0xF0,0x1E,0x78,0xF1,0xF0,0x1E,0x78,0xF9,0xE0,0x1E,0x78,0x79,0xE0,
-0x1E,0x7C,0x7B,0xE0,0x1E,0x3C,0x7B,0xC0,0x1E,0x3C,0x7B,0xC0,0x1E,0x3C,0x7B,0xC0,
-0x3C,0x3E,0x07,0x80,0x3C,0x1C,0x07,0x80,0x3C,0x00,0x07,0x80,0x3C,0x00,0x0F,0x00,
-0x78,0x00,0x0F,0x00,0x7B,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,
-0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: µÄ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"µÄ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x3C,0x00,0x07,0xC0,0x3E,0x00,
-0x07,0x80,0x3C,0x00,0x07,0x80,0x7C,0x00,0x0F,0x00,0x78,0x00,0x7F,0xFE,0x7F,0xFE,
-0x7F,0xFE,0xFF,0xFE,0x78,0x1E,0xF0,0x1E,0x78,0x1F,0xE0,0x1E,0x78,0x1F,0xE0,0x1E,
-0x78,0x1F,0xC0,0x1E,0x78,0x1F,0xC0,0x1E,0x78,0x1F,0xF0,0x1E,0x78,0x1E,0xF8,0x1E,
-0x78,0x1E,0x7C,0x1E,0x7F,0xFE,0x3C,0x1E,0x7F,0xFE,0x1E,0x1E,0x78,0x1E,0x1F,0x1E,
-0x78,0x1E,0x0F,0x9E,0x78,0x1E,0x07,0x9E,0x78,0x1E,0x07,0x1E,0x78,0x1E,0x00,0x1E,
-0x78,0x1E,0x00,0x1E,0x78,0x1E,0x00,0x3E,0x78,0x1E,0x00,0x3C,0x78,0x1E,0x00,0x3C,
-0x7F,0xFE,0x00,0x3C,0x7F,0xFE,0x00,0x7C,0x78,0x1E,0x3F,0xF8,0x78,0x1E,0x3F,0xF0,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: µã --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"µã"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
-0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0x00,0x03,0xFF,0xFF,
-0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
-0x0F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,
-0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,
-0x0F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x0F,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
-0x0C,0x38,0x38,0x30,0x1E,0x7C,0x78,0x78,0x3E,0x3C,0x78,0x78,0x3C,0x3C,0x3C,0x3C,
-0x7C,0x3E,0x3C,0x3E,0xF8,0x1E,0x3C,0x1E,0xF0,0x1E,0x1E,0x1F,0x70,0x1E,0x1C,0x0E,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Õó --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Õó"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x78,0x00,
-0x7F,0xF0,0x78,0x00,0x7F,0xF0,0x78,0x00,0x79,0xFF,0xFF,0xFF,0x79,0xFF,0xFF,0xFF,
-0x79,0xE1,0xE0,0x00,0x79,0xE1,0xE0,0x00,0x7B,0xC1,0xEF,0x80,0x7B,0xC3,0xCF,0x80,
-0x7B,0xC3,0xCF,0x80,0x7F,0x87,0xCF,0x80,0x7F,0x87,0x8F,0x80,0x7F,0x87,0x8F,0x80,
-0x7B,0xCF,0x0F,0x80,0x7B,0xCF,0xFF,0xFE,0x79,0xEF,0xFF,0xFE,0x79,0xE0,0x0F,0x80,
-0x78,0xE0,0x0F,0x80,0x78,0xF0,0x0F,0x80,0x78,0xF0,0x0F,0x80,0x78,0xF0,0x0F,0x80,
-0x78,0xFF,0xFF,0xFF,0x79,0xFF,0xFF,0xFF,0x7F,0xE0,0x0F,0x80,0x7F,0xC0,0x0F,0x80,
-0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,
-0x78,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ϊ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ϊ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,
-0x0E,0x07,0x80,0x00,0x1F,0x07,0x80,0x00,0x0F,0x87,0x80,0x00,0x07,0xC7,0x80,0x00,
-0x01,0xE7,0x80,0x00,0x00,0xC7,0x80,0x00,0x00,0x07,0x80,0x00,0x7F,0xFF,0xFF,0xFC,
-0x7F,0xFF,0xFF,0xFC,0x00,0x07,0x80,0x3C,0x00,0x0F,0x80,0x3C,0x00,0x0F,0x00,0x3C,
-0x00,0x0F,0x00,0x3C,0x00,0x0F,0x60,0x3C,0x00,0x1F,0xF0,0x3C,0x00,0x1E,0x78,0x3C,
-0x00,0x3E,0x3C,0x3C,0x00,0x3C,0x3E,0x3C,0x00,0x7C,0x1F,0x3C,0x00,0x78,0x0F,0x3C,
-0x00,0xF8,0x06,0x3C,0x01,0xF0,0x00,0x3C,0x03,0xE0,0x00,0x7C,0x07,0xC0,0x00,0x7C,
-0x0F,0x80,0x00,0x78,0x1F,0x00,0x00,0xF8,0x3E,0x00,0xFF,0xF0,0x7C,0x00,0xFF,0xE0,
-0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ê÷ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ê÷"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x38,
-0x0F,0x00,0x00,0x38,0x0F,0x00,0x00,0x38,0x0F,0x3F,0xF8,0x38,0x0F,0x3F,0xF8,0x38,
-0x0F,0x00,0x78,0x38,0xFF,0xE0,0x7F,0xFF,0xFF,0xE0,0x7F,0xFF,0x0F,0x00,0x70,0x38,
-0x0F,0x18,0xF0,0x38,0x1F,0x3C,0xF0,0x38,0x1F,0x1C,0xFE,0x38,0x1F,0xDE,0xFE,0x38,
-0x3F,0xEF,0xEF,0x38,0x3F,0xFF,0xEF,0x38,0x3F,0xF7,0xE7,0xB8,0x7F,0x67,0xC7,0xB8,
-0x7F,0x03,0xC3,0xB8,0xFF,0x07,0xE0,0x38,0xEF,0x07,0xE0,0x38,0xEF,0x0F,0xF0,0x38,
-0xCF,0x1F,0xF0,0x38,0x0F,0x1E,0x78,0x38,0x0F,0x3C,0x7C,0x38,0x0F,0x78,0x3C,0x38,
-0x0F,0xF8,0x38,0x38,0x0F,0x60,0x00,0x78,0x0F,0x00,0x0F,0xF8,0x0F,0x00,0x07,0xF0,
-0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ý® --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ý®"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x3C,0x1E,0x00,
-0x00,0x3C,0x1E,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3C,0x1E,0x00,
-0x07,0xBC,0x1E,0x00,0x07,0x80,0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFC,
-0x1E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF0,
-0xF7,0xFF,0xFF,0xF0,0x37,0x83,0x80,0xF0,0x07,0x87,0xC0,0xF0,0x07,0x83,0xF0,0xF0,
-0x07,0x00,0xE0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x00,0xE0,
-0x0F,0x0F,0x81,0xE0,0x0E,0x03,0xE1,0xE0,0x1E,0x01,0xC1,0xE0,0x1F,0xFF,0xFF,0xFE,
-0x1F,0xFF,0xFF,0xFE,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xFF,0xC0,
-0x00,0x00,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ÅÉ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"ÅÉ"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x3E,
-0x7C,0x00,0x3F,0xFE,0x3F,0x3F,0xFF,0xF0,0x1F,0xBF,0xE0,0x00,0x07,0xBC,0x00,0x00,
-0x03,0x3C,0x00,0x00,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x0F,0xFE,0x70,0x3D,0xFF,0xF8,
-0xF8,0x3D,0xFF,0x00,0x7C,0x3D,0xE7,0x80,0x3F,0x3D,0xE7,0x80,0x1F,0x3D,0xE7,0x8E,
-0x0E,0x3D,0xE7,0x9F,0x00,0x3D,0xE7,0xFE,0x00,0x39,0xE7,0xF8,0x00,0x39,0xE3,0xF0,
-0x1C,0x39,0xE3,0xC0,0x1E,0x79,0xE3,0xC0,0x1E,0x79,0xE1,0xE0,0x1E,0x79,0xE1,0xE0,
-0x3C,0x79,0xE0,0xF0,0x3C,0x79,0xE0,0xF8,0x3C,0xF1,0xE0,0x7C,0x3C,0xF1,0xE3,0x7C,
-0x7D,0xF1,0xEF,0x3F,0x79,0xE1,0xFE,0x1F,0x7B,0xE1,0xF8,0x0E,0x7B,0xC3,0xE0,0x00,
-0x79,0x81,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: A --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{
-"A"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,
-0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,0xEF,0x00,0x00,0x03,0xEF,0x80,0x00,
-0x03,0xCF,0x80,0x00,0x07,0xC7,0x80,0x00,0x07,0xC7,0xC0,0x00,0x07,0x87,0xC0,0x00,
-0x0F,0x83,0xE0,0x00,0x0F,0x83,0xE0,0x00,0x0F,0x01,0xE0,0x00,0x1F,0xFF,0xF0,0x00,
-0x1F,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0x3E,0x00,0xF8,0x00,0x3C,0x00,0xF8,0x00,
-0x7C,0x00,0x7C,0x00,0x7C,0x00,0x7C,0x00,0x78,0x00,0x3C,0x00,0xF8,0x00,0x3E,0x00,
-0xF8,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: a --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"a"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
-0x1F,0xFE,0x00,0x00,0x3F,0xFE,0x00,0x00,0x3E,0x3F,0x00,0x00,0x38,0x1F,0x00,0x00,
-0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x03,0xFF,0x00,0x00,0x1F,0xFF,0x00,0x00,
-0x3F,0x8F,0x00,0x00,0x7C,0x0F,0x00,0x00,0x7C,0x0F,0x00,0x00,0x78,0x1F,0x00,0x00,
-0x7C,0x1F,0x00,0x00,0x7E,0x7F,0x00,0x00,0x7F,0xFF,0x00,0x00,0x3F,0xFF,0x00,0x00,
-0x0F,0xCF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: b --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"b"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
-0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
-0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0xFE,0x00,0x00,
-0x3D,0xFF,0x80,0x00,0x3F,0xFF,0xC0,0x00,0x3F,0x8F,0xC0,0x00,0x3F,0x07,0xE0,0x00,
-0x3E,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,0x3C,0x01,0xE0,0x00,0x3C,0x01,0xE0,0x00,
-0x3C,0x01,0xE0,0x00,0x3C,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,
-0x3F,0x07,0xC0,0x00,0x3F,0x8F,0xC0,0x00,0x3F,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,
-0x3C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: c --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"c"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
-0x07,0xFE,0x00,0x00,0x1F,0xFE,0x00,0x00,0x3F,0x86,0x00,0x00,0x3E,0x00,0x00,0x00,
-0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
-0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,
-0x3E,0x00,0x00,0x00,0x3F,0x86,0x00,0x00,0x1F,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,
-0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ΢ --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"΢"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x01,0xE0,0x07,0x87,0x01,0xE0,
-0x07,0x07,0x01,0xC0,0x0F,0xF7,0x79,0xC0,0x1E,0xF7,0x7B,0xC0,0x1E,0xF7,0x7B,0x80,
-0x3C,0xF7,0x7B,0xFF,0x78,0xF7,0x7B,0xFF,0xF8,0xF7,0x7F,0x9E,0xF7,0xFF,0xFF,0x9E,
-0x67,0xFF,0xFF,0x9E,0x07,0x00,0x7F,0x9C,0x0F,0x00,0x0F,0x9C,0x1E,0x00,0x1F,0x9C,
-0x1E,0x7F,0xFF,0xBC,0x3E,0x7F,0xF3,0xFC,0x3E,0x00,0x03,0xFC,0x7E,0x00,0x01,0xF8,
-0xFE,0x00,0x01,0xF8,0xFE,0x7F,0xE1,0xF8,0xDE,0x7F,0xE1,0xF8,0x1E,0x78,0xE0,0xF0,
-0x1E,0x78,0xEE,0xF0,0x1E,0x78,0xFF,0xF0,0x1E,0x78,0xFD,0xF8,0x1E,0x79,0xFB,0xFC,
-0x1E,0xF1,0xF7,0xBC,0x1E,0xF0,0xEF,0x9E,0x1F,0xE0,0x0F,0x0F,0x1E,0xC0,0x1E,0x0F,
-0x1E,0x00,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: Ñ© --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"Ñ©"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
-0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x78,0x03,0xC0,0x1E,0x78,0x03,0xC0,0x1E,
-0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
-0x07,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,
-0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,
-0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,
-0x00,0x00,0x00,0x78,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: µç --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"µç"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,
-0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
-0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,
-0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
-0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,
-0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
-0x78,0x07,0x80,0x0E,0x78,0x07,0x80,0x0F,0x00,0x07,0x80,0x0F,0x00,0x07,0x80,0x0F,
-0x00,0x07,0x80,0x1F,0x00,0x07,0x80,0x1E,0x00,0x03,0xFF,0xFE,0x00,0x01,0xFF,0xFC,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-/*-- ÎÄ×Ö: ×Ó --*/
-/*-- ΢ÈíÑźÚ24; ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=32x41 --*/
-{{"×Ó"},{
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,
-0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,
-0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
-0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
-0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
-0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x01,0xFF,0xC0,0x00,0x00,0xFF,0x80,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00}},
-
-
-};
-
-cFONT Font24CN = {
- Font24CN_Table,
- sizeof(Font24CN_Table)/sizeof(CH_CN), /*size of table*/
- 24, /* ASCII Width */
- 32, /* Width */
- 41, /* Height */
-};
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/libs/epaper/Fonts/fonts.h b/libs/epaper/Fonts/fonts.h
index c183f04..214ceb9 100644
--- a/libs/epaper/Fonts/fonts.h
+++ b/libs/epaper/Fonts/fonts.h
@@ -39,7 +39,7 @@
#ifndef __FONTS_H
#define __FONTS_H
-/*×î´ó×ÖÌå΢ÈíÑźÚ24 (32x41) */
+/*�������΢���ź�24 (32x41) */
#define MAX_HEIGHT_FONT 41
#define MAX_WIDTH_FONT 32
#define OFFSET_BITMAP
@@ -62,31 +62,31 @@ typedef struct _tFont
//GB2312
-typedef struct // ºº×Ö×ÖÄ£Êý¾Ý½á¹¹
-{
- const char index[2]; // ºº×ÖÄÚÂëË÷Òý
- const char matrix[MAX_HEIGHT_FONT*MAX_WIDTH_FONT/8+2]; // µãÕóÂëÊý¾Ý
-}CH_CN;
+// typedef struct // ������ģ���ݽṹ
+// {
+// const char index[2]; // ������������
+// const char matrix[MAX_HEIGHT_FONT*MAX_WIDTH_FONT/8+2]; // ����������
+// }CH_CN;
-typedef struct
-{
- const CH_CN *table;
- uint16_t size;
- uint16_t ASCII_Width;
- uint16_t Width;
- uint16_t Height;
+// typedef struct
+// {
+// const CH_CN *table;
+// uint16_t size;
+// uint16_t ASCII_Width;
+// uint16_t Width;
+// uint16_t Height;
-}cFONT;
+// }cFONT;
-extern sFONT Font24;
-extern sFONT Font20;
-extern sFONT Font16;
-extern sFONT Font12;
-extern sFONT Font8;
+// extern sFONT Font24;
+// extern sFONT Font20;
+// extern sFONT Font16;
+// extern sFONT Font12;
+// extern sFONT Font8;
-extern cFONT Font12CN;
-extern cFONT Font24CN;
+// extern cFONT Font12CN;
+// extern cFONT Font24CN;
#ifdef __cplusplus
}
#endif
diff --git a/libs/epaper/GUI/CMakeLists.txt b/libs/epaper/GUI/CMakeLists.txt
deleted file mode 100644
index 180c579..0000000
--- a/libs/epaper/GUI/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Find all source files in a single current directory
-# Save the name to DIR_GUI_SRCS
-aux_source_directory(. DIR_GUI_SRCS)
-
-include_directories(../Config)
-
-# Generate the link library
-add_library(GUI ${DIR_GUI_SRCS})
-target_link_libraries(GUI PUBLIC Config)
\ No newline at end of file
diff --git a/libs/epaper/GUI/GUI_Paint.c b/libs/epaper/GUI/GUI_Paint.c
deleted file mode 100644
index 6a14b49..0000000
--- a/libs/epaper/GUI/GUI_Paint.c
+++ /dev/null
@@ -1,779 +0,0 @@
-/******************************************************************************
-* | File : GUI_Paint.c
-* | Author : Waveshare electronics
-* | Function : Achieve drawing: draw points, lines, boxes, circles and
-* their size, solid dotted line, solid rectangle hollow
-* rectangle, solid circle hollow circle.
-* | Info :
-* Achieve display characters: Display a single character, string, number
-* Achieve time display: adaptive size display time minutes and seconds
-*----------------
-* | This version: V3.2
-* | Date : 2020-07-10
-* | Info :
-* -----------------------------------------------------------------------------
-* V3.2(2020-07-10):
-* 1.Change: Paint_SetScale(UBYTE scale)
-* Add scale 7 for 5.65f e-Parper
-* 2.Change: Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
-* Add the branch for scale 7
-* 3.Change: Paint_Clear(UWORD Color)
-* Add the branch for scale 7
-* -----------------------------------------------------------------------------
-* V3.1(2019-10-10):
-* 1. Add gray level
-* PAINT Add Scale
-* 2. Add void Paint_SetScale(UBYTE scale);
-* -----------------------------------------------------------------------------
-* V3.0(2019-04-18):
-* 1.Change:
-* Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
-* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
-* Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
-* Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
-* Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
-*
-* -----------------------------------------------------------------------------
-* V2.0(2018-11-15):
-* 1.add: Paint_NewImage()
-* Create an image's properties
-* 2.add: Paint_SelectImage()
-* Select the picture to be drawn
-* 3.add: Paint_SetRotate()
-* Set the direction of the cache
-* 4.add: Paint_RotateImage()
-* Can flip the picture, Support 0-360 degrees,
-* but only 90.180.270 rotation is better
-* 4.add: Paint_SetMirroring()
-* Can Mirroring the picture, horizontal, vertical, origin
-* 5.add: Paint_DrawString_CN()
-* Can display Chinese(GB1312)
-*
-* -----------------------------------------------------------------------------
-* V1.0(2018-07-17):
-* Create library
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documnetation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-* THE SOFTWARE.
-*
-******************************************************************************/
-#include "GUI_Paint.h"
-#include "DEV_Config.h"
-#include "Debug.h"
-#include
-#include
-#include //memset()
-#include
-
-PAINT Paint;
-
-/******************************************************************************
-function: Create Image
-parameter:
- image : Pointer to the image cache
- width : The width of the picture
- Height : The height of the picture
- Color : Whether the picture is inverted
-******************************************************************************/
-void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color)
-{
- Paint.Image = NULL;
- Paint.Image = image;
-
- Paint.WidthMemory = Width;
- Paint.HeightMemory = Height;
- Paint.Color = Color;
- Paint.Scale = 2;
- Paint.WidthByte = (Width % 8 == 0)? (Width / 8 ): (Width / 8 + 1);
- Paint.HeightByte = Height;
-// printf("WidthByte = %d, HeightByte = %d\r\n", Paint.WidthByte, Paint.HeightByte);
-// printf(" EPD_WIDTH / 8 = %d\r\n", 122 / 8);
-
- Paint.Rotate = Rotate;
- Paint.Mirror = MIRROR_NONE;
-
- if(Rotate == ROTATE_0 || Rotate == ROTATE_180) {
- Paint.Width = Width;
- Paint.Height = Height;
- } else {
- Paint.Width = Height;
- Paint.Height = Width;
- }
-}
-
-/******************************************************************************
-function: Select Image
-parameter:
- image : Pointer to the image cache
-******************************************************************************/
-void Paint_SelectImage(UBYTE *image)
-{
- Paint.Image = image;
-}
-
-/******************************************************************************
-function: Select Image Rotate
-parameter:
- Rotate : 0,90,180,270
-******************************************************************************/
-void Paint_SetRotate(UWORD Rotate)
-{
- if(Rotate == ROTATE_0 || Rotate == ROTATE_90 || Rotate == ROTATE_180 || Rotate == ROTATE_270) {
- Debug("Set image Rotate %d\r\n", Rotate);
- Paint.Rotate = Rotate;
- } else {
- Debug("rotate = 0, 90, 180, 270\r\n");
- }
-}
-
-/******************************************************************************
-function: Select Image mirror
-parameter:
- mirror :Not mirror,Horizontal mirror,Vertical mirror,Origin mirror
-******************************************************************************/
-void Paint_SetMirroring(UBYTE mirror)
-{
- if(mirror == MIRROR_NONE || mirror == MIRROR_HORIZONTAL ||
- mirror == MIRROR_VERTICAL || mirror == MIRROR_ORIGIN) {
- Debug("mirror image x:%s, y:%s\r\n",(mirror & 0x01)? "mirror":"none", ((mirror >> 1) & 0x01)? "mirror":"none");
- Paint.Mirror = mirror;
- } else {
- Debug("mirror should be MIRROR_NONE, MIRROR_HORIZONTAL, \
- MIRROR_VERTICAL or MIRROR_ORIGIN\r\n");
- }
-}
-
-void Paint_SetScale(UBYTE scale)
-{
- if(scale == 2){
- Paint.Scale = scale;
- Paint.WidthByte = (Paint.WidthMemory % 8 == 0)? (Paint.WidthMemory / 8 ): (Paint.WidthMemory / 8 + 1);
- }else if(scale == 4){
- Paint.Scale = scale;
- Paint.WidthByte = (Paint.WidthMemory % 4 == 0)? (Paint.WidthMemory / 4 ): (Paint.WidthMemory / 4 + 1);
- }else if(scale == 7){//Only applicable with 5in65 e-Paper
- Paint.Scale = scale;
- Paint.WidthByte = (Paint.WidthMemory % 2 == 0)? (Paint.WidthMemory / 2 ): (Paint.WidthMemory / 2 + 1);;
- }else{
- Debug("Set Scale Input parameter error\r\n");
- Debug("Scale Only support: 2 4 7\r\n");
- }
-}
-/******************************************************************************
-function: Draw Pixels
-parameter:
- Xpoint : At point X
- Ypoint : At point Y
- Color : Painted colors
-******************************************************************************/
-void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
-{
- if(Xpoint > Paint.Width || Ypoint > Paint.Height){
- Debug("Exceeding display boundaries\r\n");
- return;
- }
- UWORD X, Y;
- switch(Paint.Rotate) {
- case 0:
- X = Xpoint;
- Y = Ypoint;
- break;
- case 90:
- X = Paint.WidthMemory - Ypoint - 1;
- Y = Xpoint;
- break;
- case 180:
- X = Paint.WidthMemory - Xpoint - 1;
- Y = Paint.HeightMemory - Ypoint - 1;
- break;
- case 270:
- X = Ypoint;
- Y = Paint.HeightMemory - Xpoint - 1;
- break;
- default:
- return;
- }
-
- switch(Paint.Mirror) {
- case MIRROR_NONE:
- break;
- case MIRROR_HORIZONTAL:
- X = Paint.WidthMemory - X - 1;
- break;
- case MIRROR_VERTICAL:
- Y = Paint.HeightMemory - Y - 1;
- break;
- case MIRROR_ORIGIN:
- X = Paint.WidthMemory - X - 1;
- Y = Paint.HeightMemory - Y - 1;
- break;
- default:
- return;
- }
-
- if(X > Paint.WidthMemory || Y > Paint.HeightMemory){
- Debug("Exceeding display boundaries\r\n");
- return;
- }
-
- if(Paint.Scale == 2){
- UDOUBLE Addr = X / 8 + Y * Paint.WidthByte;
- UBYTE Rdata = Paint.Image[Addr];
- if(Color == BLACK)
- Paint.Image[Addr] = Rdata & ~(0x80 >> (X % 8));
- else
- Paint.Image[Addr] = Rdata | (0x80 >> (X % 8));
- }else if(Paint.Scale == 4){
- UDOUBLE Addr = X / 4 + Y * Paint.WidthByte;
- Color = Color % 4;//Guaranteed color scale is 4 --- 0~3
- UBYTE Rdata = Paint.Image[Addr];
-
- Rdata = Rdata & (~(0xC0 >> ((X % 4)*2)));//Clear first, then set value
- Paint.Image[Addr] = Rdata | ((Color << 6) >> ((X % 4)*2));
- }else if(Paint.Scale == 7){
- UDOUBLE Addr = X / 2 + Y * Paint.WidthByte;
- UBYTE Rdata = Paint.Image[Addr];
- Rdata = Rdata & (~(0xF0 >> ((X % 2)*4)));//Clear first, then set value
- Paint.Image[Addr] = Rdata | ((Color << 4) >> ((X % 2)*4));
- // printf("Add = %d ,data = %d\r\n",Addr,Rdata);
- }
-}
-
-/******************************************************************************
-function: Clear the color of the picture
-parameter:
- Color : Painted colors
-******************************************************************************/
-void Paint_Clear(UWORD Color)
-{
- if(Paint.Scale == 2 || Paint.Scale == 4){
- for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
- for (UWORD X = 0; X < Paint.WidthByte; X++ ) {//8 pixel = 1 byte
- UDOUBLE Addr = X + Y*Paint.WidthByte;
- Paint.Image[Addr] = Color;
- }
- }
- }else if(Paint.Scale == 7){
- for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
- for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
- UDOUBLE Addr = X + Y*Paint.WidthByte;
- Paint.Image[Addr] = (Color<<4)|Color;
- }
- }
- }
-
-}
-
-/******************************************************************************
-function: Clear the color of a window
-parameter:
- Xstart : x starting point
- Ystart : Y starting point
- Xend : x end point
- Yend : y end point
- Color : Painted colors
-******************************************************************************/
-void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color)
-{
- UWORD X, Y;
- for (Y = Ystart; Y < Yend; Y++) {
- for (X = Xstart; X < Xend; X++) {//8 pixel = 1 byte
- Paint_SetPixel(X, Y, Color);
- }
- }
-}
-
-/******************************************************************************
-function: Draw Point(Xpoint, Ypoint) Fill the color
-parameter:
- Xpoint : The Xpoint coordinate of the point
- Ypoint : The Ypoint coordinate of the point
- Color : Painted color
- Dot_Pixel : point size
- Dot_Style : point Style
-******************************************************************************/
-void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color,
- DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style)
-{
- if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
- Debug("Paint_DrawPoint Input exceeds the normal display range\r\n");
- return;
- }
-
- int16_t XDir_Num , YDir_Num;
- if (Dot_Style == DOT_FILL_AROUND) {
- for (XDir_Num = 0; XDir_Num < 2 * Dot_Pixel - 1; XDir_Num++) {
- for (YDir_Num = 0; YDir_Num < 2 * Dot_Pixel - 1; YDir_Num++) {
- if(Xpoint + XDir_Num - Dot_Pixel < 0 || Ypoint + YDir_Num - Dot_Pixel < 0)
- break;
- // printf("x = %d, y = %d\r\n", Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel);
- Paint_SetPixel(Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel, Color);
- }
- }
- } else {
- for (XDir_Num = 0; XDir_Num < Dot_Pixel; XDir_Num++) {
- for (YDir_Num = 0; YDir_Num < Dot_Pixel; YDir_Num++) {
- Paint_SetPixel(Xpoint + XDir_Num - 1, Ypoint + YDir_Num - 1, Color);
- }
- }
- }
-}
-
-/******************************************************************************
-function: Draw a line of arbitrary slope
-parameter:
- Xstart :Starting Xpoint point coordinates
- Ystart :Starting Xpoint point coordinates
- Xend :End point Xpoint coordinate
- Yend :End point Ypoint coordinate
- Color :The color of the line segment
- Line_width : Line width
- Line_Style: Solid and dotted lines
-******************************************************************************/
-void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
- UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style)
-{
- if (Xstart > Paint.Width || Ystart > Paint.Height ||
- Xend > Paint.Width || Yend > Paint.Height) {
- Debug("Paint_DrawLine Input exceeds the normal display range\r\n");
- return;
- }
-
- UWORD Xpoint = Xstart;
- UWORD Ypoint = Ystart;
- int dx = (int)Xend - (int)Xstart >= 0 ? Xend - Xstart : Xstart - Xend;
- int dy = (int)Yend - (int)Ystart <= 0 ? Yend - Ystart : Ystart - Yend;
-
- // Increment direction, 1 is positive, -1 is counter;
- int XAddway = Xstart < Xend ? 1 : -1;
- int YAddway = Ystart < Yend ? 1 : -1;
-
- //Cumulative error
- int Esp = dx + dy;
- char Dotted_Len = 0;
-
- for (;;) {
- Dotted_Len++;
- //Painted dotted line, 2 point is really virtual
- if (Line_Style == LINE_STYLE_DOTTED && Dotted_Len % 3 == 0) {
- //Debug("LINE_DOTTED\r\n");
- Paint_DrawPoint(Xpoint, Ypoint, IMAGE_BACKGROUND, Line_width, DOT_STYLE_DFT);
- Dotted_Len = 0;
- } else {
- Paint_DrawPoint(Xpoint, Ypoint, Color, Line_width, DOT_STYLE_DFT);
- }
- if (2 * Esp >= dy) {
- if (Xpoint == Xend)
- break;
- Esp += dy;
- Xpoint += XAddway;
- }
- if (2 * Esp <= dx) {
- if (Ypoint == Yend)
- break;
- Esp += dx;
- Ypoint += YAddway;
- }
- }
-}
-
-/******************************************************************************
-function: Draw a rectangle
-parameter:
- Xstart :Rectangular Starting Xpoint point coordinates
- Ystart :Rectangular Starting Xpoint point coordinates
- Xend :Rectangular End point Xpoint coordinate
- Yend :Rectangular End point Ypoint coordinate
- Color :The color of the Rectangular segment
- Line_width: Line width
- Draw_Fill : Whether to fill the inside of the rectangle
-******************************************************************************/
-void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
- UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
-{
- if (Xstart > Paint.Width || Ystart > Paint.Height ||
- Xend > Paint.Width || Yend > Paint.Height) {
- Debug("Input exceeds the normal display range\r\n");
- return;
- }
-
- if (Draw_Fill) {
- UWORD Ypoint;
- for(Ypoint = Ystart; Ypoint < Yend; Ypoint++) {
- Paint_DrawLine(Xstart, Ypoint, Xend, Ypoint, Color , Line_width, LINE_STYLE_SOLID);
- }
- } else {
- Paint_DrawLine(Xstart, Ystart, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
- Paint_DrawLine(Xstart, Ystart, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
- Paint_DrawLine(Xend, Yend, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
- Paint_DrawLine(Xend, Yend, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
- }
-}
-
-/******************************************************************************
-function: Use the 8-point method to draw a circle of the
- specified size at the specified position->
-parameter:
- X_Center :Center X coordinate
- Y_Center :Center Y coordinate
- Radius :circle Radius
- Color :The color of the :circle segment
- Line_width: Line width
- Draw_Fill : Whether to fill the inside of the Circle
-******************************************************************************/
-void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius,
- UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
-{
- if (X_Center > Paint.Width || Y_Center >= Paint.Height) {
- Debug("Paint_DrawCircle Input exceeds the normal display range\r\n");
- return;
- }
-
- //Draw a circle from(0, R) as a starting point
- int16_t XCurrent, YCurrent;
- XCurrent = 0;
- YCurrent = Radius;
-
- //Cumulative error,judge the next point of the logo
- int16_t Esp = 3 - (Radius << 1 );
-
- int16_t sCountY;
- if (Draw_Fill == DRAW_FILL_FULL) {
- while (XCurrent <= YCurrent ) { //Realistic circles
- for (sCountY = XCurrent; sCountY <= YCurrent; sCountY ++ ) {
- Paint_DrawPoint(X_Center + XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//1
- Paint_DrawPoint(X_Center - XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//2
- Paint_DrawPoint(X_Center - sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//3
- Paint_DrawPoint(X_Center - sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//4
- Paint_DrawPoint(X_Center - XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//5
- Paint_DrawPoint(X_Center + XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//6
- Paint_DrawPoint(X_Center + sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//7
- Paint_DrawPoint(X_Center + sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- if (Esp < 0 )
- Esp += 4 * XCurrent + 6;
- else {
- Esp += 10 + 4 * (XCurrent - YCurrent );
- YCurrent --;
- }
- XCurrent ++;
- }
- } else { //Draw a hollow circle
- while (XCurrent <= YCurrent ) {
- Paint_DrawPoint(X_Center + XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//1
- Paint_DrawPoint(X_Center - XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//2
- Paint_DrawPoint(X_Center - YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//3
- Paint_DrawPoint(X_Center - YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//4
- Paint_DrawPoint(X_Center - XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//5
- Paint_DrawPoint(X_Center + XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//6
- Paint_DrawPoint(X_Center + YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//7
- Paint_DrawPoint(X_Center + YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//0
-
- if (Esp < 0 )
- Esp += 4 * XCurrent + 6;
- else {
- Esp += 10 + 4 * (XCurrent - YCurrent );
- YCurrent --;
- }
- XCurrent ++;
- }
- }
-}
-
-/******************************************************************************
-function: Show English characters
-parameter:
- Xpoint :X coordinate
- Ypoint :Y coordinate
- Acsii_Char :To display the English characters
- Font :A structure pointer that displays a character size
- Color_Foreground : Select the foreground color
- Color_Background : Select the background color
-******************************************************************************/
-void Paint_DrawChar(UWORD Xpoint, UWORD Ypoint, const char Acsii_Char,
- sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
-{
- UWORD Page, Column;
-
- if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
- Debug("Paint_DrawChar Input exceeds the normal display range\r\n");
- return;
- }
-
- uint32_t Char_Offset = (Acsii_Char - ' ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));
- const unsigned char *ptr = &Font->table[Char_Offset];
-
- for (Page = 0; Page < Font->Height; Page ++ ) {
- for (Column = 0; Column < Font->Width; Column ++ ) {
-
- //To determine whether the font background color and screen background color is consistent
- if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
- if (*ptr & (0x80 >> (Column % 8)))
- Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
- // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- } else {
- if (*ptr & (0x80 >> (Column % 8))) {
- Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
- // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- } else {
- Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Background);
- // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- }
- //One pixel is 8 bits
- if (Column % 8 == 7)
- ptr++;
- }// Write a line
- if (Font->Width % 8 != 0)
- ptr++;
- }// Write all
-}
-
-/******************************************************************************
-function: Display the string
-parameter:
- Xstart :X coordinate
- Ystart :Y coordinate
- pString :The first address of the English string to be displayed
- Font :A structure pointer that displays a character size
- Color_Foreground : Select the foreground color
- Color_Background : Select the background color
-******************************************************************************/
-void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString,
- sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
-{
- UWORD Xpoint = Xstart;
- UWORD Ypoint = Ystart;
-
- if (Xstart > Paint.Width || Ystart > Paint.Height) {
- Debug("Paint_DrawString_EN Input exceeds the normal display range\r\n");
- return;
- }
-
- while (* pString != '\0') {
- //if X direction filled , reposition to(Xstart,Ypoint),Ypoint is Y direction plus the Height of the character
- if ((Xpoint + Font->Width ) > Paint.Width ) {
- Xpoint = Xstart;
- Ypoint += Font->Height;
- }
-
- // If the Y direction is full, reposition to(Xstart, Ystart)
- if ((Ypoint + Font->Height ) > Paint.Height ) {
- Xpoint = Xstart;
- Ypoint = Ystart;
- }
- Paint_DrawChar(Xpoint, Ypoint, * pString, Font, Color_Background, Color_Foreground);
-
- //The next character of the address
- pString ++;
-
- //The next word of the abscissa increases the font of the broadband
- Xpoint += Font->Width;
- }
-}
-
-
-/******************************************************************************
-function: Display the string
-parameter:
- Xstart :X coordinate
- Ystart :Y coordinate
- pString :The first address of the Chinese string and English
- string to be displayed
- Font :A structure pointer that displays a character size
- Color_Foreground : Select the foreground color
- Color_Background : Select the background color
-******************************************************************************/
-void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font,
- UWORD Color_Foreground, UWORD Color_Background)
-{
- const char* p_text = pString;
- int x = Xstart, y = Ystart;
- int i, j,Num;
-
- /* Send the string character by character on EPD */
- while (*p_text != 0) {
- if(*p_text <= 0x7F) { //ASCII < 126
- for(Num = 0; Num < font->size; Num++) {
- if(*p_text== font->table[Num].index[0]) {
- const char* ptr = &font->table[Num].matrix[0];
-
- for (j = 0; j < font->Height; j++) {
- for (i = 0; i < font->Width; i++) {
- if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
- if (*ptr & (0x80 >> (i % 8))) {
- Paint_SetPixel(x + i, y + j, Color_Foreground);
- // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- } else {
- if (*ptr & (0x80 >> (i % 8))) {
- Paint_SetPixel(x + i, y + j, Color_Foreground);
- // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- } else {
- Paint_SetPixel(x + i, y + j, Color_Background);
- // Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- }
- if (i % 8 == 7) {
- ptr++;
- }
- }
- if (font->Width % 8 != 0) {
- ptr++;
- }
- }
- break;
- }
- }
- /* Point on the next character */
- p_text += 1;
- /* Decrement the column position by 16 */
- x += font->ASCII_Width;
- } else { //Chinese
- for(Num = 0; Num < font->size; Num++) {
- if((*p_text== font->table[Num].index[0]) && (*(p_text+1) == font->table[Num].index[1])) {
- const char* ptr = &font->table[Num].matrix[0];
-
- for (j = 0; j < font->Height; j++) {
- for (i = 0; i < font->Width; i++) {
- if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
- if (*ptr & (0x80 >> (i % 8))) {
- Paint_SetPixel(x + i, y + j, Color_Foreground);
- // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- } else {
- if (*ptr & (0x80 >> (i % 8))) {
- Paint_SetPixel(x + i, y + j, Color_Foreground);
- // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- } else {
- Paint_SetPixel(x + i, y + j, Color_Background);
- // Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
- }
- }
- if (i % 8 == 7) {
- ptr++;
- }
- }
- if (font->Width % 8 != 0) {
- ptr++;
- }
- }
- break;
- }
- }
- /* Point on the next character */
- p_text += 2;
- /* Decrement the column position by 16 */
- x += font->Width;
- }
- }
-}
-
-/******************************************************************************
-function: Display nummber
-parameter:
- Xstart :X coordinate
- Ystart : Y coordinate
- Nummber : The number displayed
- Font :A structure pointer that displays a character size
- Color_Foreground : Select the foreground color
- Color_Background : Select the background color
-******************************************************************************/
-#define ARRAY_LEN 255
-void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber,
- sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
-{
-
- int16_t Num_Bit = 0, Str_Bit = 0;
- uint8_t Str_Array[ARRAY_LEN] = {0}, Num_Array[ARRAY_LEN] = {0};
- uint8_t *pStr = Str_Array;
-
- if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
- Debug("Paint_DisNum Input exceeds the normal display range\r\n");
- return;
- }
-
- //Converts a number to a string
- while (Nummber) {
- Num_Array[Num_Bit] = Nummber % 10 + '0';
- Num_Bit++;
- Nummber /= 10;
- }
-
- //The string is inverted
- while (Num_Bit > 0) {
- Str_Array[Str_Bit] = Num_Array[Num_Bit - 1];
- Str_Bit ++;
- Num_Bit --;
- }
-
- //show
- Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Background, Color_Foreground);
-}
-
-/******************************************************************************
-function: Display time
-parameter:
- Xstart :X coordinate
- Ystart : Y coordinate
- pTime : Time-related structures
- Font :A structure pointer that displays a character size
- Color_Foreground : Select the foreground color
- Color_Background : Select the background color
-******************************************************************************/
-void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font,
- UWORD Color_Foreground, UWORD Color_Background)
-{
- uint8_t value[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
-
- UWORD Dx = Font->Width;
-
- //Write data into the cache
- Paint_DrawChar(Xstart , Ystart, value[pTime->Hour / 10], Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx , Ystart, value[pTime->Hour % 10], Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx + Dx / 4 + Dx / 2 , Ystart, ':' , Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx * 2 + Dx / 2 , Ystart, value[pTime->Min / 10] , Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx * 3 + Dx / 2 , Ystart, value[pTime->Min % 10] , Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx * 4 + Dx / 2 - Dx / 4, Ystart, ':' , Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx * 5 , Ystart, value[pTime->Sec / 10] , Font, Color_Background, Color_Foreground);
- Paint_DrawChar(Xstart + Dx * 6 , Ystart, value[pTime->Sec % 10] , Font, Color_Background, Color_Foreground);
-}
-
-/******************************************************************************
-function: Display monochrome bitmap
-parameter:
- image_buffer :A picture data converted to a bitmap
-info:
- Use a computer to convert the image into a corresponding array,
- and then embed the array directly into Imagedata.cpp as a .c file.
-******************************************************************************/
-void Paint_DrawBitMap(const unsigned char* image_buffer)
-{
- UWORD x, y;
- UDOUBLE Addr = 0;
-
- for (y = 0; y < Paint.HeightByte; y++) {
- for (x = 0; x < Paint.WidthByte; x++) {//8 pixel = 1 byte
- Addr = x + y * Paint.WidthByte;
- Paint.Image[Addr] = (unsigned char)image_buffer[Addr];
- }
- }
-}
diff --git a/libs/epaper/GUI/GUI_Paint.h b/libs/epaper/GUI/GUI_Paint.h
deleted file mode 100644
index 59a2f87..0000000
--- a/libs/epaper/GUI/GUI_Paint.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/******************************************************************************
-* | File : GUI_Paint.h
-* | Author : Waveshare electronics
-* | Function : Achieve drawing: draw points, lines, boxes, circles and
-* their size, solid dotted line, solid rectangle hollow
-* rectangle, solid circle hollow circle.
-* | Info :
-* Achieve display characters: Display a single character, string, number
-* Achieve time display: adaptive size display time minutes and seconds
-*----------------
-* | This version: V3.1
-* | Date : 2019-10-10
-* | Info :
-* -----------------------------------------------------------------------------
-* V3.1(2019-10-10):
-* 1. Add gray level
-* PAINT Add Scale
-* 2. Add void Paint_SetScale(UBYTE scale);
-*
-* V3.0(2019-04-18):
-* 1.Change:
-* Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
-* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
-* Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
-* Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
-* Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
-* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
-*
-* -----------------------------------------------------------------------------
-* V2.0(2018-11-15):
-* 1.add: Paint_NewImage()
-* Create an image's properties
-* 2.add: Paint_SelectImage()
-* Select the picture to be drawn
-* 3.add: Paint_SetRotate()
-* Set the direction of the cache
-* 4.add: Paint_RotateImage()
-* Can flip the picture, Support 0-360 degrees,
-* but only 90.180.270 rotation is better
-* 4.add: Paint_SetMirroring()
-* Can Mirroring the picture, horizontal, vertical, origin
-* 5.add: Paint_DrawString_CN()
-* Can display Chinese(GB1312)
-*
-* -----------------------------------------------------------------------------
-* V1.0(2018-07-17):
-* Create library
-*
-* Permission is hereby granted, free of charge, to any person obtaining a copy
-* of this software and associated documnetation files (the "Software"), to deal
-* in the Software without restriction, including without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-* copies of the Software, and to permit persons to whom the Software is
-* furished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included in
-* all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-* THE SOFTWARE.
-*
-******************************************************************************/
-#ifndef __GUI_PAINT_H
-#define __GUI_PAINT_H
-
-#include "DEV_Config.h"
-#include "../Fonts/fonts.h"
-
-/**
- * Image attributes
-**/
-typedef struct {
- UBYTE *Image;
- UWORD Width;
- UWORD Height;
- UWORD WidthMemory;
- UWORD HeightMemory;
- UWORD Color;
- UWORD Rotate;
- UWORD Mirror;
- UWORD WidthByte;
- UWORD HeightByte;
- UWORD Scale;
-} PAINT;
-extern PAINT Paint;
-
-/**
- * Display rotate
-**/
-#define ROTATE_0 0
-#define ROTATE_90 90
-#define ROTATE_180 180
-#define ROTATE_270 270
-
-/**
- * Display Flip
-**/
-typedef enum {
- MIRROR_NONE = 0x00,
- MIRROR_HORIZONTAL = 0x01,
- MIRROR_VERTICAL = 0x02,
- MIRROR_ORIGIN = 0x03,
-} MIRROR_IMAGE;
-#define MIRROR_IMAGE_DFT MIRROR_NONE
-
-/**
- * image color
-**/
-#define WHITE 0xFF
-#define BLACK 0x00
-#define RED BLACK
-
-#define IMAGE_BACKGROUND WHITE
-#define FONT_FOREGROUND BLACK
-#define FONT_BACKGROUND WHITE
-
-//4 Gray level
-#define GRAY1 0x03 //Blackest
-#define GRAY2 0x02
-#define GRAY3 0x01 //gray
-#define GRAY4 0x00 //white
-/**
- * The size of the point
-**/
-typedef enum {
- DOT_PIXEL_1X1 = 1, // 1 x 1
- DOT_PIXEL_2X2 , // 2 X 2
- DOT_PIXEL_3X3 , // 3 X 3
- DOT_PIXEL_4X4 , // 4 X 4
- DOT_PIXEL_5X5 , // 5 X 5
- DOT_PIXEL_6X6 , // 6 X 6
- DOT_PIXEL_7X7 , // 7 X 7
- DOT_PIXEL_8X8 , // 8 X 8
-} DOT_PIXEL;
-#define DOT_PIXEL_DFT DOT_PIXEL_1X1 //Default dot pilex
-
-/**
- * Point size fill style
-**/
-typedef enum {
- DOT_FILL_AROUND = 1, // dot pixel 1 x 1
- DOT_FILL_RIGHTUP , // dot pixel 2 X 2
-} DOT_STYLE;
-#define DOT_STYLE_DFT DOT_FILL_AROUND //Default dot pilex
-
-/**
- * Line style, solid or dashed
-**/
-typedef enum {
- LINE_STYLE_SOLID = 0,
- LINE_STYLE_DOTTED,
-} LINE_STYLE;
-
-/**
- * Whether the graphic is filled
-**/
-typedef enum {
- DRAW_FILL_EMPTY = 0,
- DRAW_FILL_FULL,
-} DRAW_FILL;
-
-/**
- * Custom structure of a time attribute
-**/
-typedef struct {
- UWORD Year; //0000
- UBYTE Month; //1 - 12
- UBYTE Day; //1 - 30
- UBYTE Hour; //0 - 23
- UBYTE Min; //0 - 59
- UBYTE Sec; //0 - 59
-} PAINT_TIME;
-extern PAINT_TIME sPaint_time;
-
-//init and Clear
-void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color);
-void Paint_SelectImage(UBYTE *image);
-void Paint_SetRotate(UWORD Rotate);
-void Paint_SetMirroring(UBYTE mirror);
-void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color);
-void Paint_SetScale(UBYTE scale);
-
-void Paint_Clear(UWORD Color);
-void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color);
-
-//Drawing
-void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay);
-void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style);
-void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
-void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
-
-//Display string
-void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
-void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
-void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background);
-void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
-void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
-
-//pic
-void Paint_DrawBitMap(const unsigned char* image_buffer);
-
-
-#endif
-
-
-
-
-
diff --git a/libs/mare/charmap.h b/libs/mare/charmap.h
new file mode 100644
index 0000000..1823b19
--- /dev/null
+++ b/libs/mare/charmap.h
@@ -0,0 +1,2 @@
+#include
+#include
diff --git a/libs/mare/mare.h b/libs/mare/mare.h
index 2351303..7aa08b2 100644
--- a/libs/mare/mare.h
+++ b/libs/mare/mare.h
@@ -18,12 +18,15 @@ extern "C" {
#include
#include
#include
+#include
namespace Render{
typedef int32_t p_t;
struct pos_t {
+ friend bool operator==(const pos_t a, const pos_t b){ return a.x==b.x && a.y==b.y;};
+ friend bool operator!=(const pos_t a, const pos_t b){ return a.x!=b.x || a.y!=b.y;};
p_t x;
p_t y;
};
@@ -50,11 +53,24 @@ namespace Render{
Black
};
+ enum class Font {
+ Font8,
+ Font12,
+ Font16,
+ Font20,
+ Font24
+ };
+
+ typedef ScreenRotation TextRotation;
+
class Page;
class Drawable;
class DrawablePoint;
class DrawableLine;
class DrawableRectangle;
+ class DrawableCircle;
+ class DrawableString;
+ class DrawableCustom;
typedef pos_t dim_t;
typedef std::vector> Pages;
@@ -244,45 +260,68 @@ namespace Render{
};
class DrawableCircle: public Drawable {
-
- DrawableCircle();
- ~DrawableCircle();
+ public:
+ DrawableCircle(const size_t id, Drawable* parent, Mare* engine);
+ ~DrawableCircle();
public:
+ void setThickness(uint16_t thickness) { _thickness = thickness; };
+ const uint16_t getThickness() {return _thickness; };
+ void setRadius(uint16_t radius) { _radius = radius; };
+ const uint16_t getRadius() { return _radius; };
+ void setOutline(bool outline) { _outline = outline; };
+ const getOutline() { return _outline; };
private:
- void render() {};
+ void render();
// members
private:
+ uint16_t _thickness;
+ uint16_t _radius;
+ bool _outline;
};
class DrawableChar: public Drawable {
-
- DrawableChar();
- ~DrawableChar();
+ friend class DrawableString;
+ public:
+ DrawableChar(const size_t id, Drawable* parent, Mare* engine, char c, Font f);
+ ~DrawableChar();
public:
private:
- void render() {};
+ void render();
// members
private:
+ Font _fontEnum;
+ _tFont _font;
+ char _char;
};
class DrawableString: public Drawable {
-
- DrawableString();
- ~DrawableString();
+ public:
+ DrawableString(const size_t id, Drawable* parent, Mare* engine, std::string &s, Font f);
+ ~DrawableString();
public:
-
+ void setString(std::string& s) { _s = s; };
+ const std::string& getString() { return &s; };
+ void setFont(Font f) { _fontEnum = f; };
+ const Font getFont() { return _fontEnum; };
+ void setRotation(TextRotation rotation) { _rotation = rotation; };
+ const TextRotation getRotation() { return _rotation; };
+
private:
- void render() {};
+ void render();
// members
private:
+ Font _fontEnum;
+ TextRotation _rotation;
+ std::string _s;
+ std::vector _chars;
};
class DrawableCustom: public Drawable {
diff --git a/libs/mare/mare_drawables.cpp b/libs/mare/mare_drawables.cpp
index 79ab2d5..a756597 100644
--- a/libs/mare/mare_drawables.cpp
+++ b/libs/mare/mare_drawables.cpp
@@ -1,4 +1,5 @@
#include "mare.h"
+#include "charmap.h"
namespace Render {
@@ -76,11 +77,11 @@ namespace Render {
for (uint16_t t(0); t < _thickness; ++t) {
for (uint16_t xx(0); xx < _length; ++xx) {
if (_rotation == 0 || _rotation == 180){
- res.x = _rotation == 0 ? xx : (_length-xx);
- res.y = t-(_thickness>>1);
+ res.x = _rotation == 0 ? xx : -xx;
+ res.y = t-_ofst;
} else if (_rotation == 90 || _rotation == 270){
- res.x = t-(_thickness>>1);
- res.y = _rotation == 90 ? xx : _length-xx;
+ res.x = t-_ofst;
+ res.y = _rotation == 90 ? xx : -xx;
} else {
res = e->rotateXY(xx,t-_ofst,_rotation/180.0f*M_PI);
}
@@ -172,11 +173,143 @@ namespace Render {
//--------+--------+--------+--------+--------+--------+--------+--------+--------+--------//
//Circle
+ DrawableCircle::DrawableCircle(const size_t id, Drawable* parent, Mare* engine):
+ Drawable(id, parent,engine),
+ _thickness(1),
+ _radius(8),
+ _outline(false)
+ {
+
+ }
+
+ DrawableCircle::~DrawableCircle ()
+ {
+
+ }
+
+ void DrawableCircle::render()
+ {
+ auto e = engine();
+ uint8_t* buf = getBuffer();
+ auto tt = _thickness;
+ auto bm = getBlendMode();
+ const pos_t o = getOrigin();
+ const uint8_t t2 = _thickness >> 1;
+ const pos_t oo = {o.x-t2, o.y-t2};
+
+ auto dot = [buf, tt, e, bm] (p_t x, p_t y) {
+ for (uint16_t xx(0); xx < tt; ++xx) {
+ for (uint16_t yy(0); yy < tt; ++yy) {
+ e->setPixel(buf, xx+x, yy+y, bm);
+ }
+ }
+ };
+ auto pix = [buf,e,bm](p_t x, p_t y) {
+ e->setPixel(buf, x, y, bm);
+ };
+
+ if (isDirty()){
+ if (_outline){
+ const float st = M_PI_2/45;
+ pos_t pres;
+ for (float t(0); t <= M_TWOPI; t+=st){
+ auto res = e->rotateXY(_radius,0,t);
+ if (res != pres) {
+ dot(oo.x+res.x, oo.y+res.y);
+ dot(oo.x-res.x, oo.y+res.y);
+ dot(oo.x-res.x, oo.y+res.y);
+ dot(oo.x-res.x, oo.y-res.y);
+ pres=res;
+ }
+ }
+ }
+ resetDirty();
+ }
+
+ }
+
//--------+--------+--------+--------+--------+--------+--------+--------+--------+--------//
//Character
+ extern const _tFont* Font8;
+ extern const _tFont* Font12;
+ extern const _tFont* Font16;
+ extern const _tFont* Font20;
+ extern const _tFont* Font24;
+
+
+ DrawableChar::DrawableChar(const size_t id, Drawable* parent, Mare* engine, char c, Font f) :
+ Drawable(id, parent,engine),
+ _fontEnum(f),
+ _char(c)
+ {
+ switch (_fontEnum)
+ {
+ case Font::Font8:
+ _font = *Font8;
+ break;
+
+ case Font::Font12:
+ _font = *Font12;
+ break;
+
+ case Font::Font16:
+ _font = *Font16;
+ break;
+
+ case Font::Font20:
+ _font = *Font20;
+ break;
+
+ case Font::Font24:
+ _font = *Font24;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ DrawableChar::~DrawableChar() {
+
+ }
+
+ void DrawableChar::render() {
+
+ }
+
//--------+--------+--------+--------+--------+--------+--------+--------+--------+--------//
//String
+
+ DrawableString::DrawableString(const size_t id, Drawable* parent, Mare* engine, std::string &s, Font f) :
+ Drawable(id, parent,engine),
+ _fontEnum(f),
+ _s(s)
+ {
+ _chars.reserve(s.size());
+ uint16_t idx(0);
+ for(auto c : _s){
+ _chars.push_back(engine->addDrawable(c.c_str(),_fontEnum));
+ }
+
+ }
+
+ DrawableString::~DrawableString()
+ {
+ //free heap of drawable characters
+ for (auto c : _chars) {
+ delete c;
+ }
+ _chars.clear();
+ }
+
+ void DrawableString::render() {
+ for (auto c : _chars){
+ if (c != nullptr){
+ c->render();
+ }
+ }
+ }
//--------+--------+--------+--------+--------+--------+--------+--------+--------+--------//
//Custom
diff --git a/src/main.cpp b/src/main.cpp
index 8bc1058..6455131 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -21,6 +21,7 @@ int main(){
auto c2 = viewer.addDrawable();
auto line3 = viewer.addDrawable();
auto rect = viewer.addDrawable();
+ auto circle = viewer.addDrawable();
c1->setOrigin({0,63});
c1->setLength(296);
@@ -42,6 +43,11 @@ int main(){
rect->setOutline(true);
rect->setThickness(6);
+ circle->setRadius(32);
+ circle->setOrigin(viewer.getCenter());
+ circle->setOutline(true);
+ circle->setThickness(3);
+
while (true){
line3->setThickness(2);
for (uint16_t a(0); a<=360; a+=360/36){
@@ -51,6 +57,7 @@ int main(){
c1->setDirty();
c2->setDirty();
rect->setDirty();
+ circle->setDirty();
viewer.render();
}
viewer.clearScreen();