c++ 在嵌入式环境中使用HTML渲染器[已关闭]

vtwuwzda  于 2023-05-02  发布在  其他
关注(0)|答案(3)|浏览(157)

就目前而言,这个问题并不适合我们的Q&A格式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或广泛的讨论。如果你觉得这个问题可以改进,并可能重新开放,visit the help center的指导。
11年前关闭。
我正在做一个项目,我将设计一个嵌入式设备的图形用户界面,并希望与HTML去这一点。我希望你们能帮我找到一个适合我需要的渲染引擎。
要求:

  • 必须将网页呈现到内存缓冲区中。然后我将内存缓冲区传输到显示器。
  • 我必须通过回调或事件通知渲染引擎需要获取新项。HTML页面、图像等这样做的原因是我必须获取资源并将其提供给渲染引擎(原因是设备在所有配置中都没有TCP/IP,然后需要通过串行线获取项目,并且为了安全性,我需要验证请求是否被允许)。
  • 我必须能够注入鼠标和键盘事件到渲染引擎。
  • 仅限C和/或C++
  • 必须易于移植,并且不依赖于只存在于win/linux/mac的库。我的设备运行自定义操作系统。..
  • 占用空间和内存消耗小,我可能可以摆脱10 MB的占用空间和5-10 MB的分配内存在渲染。但也没什么了。
  • 开源和商业解决方案都是受欢迎的
  • 我不需要完全的HTML5和CSS3支持,我的意思是,如果我能使用“基本的HTML和一些CSS”我更高兴。

我看过一些WebKit,Chromium,Gecko,Berkelium和Awesomium,但没有真正发现它们符合我的需要。
有没有什么东西接近我需要的?或者我应该给予这个想法,用其他方式构建GUI?我感谢任何帮助!

ahy6op9u

ahy6op9u1#

问得好!事实证明,在这个领域中有一些选择,正如您所猜测的,其中许多都基于Webkit。不过,其中一些 * 不是 *,而这些是我相信你最感兴趣的。

友情链接

最简单的,0级浏览器,将满足您的需求是链接Web浏览器的图形版本。它是适当的跨平台(诚然,您将需要来自Cygwin的一些库用于Windows环境),开源,占用内存小,并且在其一些分叉或增强的化身(例如,Elinks)中,具有增强的功能,如Javascript支持,完整的鼠标功能,以及您在问题陈述中想要的铃声和口哨声。
当然,它是用C写的。

Konqueror/嵌入式

探索这个领域中的一些其他选项,Konqueror/Embedded是未来需要考虑和关注的事情。是的,它 * 是 * 基于Qt/Embedded和Webkit(mumble mumble),但他们的目标是提供一个精简版的浏览器和库堆栈,以满足这一需求。再一次,Windows将是这里的奇怪的孩子,但它是可行的。

芬内克

最后一个要探索的跨平台选项是Mozilla Firefox的精简版Fennec。虽然Mozilla提供了更大的代码库,但它正在积极地开发其嵌入式版本,如果您能在这里提供任何帮助,我们将不胜感激。据我所知,精简版仍然是pre-alpha(Fennec, however, lives on),但它应该成为未来可行的选择。

还有很多其他的东西要探索

除了the gamut of web browsers currently competing in this space之外,ANT Galio等专有选项也可以满足您的需求。似乎还有许多其他专有解决方案,但其中大多数(例如,Internet Explorer MobileMobile Safari)只服务于少数平台。* 不基于Webkit* 的优秀、专有、跨平台解决方案似乎非常罕见。

**SpliFF还在his answer中提供了一个很好的建议:试试libRocket。**正如他所推荐的,它是轻量级的,跨平台的,当前和积极维护的,易于您挂钩,并且provides for the automation cases that you seek。在本例中,它是用C++编程的,为了更方便,使用Python bindings
**总之,**根据您的需求,您仍然需要评估上面列出的选项的优点,缺点和API规范。

我建议从链接开始,因为它是功能最丰富和最健壮的选项,同时可以在非常小的内存占用和代码库上进行优化。它最大的优点是这从一开始就是一个设计目标,整个代码树都是基于这种设计理念构建的。
请让我们知道你想要什么。这是社区中的一个普遍需求,我相信其他人将从您的经验中受益。

sf6xfgos

sf6xfgos2#

看看librocket。它满足了HTML+CSS、轻量级、处理事件和渲染到缓冲区的要求。我看了一堆项目,最近基本上是你问的,这是我找到的匹配。
libRocket是基于HTML和CSS标准的C++用户界面中间件包。它被设计为一个完整的解决方案,可满足任何项目的接口需求。
libRocket使用经过时间考验的开放标准XHTML1。0和CSS2.0(同时借用HTML5和CSS3的功能),并将其扩展为适合实时应用程序的功能。正因为如此,您不必像中间件领域的其他软件包那样学习全新的专有技术。

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

1l5u6lss3#

看看DS Organize,一个自制的DS浏览器,还有谷歌的ES Operating System(最初由任天堂开发的操作系统)。
我建议看看DS组织,因为任天堂DS只有4MB的RAM(8MB的内存扩展,大多数DS浏览器使用)。您也可以直接渲染到VRAM,节省100kb,这取决于您的内存模型以及在VBlank之外使用VRAM写入的自由度。

相关问题