tka*_*rls 29 html c++ embedded user-interface rendering
我正在开发一个项目,我将为嵌入式设备设计一个GUI,并且很乐意为此使用HTML.我希望你们能帮我找到一个适合我需要的渲染引擎.
要求:
必须将Web页面呈现到内存缓冲区中.然后我将内存缓冲区传输到显示器.
我必须通过回调或事件通知渲染引擎需要获取新项目.HTML页面,图像等.原因是我必须获取资源并将其提供给渲染引擎(原因是设备在所有配置中都没有TCP/IP,然后需要获取项目串行线,并且为了安全,我需要验证是否允许请求).
我必须能够将鼠标和键盘事件注入渲染引擎.
只有C和/或C++
必须易于移植,并且缺少对仅存在于win/linux/mac的库的依赖性.我运行的设备运行自定义操作系统...
占用空间小,内存消耗小,在渲染过程中,我可能会占用10MB的占用空间和5-10 MB的内存.但不多.
欢迎开源和商业解决方案
我不需要完整的HTML5和CSS3支持,我的意思是如果我可以使用"基本HTML和一些CSS"我非常高兴.
我看过一些WebKit,铬,壁虎,berkelium和awesomium,但并没有真正发现它们符合我的需求.
那里有什么东西接近我需要的东西吗?或者我应该放弃这个想法并以其他方式构建GUI?我感谢任何帮助!
MrG*_*mez 31
好问题!事实证明,在这个领域有一些选择,正如你所推测的那样,其中很多都是基于Webkit的.但是其中有些不是,而那些是我认为你最感兴趣的那些.
最符合您需求的最简单的0级浏览器是Links Web浏览器的图形版本.它是适当的跨平台(诚然,你需要一些来自Cygwin的Windows环境库),开源,占用内存很少,并且在一些分叉或增强版本(例如,Elinks)中,具有增强的功能喜欢Javascript支持,全鼠标功能,以及您在问题陈述中所需的花哨功能.
当然,它是用C语言写的.
探索这个领域的其他一些选择,Konqueror/Embedded是未来需要考虑和观察的东西.是的,它是基于Qt/Embedded和Webkit的(咕哝咕哝),但他们旨在提供他们的浏览器和他们的图书馆书库专门满足这一需求两者的瘦身版.再一次,Windows将成为这里的奇怪孩子,但它是可行的.
最后一个跨平台的选择是Mozilla Firefox,Fennec的超薄版本.虽然提供了更大的代码库,但Mozilla正在非常积极地开发其嵌入式版本,并且非常感谢您在这里提供的任何帮助.根据我的理解,瘦身版本仍然是预先版本(Fennec,然而,继续存在),但它应该成为未来的可行选择.
除了目前在此领域竞争的各种网络浏览器外,ANT Galio等专有选项也可满足您的需求.似乎还有许多其他专有解决方案,但其中大多数(例如,Internet Explorer Mobile,Mobile Safari)仅服务于少数平台.不基于Webkit的优秀,专有的跨平台解决方案似乎非常罕见.
SpliFF在他的回答中也提出了一个很好的建议:试试libRocket.正如他所推荐的那样,它是轻量级的,跨平台的,当前和主动维护的,您可以轻松地进入,并提供您所寻求的自动化案例.在这种情况下,它使用C++编程,使用Python绑定以获得额外的便利.
总之,根据您的需求,您仍然需要评估上面列出的选项的优势,劣势和API规范.
我建议从Links开始,因为它是功能最丰富且功能最强大的选项,同时在非常小的内存占用和代码库上进行优化.它最大的优势在于,从一开始就是设计目标,整个代码树都是以这种设计理念为基础构建的.
请告诉我们您的用途.这是社区中普遍需要的,我相信其他人将从您的经验中受益.
Spl*_*iFF 11
看看librocket.它满足您对HTML + CSS,轻量级,处理事件和渲染缓冲区的要求.我看了很多项目,最近基本上都在寻找你的问题,这就是我找到的匹配.
libRocket是基于HTML和CSS标准的C++用户界面中间件包.它被设计为满足任何项目接口需求的完整解决方案.
libRocket使用经过时间考验的开放标准XHTML1.0和CSS2.0(同时借用HTML5和CSS3中的功能),并使用适合实时应用程序的功能扩展它们.因此,您无需像此中间件空间中的其他软件包一样学习全新的专有技术.
- 跨平台架构(Windows,Mac,Linux,iPhone,...).
- 动态布局系统.
- 高效的应用程序范围样式,以及定制的模板引擎.
- 功能齐全的用户控制集:按钮,滑块,下拉菜单等.
- 运行时可视化调试套件.
- 使用Python脚本轻松集成和扩展.
- 用于插入任何游戏引擎的抽象接口(OpenGL,DirectX和Ogre3d的示例).
- 装饰器引擎允许可应用于任何元素的自定义应用程序特定效果.
- 通用事件系统,可无缝绑定到现有项目中.