update docs

This commit is contained in:
xianjimli 2018-09-24 10:50:58 +08:00
parent 88f9081306
commit ea6491b253
6 changed files with 173 additions and 59 deletions

View File

@ -163,6 +163,12 @@ bin\demoui
## 最新动态
* 2018/09/24
* 更新文档。
* 2018/09/23
* 更新各个项目的工程。
* 2018/09/21-22
* 移植awtk到stm32f767开发板。

28
TODO.md
View File

@ -22,7 +22,6 @@
* 基本layout功能
* 极速模式
* Qt界面文件转换器
* 微软Rc界面文件转换器
* stm32 移植
* draw 9patch image
* draw 3patch\_h image
@ -48,33 +47,50 @@
* listbox
* spinbox
* tab
* row
* app\_bar
* col
* jerryscript binging
* lua binging
* 支持tween动画
* guage
* 时钟控件
* color picker
* 移植到嵌入式linux
* 移植到STM32F103
* 移植到STM32F429
* 移植到STM32F767
* nanovg基于agge用纯软件实现的矢量图库。
## 短期计划(顺序不定)
* API doc到PDF转换工具
* text select
* switch
* text editor
* port code editor
* menu
* chart
* guage
* property sheet
* file browser
* calendar
* drag & drop
* tableview
* python binging
* rtthread移植
* sylixos移植
* djyos移植
* 嵌入式linux移植
* remote client
* 音频接口。
* 键盘导航
* API doc到PDF转换工具
## 长期计划
* ios移植
* android移植
* 支持vue.js
* 用AWTK实现界面编辑器
* 支持粒子产生器
* 支持骨骼动画
* flash播放器支持
* ios移植
* android移植
* 在浏览器中运行
* 微信小程序类似的开发方法

View File

