在嵌入式环境中使用html渲染器

时间:2012-02-22 16:18:16

标签: c++ html user-interface embedded rendering

我正在开发一个项目,我将为嵌入式设备设计一个GUI,并且很乐意为此使用HTML。我希望你们能帮助我找到一个适合我需要的渲染引擎。

要求:

  • 必须将网页呈现到内存缓冲区中。然后我将内存缓冲区传输到显示器。

  • 我必须通过回调或事件通知渲染引擎需要获取新项目。 HTML页面,图像等。原因是我必须获取资源并将其提供给渲染引擎(原因是设备在所有配置中都没有TCP / IP,然后需要获取项目串行线,为了安全起见,我需要验证是否允许请求。

  • 我必须能够将鼠标和键盘事件注入渲染引擎。

  • 仅限C和/或C ++

  • 必须易于移植且缺乏对仅存在于win / linux / mac的库的依赖性。我运行的设备运行自定义操作系统...

  • 占用空间小和内存消耗,在渲染过程中,我可能会占用10MB的占用空间和5-10 MB的内存。但不多了。

  • 欢迎开源和商业解决方案

  • 我不需要完整的HTML5和CSS3支持,我的意思是如果我可以使用"基本HTML和一些CSS"我非常高兴。

我看过一些WebKit,铬,壁虎,berkelium和awesomium,但并没有真正发现它们符合我的需要。

那里有什么接近我需要的东西吗?或者我应该放弃这个想法并以其他方式构建GUI?我感谢任何帮助!

3 个答案:

答案 0 :(得分:31)

好问题!事实证明,在这个领域有一些选择,正如你所推测的那样,其中很多都是基于Webkit的。但是其中一些不是,而那些是我认为你最感兴趣的那些。

链接

满足您需求的最简单的0级浏览器是Links web browser的图形版本。它是适当的跨平台(诚然,你需要一些来自Cygwin的Windows环境库),开源,占用小内存,以及一些分叉或增强的版本(例如,{{ 3}}),具有增强的功能,如Javascript支持,完整的鼠标功能,以及您在问题陈述中所需的花哨功能。

当然,它是用C语言编写的。

的Konqueror /嵌入式

探索此空间中的其他一些选项,Elinks是未来需要考虑和关注的内容。是的, 基于Qt / Embedded和Webkit( mumble mumble ),但它们的目标是提供浏览器和库堆栈的精简版本特别满足这个需求。再一次,Windows将成为这里的奇怪孩子,但它是可行的。

小狐

要探索的最后一个跨平台选项是Mozilla Firefox的简约版本Konqueror/Embedded。虽然提供了更大的代码库,但Mozilla正在非常积极地开展Fennec工作,并且非常感谢您在这里提供的任何帮助。根据我的理解,瘦身版本仍然是pre-alpha(embedded version),但它将来会成为一个可行的选择。

和其他人探索

Fennec, however, lives on外,the gamut of web browsers currently competing in this space等专有选项也可满足您的需求。似乎还有许多其他专有解决方案,但其中大多数(例如,ANT GalioInternet Explorer Mobile)仅服务于少数平台。 不是基于Webkit 的优秀,专有的跨平台解决方案似乎非常罕见。

SpliFF还在Mobile Safari中提出了一个很好的建议:试试his answer正如他所推荐的那样,它是轻量级的,跨平台的,目前正在积极维护,对您来说很容易钩入,和libRocket。在这种情况下,它用C ++编程,provides for the automation cases that you seek以方便使用。


总之,根据您的需求,您仍然需要评估上面列出的选项的优势,劣势和API规范。

我建议从Links开始,因为它是功能最丰富且功能最强大的选项,同时在非常小的内存占用和代码库上进行优化。它最大的优势在于,从一开始就是设计目标,整个代码树都是以这种设计理念为基础构建的。

请告诉我们您的用途。这是社区中普遍需要的,我相信其他人会从您的经历中受益。

答案 1 :(得分:11)

看看librocket。它满足您对HTML + CSS,轻量级,处理事件和渲染缓冲区的要求。我看了很多项目,最近基本上都在寻找你的问题,这就是我找到的匹配。

  

libRocket是基于HTML和CSS标准的C ++用户界面中间件包。它被设计为满足任何项目接口需求的完整解决方案。

     

libRocket使用经过时间考验的开放标准XHTML1.0和CSS2.0   (从HTML5和CSS3借用功能),并扩展它们   适用于实时应用程序的功能。因此,你   不必像其他人那样学习全新的专有技术   这个中间件空间中的包。

     
      
  • 跨平台架构(Windows,Mac,Linux,iPhone,...)。
  •   
  • 动态布局系统。
  •   
  • 高效的应用程序范围样式,以及定制的模板引擎。
  •   
  • 功能齐全的用户控制集:按钮,滑块,下拉菜单等
  •   
  • 运行时可视化调试套件。
  •   
  • 使用Python脚本轻松集成和扩展。
  •   
  • 用于插入任何游戏引擎的抽象接口(OpenGL,DirectX和Ogre3d的示例)。
  •   
  • 装饰器引擎,允许自定义应用程序特定的效果,可应用于任何元素。
  •   
  • 与现有项目无缝绑定的通用事件系统。
  •   

答案 2 :(得分:3)

查看DS Organize,一个自制的DS浏览器,以及Google的ES Operating System(最初由Nintendo开发的操作系统)。

我建议查看 DS Organize ,因为Nintendo DS只有4MB内存(大多数DS浏览器使用的内存扩展名为8MB)。而且你也可以直接渲染VRAM,从而节省几百kb,具体取决于你的内存模型以及你在VBlank之外写VRAM的自由度。