AWTK

AWTK WEB版移植笔记-基础

随声附和 提交于 2019-11-29 09:39:24
AWTK WEB版移植笔记-基础 将一个C语言写的hello world编译成web版本是很简单的,网上有大量这样的例子。写这样的例子是必要的,让我们能够快速入门,但是实际项目则要复杂的多,这里会介绍一些emscripten的基础知识,同时强调移植AWTK过程中遇到的问题,希望能让大家少走弯路。 一、命令行参数 1.EXPORTED_FUNCTIONS 用于导出应用程序中C的函数供JS调用。如: -s EXPORTED_FUNCTIONS="['_awtk_web_init']" 函数名前面要加下划线,比如函数名为awtk_web_init,导出的名称则为_awtk_web_init。 对于小的项目,导出的函数很少,直接写在命令行也是可以的。对于大的项目,导出的函数很多,应该把内容写到文件中,通过@符合告诉emcc从文件中读取导出的函数,这样维护起来会方便很多。如: -s EXPORTED_FUNCTIONS=@configs/export_app_funcs.json configs/export_app_funcs.json的内容: [ "_awtk_web_init", "_awtk_web_deinit", "_awtk_web_main_loop_step", "_awtk_web_on_key_down", "_awtk_web_on_key_up", "_awtk

AWTK 在 RT-Thread 上的移植笔记

廉价感情. 提交于 2019-11-27 15:00:30
AWTK 在 RT-Thread 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 1. 加入 RT-Thread 相关文件。 AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 awtk-stm32f103ze-raw 基础上加入 RT-Thread 支持。 在 Keil 中增加下列文件: rtthread/ rtthread/bsp rtthread/cortex-m3 rtthread/cortex-m3/context_gcc.S rtthread/cortex-m3/context_iar.S rtthread/cortex-m3/context_rvds.S rtthread/cortex-m3/cpuport.c rtthread/cortex-m3/SConscript rtthread/include rtthread/include/libc rtthread/include/libc/libc_dirent.h rtthread/include/libc/libc_errno.h rtthread/include/libc/libc_fcntl.h rtthread/include/libc

AWTK 在腾讯 TOS 上的移植笔记

做~自己de王妃 提交于 2019-11-27 15:00:13
AWTK 在腾讯 TOS 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特别的改动。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 1. 加入 TOS 相关文件。 AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 awtk-stm32f103ze-raw 基础上加入 TOS 支持。 在 Keil 中增加下列文件: TencentOS/kernel/core/tos_event.c TencentOS/kernel/core/tos_fifo.c TencentOS/kernel/core/tos_global.c TencentOS/kernel/core/tos_mmblk.c TencentOS/kernel/core/tos_mmheap.c TencentOS/kernel/core/tos_msg.c TencentOS/kernel/core/tos_mutex.c TencentOS/kernel/core/tos_pend.c TencentOS/kernel/core/tos_queue.c TencentOS/kernel/core/tos_robin.c

AWTK WEB版移植笔记-基础

被刻印的时光 ゝ 提交于 2019-11-27 01:41:47
AWTK WEB版移植笔记-基础 将一个C语言写的hello world编译成web版本是很简单的,网上有大量这样的例子。写这样的例子是必要的,让我们能够快速入门,但是实际项目则要复杂的多,这里会介绍一些emscripten的基础知识,同时强调移植AWTK过程中遇到的问题,希望能让大家少走弯路。 一、命令行参数 1.EXPORTED_FUNCTIONS 用于导出应用程序中C的函数供JS调用。如: -s EXPORTED_FUNCTIONS="['_awtk_web_init']" 函数名前面要加下划线,比如函数名为awtk_web_init,导出的名称则为_awtk_web_init。 对于小的项目,导出的函数很少,直接写在命令行也是可以的。对于大的项目,导出的函数很多,应该把内容写到文件中,通过@符合告诉emcc从文件中读取导出的函数,这样维护起来会方便很多。如: -s EXPORTED_FUNCTIONS=@configs/export_app_funcs.json configs/export_app_funcs.json的内容: [ "_awtk_web_init", "_awtk_web_deinit", "_awtk_web_main_loop_step", "_awtk_web_on_key_down", "_awtk_web_on_key_up", "_awtk

在 AWTK 中 如何让文本滚动起来

那年仲夏 提交于 2019-11-26 15:44:00
如何让文本滚动起来 在很多时候,特别是在小屏幕的硬件上,控件比较小而要显示的文本比较长。 此时,我们需要在控件获得焦点时/或点击时,让文本滚动起来,以便让用户看到完整的信息。 AWTK 提供了 hscroll_label_t 控件,可以轻松满足文本滚动的需求。 一、基本用法 示例: <window anim_hint="htranslate" text="hscroll_label" children_layout="default(c=1,h=30,xm=10,s=5)"> <hscroll_label text="炫酷的 GUI 引擎。" /> <hscroll_label text="炫酷的 GUI 引擎。" style="right"/> <hscroll_label lull="1000" loop="true" yoyo="true" ellipses="true" focusable="true" text="(always ellipses loop yoyo) 为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。" /> <hscroll_label focusable="true" only_focus="true" text="(only_focus noloop) 为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的

AWTK 控件焦点相关问题

此生再无相见时 提交于 2019-11-25 22:44:30
控件焦点相关问题 一、启用焦点停留 (tab stop) 除了 edit 控件外,其它控件如果需要焦点停留功能,可以指定控件的 focusable 属性为 true 来实现。 在 XML 中,可以这样指定: <button ... focusable="true"/> 在 C 代码中,可以这样指定: widget_set_prop_bool(widget, WIDGET_PROP_FOCUSABLE, TRUE); 如果指定了 fucusable 属性为 true,请确保控件的 style 中定义了 focused 状态的数据,否则会因为 focused 状态没有 style 数据而无法显示。如: <style name="default" border_color="#a0a0a0" text_color="black"> <normal bg_color="#f0f0f0" /> <pressed bg_color="#c0c0c0" x_offset="1" y_offset="1"/> <over bg_color="#e0e0e0" /> <focused bg_color="#e0e0e0" /> <disable bg_color="gray" text_color="#d0d0d0" /> </style> <focused bg_color="#e0e0e0" /

NanoVG 优化笔记:性能提高5倍的秘密

旧巷老猫 提交于 2019-11-25 17:01:56
NanoVG 优化笔记 nanovg 正如其名称所示的那样,是一个非常小巧的矢量绘图函数库。相比cairo和skia的数十万行代码,nanovg不足5000行的C语言代码,称为nano也是名副其实了。nanovg的设计、接口和代码质量都堪称典范,唯一美中不足的就是性能不太理想。特别是在Android的低端机型和大屏幕的机型上,一个简单的界面每秒只能画十几帧。最近我把 AWTK 移植到Android上时,就碰到了这个尴尬的问题。 经过优化之后, AWTK 在低端机型上,整体渲染性能有了3到5倍的提升。这里做个笔记,供有需要的朋友参考。 nanovg的性能瓶颈在于片段着色器(fragment shader),片段着色器可以认为是为GPU提供的一个回调函数,该回调函数在处理每个像素时被调用,在每一帧绘制时都会执行数百万次,可见该函数的对性能的影响是很大的。 我们先看看nanovg的片段着色器(fragment shader)代码: static const char* fillFragShader = "#ifdef GL_ES\n" "#if defined(GL_FRAGMENT_PRECISION_HIGH) || defined(NANOVG_GL3)\n" " precision highp float;\n" "#else\n" " precision mediump