awtk/docs/how_to_support_mono_lcd.md

76 lines
1.8 KiB
Markdown
Raw Normal View History

2019-08-15 09:06:35 +08:00
# 支持单色 LCD
## lcd_mono 实现
src/lcd/lcd_mono.c 提供单色 LCD 的 framebuffer每个像素占用一个比特实现了 LCD 的基本绘制函数,在使用时调用者需要提供 flush 函数,负责把脏矩形内的像素提交到 LCD 硬件。
## 模拟器
在 awtk_config.py 中可以打开单色 LCD 的配置。
```
LCD='SDL_FB_MONO'
```
## 单色字体生成
字体生成工具 fontgen 支持生成单色字体,加上可选参数 mono 即可。
```
fontgen.exe ttf_filename str_filename out_filename font_size [mono]
```
## 单色图片生成
图片生成工具 imagegen 支持生成单色图片,加上可选参数 mono 即可。
```
imagegen.exe in_filename out_filename (bgra|bgr565|mono)
```
> 由于单色图片只有两种颜色,所以在设计图片上只能使用白色 (#ffffff) 和黑色 (#000000),否则转换出来的效果不是期望的。
2021-05-11 15:50:24 +08:00
## 窗体样式配置
2019-08-15 09:06:35 +08:00
2021-05-11 15:50:24 +08:00
窗体样式中只能使用白色 (#ffffff) 和黑色 (#000000) 两种颜色。
2019-08-15 09:06:35 +08:00
## 资源生成
生成资源时需要加上 mono 参数,该参数会被传递给 fontgen 和 imagegen。
```
2019-08-15 09:14:26 +08:00
python scripts/update_res.py all x1 mono
2019-08-15 09:25:21 +08:00
```
2019-08-15 09:06:35 +08:00
## 应用程序
应用程序 UI 设计请考虑单色 LCD 的特殊性。
> demoui 没有考虑单色 LCD在单色 LCD 上运行效果不佳。
2019-11-08 08:07:44 +08:00
2021-07-12 07:49:04 +08:00
## 预览 mono test 查看运行效果
2019-11-08 08:07:44 +08:00
```
2023-10-26 16:31:21 +08:00
./bin/preview_ui ui=design/default/ui/mono_test.xml
2019-11-08 08:07:44 +08:00
```
2021-08-03 21:31:24 +08:00
## 其它
* 嵌入式系统,请在 awtk\_config.h 中定义下面的宏。
```
#define WITH_LCD_MONO 1
```
* awtk-linux-fb请在 awtk\_config.py 中定义下面的宏。
```
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_LCD_MONO=1 '
```
2021-03-16 11:11:36 +08:00
## 参考:
* [免费像素字体](https://www.uisdc.com/25-pixel-fonts)
2021-07-12 07:49:04 +08:00
* [Unifont 点阵黑:一款超大字符集免费商用像素字体](https://www.maoken.com/freefonts/3747.html)