Подтвердить что ты не робот

Использовать html-рендеринг во встроенной среде

Я работаю над проектом, где я буду разрабатывать графический интерфейс для встроенного устройства и хотел бы с ним поработать с HTML. Надеюсь, вы, ребята, можете помочь мне найти механизм рендеринга, который соответствует моим потребностям.

Требования:

  • Веб-страница должна быть отображена в буфер памяти. Затем я переношу буфер памяти на дисплей.

  • Я должен быть уведомлен, если обратный вызов или событие, что движок визуализации должен получить новый элемент. HTML-страница, изображение и т.д. Причина этого заключается в том, что я должен извлечь ресурс и передать его в механизм рендеринга (причина в том, что устройство не имеет TCP/IP во всех конфигурациях, и после этого нужно будет извлечь элемент поверх последовательной линии, а также для обеспечения безопасности мне нужно проверить, разрешен ли запрос).

  • Я должен иметь возможность вводить события мыши и клавиатуры в механизм рендеринга.

  • Только C и/или С++

  • Должна быть легко переносимой и не зависящей от библиотек, которые существуют только для win/linux/mac. У устройства, на котором я запускаю пользовательскую ОС...

  • Мало занимаемая площадь и потребление памяти, я, возможно, уйду с размером 10 МБ и выделенной памятью 5-10 МБ во время рендеринга. Но не намного больше.

  • Приглашаются как с открытым исходным кодом, так и с коммерческими решениями

  • Мне НЕ нужна полная поддержка HTML5 и CSS3, я имею в виду, если я могу использовать "базовый HTML и некоторый CSS", я более чем счастлив.

Я просмотрел некоторые WebKit, хром, gecko, berkelium и awesomium, но на самом деле не нашел, что они соответствуют моим потребностям.

Есть ли что-нибудь, что приближается к тому, что мне нужно? Или я должен просто отказаться от этой идеи и построить GUI каким-то другим способом? Я ценю любую помощь!

4b9b3361

Ответ 1

Хороший вопрос! Оказывается, в этом пространстве есть несколько вариантов, и, как вы догадались, многие из них основаны на Webkit. Некоторые из них, однако, не являются таковыми, и именно те, которые, я считаю, вас больше всего интересуют.

Ссылки

Простейшим браузером 0-го уровня, который будет отвечать вашим потребностям, является графическая версия Веб-браузер ссылок. Это подходящая кросс-платформенная (правда, вам потребуются некоторые библиотеки из Cygwin для сред Windows), с открытым исходным кодом, содержит небольшой памяти и в некоторых из своих разветвленных или расширенных воплощений (например, Elinks), имеет расширенные функциональные возможности, такие как поддержка Javascript, полная мышь функциональность и колокола и свистки, которые вы желаете в своем заявлении о проблемах.

Конечно, он написан на C.

Konqueror/Embedded

Изучая некоторые другие параметры в этом пространстве, Konqueror/Embedded - это то, что нужно учитывать и смотреть в будущем. Да, он основан на Qt/Embedded и Webkit (mumble mumble), но они нацелены на предоставление уменьшенной версии как своего браузера, так и стека библиотеки для удовлетворения этой потребности. Опять же, Windows будет нечетным ребенком здесь, но она работоспособна.

Fennec

Последний кросс-платформенный вариант для изучения - это тонкая версия Mozilla Firefox, Fennec. Предоставляя гораздо большую базу кода, Mozilla очень агрессивно работает над встроенной версией, и любая помощь, которую вы можете здесь предоставить, будет очень признательна. Из того, что я понимаю, slimmed-версия по-прежнему пре-альфа (Fennec, однако, живет на), но она должна стать работоспособной опцией в будущее.

И гамут других исследовать

В дополнение к гамме веб-браузеров, конкурирующих в настоящее время в этом пространстве, проприетарные опции, такие как ANT Galio также может удовлетворить ваши потребности. Кажется, есть много других проприетарных решений, но большинство из них (например, Internet Explorer Mobile, Mobile Safari) обслуживает только небольшое количество платформ. Хорошие, проприетарные кросс-платформенные решения, которые не основаны на Webkit, выглядят довольно редко.

SpliFF также предложил отличное предложение в его ответе: try libRocket. Как он рекомендует, он легкий, кросс-платформенный, в настоящее время и активно поддерживается, легко для вас подключиться, и предоставляет для случаев автоматизации, которые вы ищете. В этом случае он запрограммирован на С++, привязки Python для дополнительного удобства.


В заключение,, учитывая ваши потребности, вам все равно нужно оценить сильные и слабые стороны и спецификации API для перечисленных выше опций.

Я рекомендую начинать с Links, потому что это самый многофункциональный и надежный вариант, оптимизируя при очень небольшом объеме памяти и кодовой базе. Его самая большая сила в том, что это была цель дизайна с самого начала, и все дерево кода построено с учетом этой философии дизайна.

Сообщите нам, для чего вы идете. Это достаточно распространенная потребность в сообществе, и я уверен, что другие извлекут выгоду из вашего опыта.

Ответ 2

Посмотрите librocket. Он соответствует вашим требованиям: HTML + CSS, легкий, обрабатывающий события и рендеринг в буфер. Я смотрел, хотя куча проектов, которые недавно искали в основном то, что вы спросили, и это был матч, который я нашел.

libRocket - это пакет промежуточного программного обеспечения пользовательского интерфейса С++, основанный на стандартах HTML и CSS. Он разработан как комплексное решение для любых потребностей интерфейса проекта.

libRocket использует проверенные временем открытые стандарты XHTML1.0 и CSS2.0 (при заимствовании функций из HTML5 и CSS3), и расширяет их с помощью функции, подходящие для приложений реального времени. Из-за этого вы не нужно изучать совершенно новую проприетарную технологию, такую ​​как другие пакетов в этом промежуточном пространстве.

* Cross platform architecture (Windows, Mac, Linux, iPhone, ...).
* Dynamic layout system.
* Efficient application-wide styling, with a custom-built templating engine.
* Fully featured user control set: buttons, sliders, drop-downs, etc.
* Runtime visual debugging suite.
* Easily integrated and extensible with Python scripting.

* Abstracted interfaces for plugging in to any game engine (samples for OpenGL, DirectX and Ogre3d).
* Decorator engine allowing custom application-specific effects that can be applied to any element.
* Generic event system that binds seamlessly into existing projects.

Ответ 3

Посмотрите DS Organize, домашний браузер DS, а также ES Operating System от Google (для ОС, первоначально разработанной Nintendo).

Я предложил посмотреть DS Organize, поскольку Nintendo DS имеет только 4 МБ ОЗУ (8 МБ с расширением памяти, которое использует большинство браузеров DS). И вы также можете уйти с рендерингом непосредственно в VRAM, сохранив несколько 100 кб в зависимости от вашей модели памяти и от того, какая свобода у вас есть при записи VRAM за пределами VBlank.