GuiLite 3.3 发布:要灵活扩展,还要简单粗暴

栏目: 软件资讯 · 发布时间: 3年前

内容简介:本次更新,解决了:定制多样化问题,并优化了软件启动速度。 定制需求: 随着开发群的日益壮大,有想法的开发者层出不穷;倒是群主太过正常,显得跟大家有点格格不入了。大家需求是这样的: 我的硬件,没有frame...

本次更新,解决了:定制多样化问题,并优化了软件启动速度。

定制需求:

随着开发群的日益壮大,有想法的开发者层出不穷;倒是群主太过正常,显得跟大家有点格格不入了。大家需求是这样的:

  1. 我的硬件,没有framebuffer(这种情况在内存较小的单片机平台很常见),但我也想用GuiLite画出漂亮流畅的效果
  2. 我需要一个可以滚动的UI效果,界面上的所有元素(窗口)可以一起上下左右滑动(例如:手机通信录)
  3. 我需要一个半透明的窗口,其中窗口的背景是半透明的,文字则是不透明的
  4. 我的硬件有2D加速功能,需要GuiLite给与支持

 软件方案:

以上任何一个要求都足以推倒原有框架,因为太过底层,一旦修改就是对基础关键部分的手术。如何用最少的代码简单粗暴的解决问题,不伤执行效率,又不伤结构,是对软件架构的一个重大考验。我们的方案如下:

  1. 对于有经验的开发者来说,这已经是旧闻了,不仅被解决了,而且已经广泛应用在单片机方案中了;为什么旧事重提,就是因为它与需求2、3、4有很大的相似性,有必要一起做个总结:从c_surface派生一个类c_surface_no_fb,主要的绘制(渲染)接口没有变,只是重新实现draw_pixel, fill_rect(重载虚函数),让其通过条用外部的画点驱动函数,进行具体画点工作,具体见display.cpp::c_surface_no_fb
  2. 从c_surface派生一个类c_surface_scroll,扩大surface的高度,宽度,使其能够绘制所有的窗口元素;混动显示的过程,就是设置x,y坐标偏移量的过程,具体见:HelloScroll/UICode/scroll.h 
  3. 从c_surface派生一个类c_surface_transparent,主要的绘制(渲染)接口没有变,但实现绘制过程中,分析颜色的alpha值,从而达到透明效果(重载虚函数),具体见:HelloTransparent/UICode/surface_transparent.h
  4. 从c_surface派生一个类c_surface_2d_acc,重新实现一下draw_pixel,fill_rect接口,在该接口里面使能硬件2D加速功能

优化需求:

  1. Linux版本的实例,看到界面的时间较慢,需要优化
  2. STM32版本,由于有调用malloc的地方,所以,在heap size不够的时候会死机,需要手动设置heap size;该操作有些麻烦,影响移植体验,建议优化

优化方案:

  1. 去掉一些不必要的同步操作,改为异步执行,保证界面第一时间呈现出来
  2. 对实例代码进行几行代码调整,用静态变量代替动态分配

开发者优秀作品展示:

 GuiLite 3.3 发布:要灵活扩展,还要简单粗暴

(硬件配置:ESP32 + ST7789 + SPI屏幕),由于GIF的原因,画面不能像真实视频那么流畅,更好的效果,可以参看qq群文件。

感谢GuiLite开发群“李子木”同学的分享!虽然这个作品中能看到GuiLite实例的影子,但视觉效果和艺术设计上面,已经完全是暴捶原作的水准了。特别是对SPI屏幕的DMA优化,让画面超出想象的流畅,绝对是SPI屏幕的优化典范。

最后,希望能看到更多优秀的作品,我们会尽力为大家提供一些技术建议,为您的超神之路贡献绵薄之力。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Cypherpunks

Cypherpunks

Julian Assange、Jacob Appelbaum、Andy Müller-Maguhn、Jérémie Zimmermann / OR Books / 2012-11 / GBP 8.99

Cypherpunks are activists who advocate the widespread use of strong cryptography (writing in code) as a route to progressive change. Julian Assange, the editor-in-chief of and visionary behind WikiLea......一起来看看 《Cypherpunks》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具