MiniGUI5.0正式发布,嵌入式 GUI 系统

感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18430.html

前言

飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。

MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

MiniGUI 5.0 主要带来了三项全新特性:

  1. 合成图式
  2. 八种主窗口 Z 序级别
  3. 虚拟窗口

合成图式

自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。

合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。

合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。

合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。

合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。

除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:

  • 客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
  • MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
    【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

八种主窗口 Z 序级别

MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。

在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:

  1. 工具提示级别。
  2. 系统/全局级别。
  3. 屏幕锁定级别。
  4. 泊坞窗级别。
  5. 更高级别。
  6. 普通级别。
  7. 启动器级别。
  8. 桌面或墙纸。

这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。

【开源推荐】MiniGUI 5.0 正式发布,嵌入式 GUI 系统

虚拟窗口

MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。

但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。

虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。

此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。

除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md

最后,附上 MiniGUI 5.0 的入口仓库:https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0

或者https://github.com/VincentWei/build-minigui-5.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: minigui api文档是一个关于使用minigui框架的应用编程接口的详细说明文档。minigui是一个开源的轻量级嵌入式图形界面系统,它提供了一套简单易用的函数接口,用于创建窗口、处理事件、绘制图形等操作。 这个api文档包含了minigui框架的所有函数和数据结构的详细说明,以及它们的使用方法和参数说明。通过阅读这个文档,开发者可以了解如何使用minigui框架创建和管理窗口,如何处理用户输入事件,如何绘制图形和显示文本等。 文档中的每个函数和数据结构都有详细的说明,包括函数的参数列表、返回值、函数的作用和使用示例。此外,文档还提供了一些编程示例和实用技巧,帮助开发者更好地理解和使用minigui框架。 通过阅读minigui api文档,开发者可以更加高效地使用minigui框架开发图形界面应用。他们可以根据文档中的指导,正确地使用minigui提供的函数和数据结构,减少开发中的错误和问题。文档的清晰结构和详细说明也使得开发者能够快速地定位到自己需要的接口和功能,并能够快速上手开发工作。 总而言之,minigui api文档是minigui框架的重要参考资料,它提供了必要的信息和指导,帮助开发者更加高效地使用minigui开发图形界面应用。 ### 回答2: MiniGUI是一个嵌入式窗口系统,提供了一套API文档以帮助开发者使用和定制MiniGUI。该API文档详细介绍了MiniGUI提供的各种功能和接口,方便开发者快速掌握和使用MiniGUIMiniGUI API文档包含了各种模块和子模块,如绘图模块、窗口管理模块、事件处理模块等。每个模块都有对应的说明和使用示例,帮助开发者理解和使用相应的功能。 在MiniGUI API文档中,开发者可以找到各种接口的使用方法、函数参数的说明以及返回值的含义。开发者可以根据自己的需求选择合适的API接口来开发自己的应用程序。此外,MiniGUI API文档还提供了一些常用的示例代码,供开发者参考和学习。 值得一提的是,MiniGUI API文档还提供了详细的配置和编译指南,方便开发者在不同的环境下使用MiniGUI。开发者可以根据自己的平台和需求选择相应的配置,在编译和链接时按照指南进行操作,以确保应用程序的正常运行。 总而言之,MiniGUI API文档是一个详尽的开发手册,为开发者提供了丰富的内容和指导。开发者可以通过学习和使用MiniGUI API文档,快速入门并开发出高质量的应用程序。 ### 回答3: MiniGUI API文档是一份关于MiniGUI图形用户界面开发库的详细说明和指南。MiniGUI是一个轻量级、嵌入式的图形用户界面开发库,主要用于在嵌入式系统上开发图形界面应用程序。 MiniGUI API文档包含了MiniGUI库的所有函数、结构体和枚举类型的详细说明,以及使用示例和代码片段,以帮助开发者理解和使用MiniGUI库进行图形界面开发。文档中的每个API函数都包含了函数的功能描述、参数说明、返回值说明和示例代码,帮助开发者正确地使用API函数。 MiniGUI API文档还提供了针对不同功能模块的详细说明,比如窗口管理、控件管理、图形绘制、事件处理和消息传递等,帮助开发者更深入地理解MiniGUI库的各个功能模块和组件。 MiniGUI API文档还包含了一些重要的开发技术和最佳实践,比如界面布局、绘图技术、事件处理和消息传递机制等,以帮助开发者提高开发效率和代码质量。 通过阅读MiniGUI API文档,开发者可以了解到MiniGUI库的所有功能和特性,学会正确地使用API函数进行图形界面开发,从而快速、高效地开发出嵌入式系统上的图形界面应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值