@ -1,80 +1,166 @@
## 嵌入式平台移植注意事项
### 一、几个常用的宏
### 一、配置的宏
* 1.WITH\_BITMAP\_FONT 如果需要使用位图字体请定义该宏。
```
/**
* 嵌入式系统有自己的main函数时请定义本宏。
*
* #define USE_GUI_MAIN 1
*/
* 2.WITH\_STB\_FONT 如果需要使用truetype字体请定义该宏(请确保stack不小于16KB)。一般WITH\_STB\_FONT和WITH\_BITMAP\_FONT任选一个。
/**
* 如果需要支持预先解码的图片请定义本宏。一般只在RAM极小时才启用本宏。
* #define WITH_BITMAP_FONT 1
*/
* 3.WITH\_STB\_IMAGE 如果需要使用png/jpg图片请定义该宏(请确保stack不小于16KB)。由于解码图片需要较大内存,所以在内存较
少的情况下我们直接把png/jpg转换成位图数据当作常量编译到代码中此时不需要定义该宏。
/**
* 如果支持png/jpeg图片请定义本宏
*
* #define WITH_STB_IMAGE 1
*/
* 4.WITH\_FS\_RES 如果支持从文件系统中加载资源请定义该宏。需要有兼容POSIX标准的FS接口如果没有则需要自己实现src/base/fs.c中的函数。
/**
* 如果支持Truetype字体请定义本宏
*
* #define WITH_STB_FONT 1
*/
* 5.USE\_GUI\_MAIN 嵌入式系统有自己的main函数时请定义该宏。
/**
* 如果支持从文件系统加载资源,请定义本宏
*
* #define WITH_FS_RES 1
*/
* 6.WITH\_WCSXXX 如果出现wcsxxx之类的函数没有定义时请定义该宏。
/**
* 如果定义本宏使用标准的UNICODE换行算法除非资源极为有限请定义本宏。
*
* #define WITH_UNICODE_BREAK 1
*/
/**
* 如果定义本宏将图片解码成BGRA8888格式否则解码成RGBA8888的格式。
*
* #define WITH_BITMAP_BGRA 1
*/
* 7.HAS\_FAST\_MEMCPY 如果有高效的memcpy函数请定义该宏。
/**
* 如果定义本宏将不透明的PNG图片解码成RGB565格式建议定义。
*
* #define WITH_BITMAP_RGB565 1
*/
* 8.WITH\_BITMAP\_RGB565 如果支持rgb565格式请定义该宏。除了使用nanovg渲染一般情况都可以定义该宏。
/**
* 如果不需输入法,请定义本宏
*
* #define WITH_NULL_IM 1
*/
* 9.WITH\_BITMAP\_BGRA 缺省图片加载之后的格式为RGBA但有的硬件加速需要使用BGRA格式(如stm32 dma2d),此时需要定义该宏。
/**
* 如果支持极速模式请定义本宏。极速模式不支持控件透明半透明效果只有在CPU配置极低时启用。
*
* #define USE_FAST_MODE 1
*/
* 10.WITH\_LOW\_RES 资源有限时请定义该宏。
/**
* 如果FLASH空间较小不足以放大字体文件时请定义本宏
*
* #define WITH_MINI_FONT 1
*/
* 11.WITH\_DYNAMIC\_TR 如果需要动态翻译字符串时请定义该宏。
/**
* 如果有标准的malloc/free/calloc等函数请定义本宏
*
* #define HAS_STD_MALLOC 1
*/
系统内存小余8M时推荐定义WITH\_BITMAP\_FONT,USE\_GUI\_MAIN,HAS\_FAST\_MEMCPY,WITH\_BITMAP\_RGB565,WITH\_LOW\_RES
系统内存超过8M时推荐定义WITH\_STB\_FONT,WITH\_STB\_IMAGE,USE\_GUI\_MAIN,HAS\_FAST\_MEMCPY,WITH\_BITMAP\_RGB565,WITH\_DYNAMIC\_TR
/**
* 如果有优化版本的memcpy函数请定义本宏
*
* #define HAS_FAST_MEMCPY 1
*/
/**
* 如果出现wcsxxx之类的函数没有定义时请定义该宏
*
* #define WITH_WCSXXX 1
*/
/**
* 如果启用STM32 G2D硬件加速请定义本宏
*
* #define WITH_STM32_G2D 1
*/
/**
* 如果启用NXP PXP硬件加速请定义本宏
*
* #define WITH_PXP_G2D 1
*/
/**
* 如果启用VGCANVAS而且没有OpenGL硬件加速请定义本宏
*
* #define WITH_NANOVG_AGGE 1
*/
/**
* 如果启用VGCANVAS请定义本宏
*
* #define WITH_VGCANVAS 1
*/
```
> 请参考src/base/awtk_config_sample.h
### 二、include路径
* 1.基本路径
```
awtk
awtk\src
awtk\3rd
```
* 2.picasso的路径(如果启用)
```
awtk\3rd\picasso\src
awtk\3rd\picasso\src\gfx
awtk\3rd\picasso\include
awtk\3rd\picasso\src\include
awtk\3rd\picasso\build
```
* 3.agg的路径(如果启用)
```
3rd/agg/include
awtk/src
awtk/src/ext_widgets
awtk/3rd
awtk/3rd/agge/src
awtk/3rd/agge/include
awtk/3rd/nanovg/src
awtk/3rd/gpinyin/include
awtk/3rd/libunibreak/src
awtk-port
```
### 三、要加入到工程的文件
* src/base 全部加入。
* src/font 全部加入。
* src/main\_loop/main\_loop\_simple.*
* src/window\_animators/ 如果需要窗口动画而且支持framebuffer加入window\_animator\_fb.c否则加入window\_animator\_null.c。
* src/image_loader 全部加入。
* src/platforms/raw/mutex.c 加入本文件或者自己实现mutex。
* src/ui\_loader 全部加入。
* src/window_animators 全部加入。
* src/blend 使用framebuffer时全部加入。
* src/lcd 根据LCD类型选择相应的文件。
* src/tk.c
* src/tk.h
* src/vgcanvas/vgcanvas\_null.c 如果不使用vgcanvas请加入本文件。
* src/xml 可选。
* 3rd/picasso 可选。
* 3rd/agg 可选。
| Tables | Are |
|-----------------------------|:-------------|
| src/awtk.c | 加入
| src/base | 全部加入
| src/xml | 全部加入
| src/ui_loader | 全部加入
| src/blend | 使用framebuffer时全部加入
| src/ext\_widgets | 使用扩展控件时全部加入
| src/font | 推荐全部加入(可只加需要的)
| src/image\_loader | 推荐全部加入(可只加需要的)
| src/input\_engines | 不需要输入法时加入input\_engine\_null.c否则加入input\_engine\_pinyin.cpp
| src/input\_methods | 加入input\_method\_creator.c根据宏决定启用何种输入法
| src/lcd | 根据LCD类型(OpenGL/FrameBuffer/Register选择相应的文件
| src/main\_loop | 嵌入式系统一般使用main\_loop\_simple.c
| src/misc | 如果没有标准的内存管理函数请加入
| src/platforms/raw/fs_os.c | 如果没有文件系统请加入否则请自行实现fs接口
| src/platforms/raw/mutex_null.c | 如果没有mutex请加入否则请自行实现mutex接口
| src/platforms/raw/sys_tick.c | 如果需要自己实现sys tick中断可以加入
| src/vgcanvas | 如果需要矢量图或图片旋转(不支持lcd\_reg)请加入vgcanvas\_nanovg.c否则加入vgcanvas\_null.c
| src/widget_animators | 除了使用LCD\_REG的平台外推荐全部加入
| src/window_animators | 启用OpenGL(PC/Android/iOS)时加入window\_animator\_opengl.c使用Framebuffer(一般嵌入式)时加入window\_animator\_fb.c低端嵌入式平台请加入window\_animator\_null.c
| awtk/3rd/agge | 在framebuffer模式启用vgcanvas时加入
| awtk/3rd/gpinyin/src | 启用拼音输入法时加入
| awtk/3rd/nanovg/src | 在启用vgcanvas时加入
| awtk-port | 加入各个平台自己的移植代码。
| awtk/demos | 在使用ui demos可以加入assets.c demo\_main.c demo\_ui\_app.c。
### 四、其它
> 使用keil编译时请在C/C++ -> Misc Controls中加上**--gnu**标志。
* 1.如果要加载png/jpg图片格式StackSize不小于32K。
* 2.使用keil编译时请在C/C++ -> Misc Controls中加上**--gnu**标志。

View File

@ -19,7 +19,7 @@ sources=Glob('base/*.c') +\
sources += ['main_loop/main_loop_simple.c'];
if os.environ['LCD'] == 'NANOVG':
sources += ['window_animators/window_animator_nanovg.c'];
sources += ['window_animators/window_animator_opengl.c'];
sources += ['lcd/lcd_nanovg.c', 'main_loop/main_loop_nanovg.c'];
elif os.environ['LCD'] == 'SDL':
sources += ['window_animators/window_animator_fb.c'];

View File

@ -100,6 +100,12 @@
* #define HAS_FAST_MEMCPY 1
*/
/**
* wcsxxx之类的函数没有定义时
*
* #define WITH_WCSXXX 1
*/
/**
* STM32 G2D硬件加速
*