Шаблон "мост" является приложением старого совета, "предпочтите состав по наследованию". Становится удобно, когда необходимо разделить различные времена на подклассы способами, которые являются ортогональными друг с другом. Скажите, что необходимо реализовать иерархию цветных фигур. Вы не разделили бы Форму на подклассы с Прямоугольником и Кругом и затем разделили бы Прямоугольник на подклассы с RedRectangle, BlueRectangle и GreenRectangle и тем же для Круга, не так ли? Вы предпочли бы говорить, что каждая Форма имеет Цвет и реализовать иерархию цветов, и это - Шаблон "мост". Ну, я не реализовал бы "иерархию цветов", но Вы получаете идею...
Я думаю, что dillo требует соглашений о вызовах c, но это может подойти для ваших нужд. Нет javascript или flash, or or or, но он поддерживает CSS.
Прочитав вопрос еще раз, я вижу, что вам нужен javascript, который в настоящее время dillo не поддерживает. Извините.
Я не знаю о других платформах, но самый простой способ сделать это в Windows - использовать встроенный в систему элемент управления веб-браузером. Он основан на COM, для которого может быть довольно сложно программировать. Следующий код дает вам такого зверя:
HWND htmlWindow = ::CreateWindowExA(
dwExStyle,
ATLAXWIN_CLASS,
"about:blank",
dwStyle,
x, y, w, h,
hwndParent,
NULL,
hInstance,
NULL
);
CAxWindow2 helperWindow;
helperWindow.Attach(htmlWindow);
CComPtr<IWebBrowser2> theWebBrowserControl;
HRESULT hr = helperWindow.QueryControl(&theWebBrowserControl);
Приведенный выше образец кода является плодом нескольких недель мучительных попыток понять эту вещь COM. Что ж, надеюсь, вы сочтете это полезным ...
Примечание: приведенный выше пример зависит от ATL (не MFC).
У меня есть предложение, которое может решить проблему:
В Windows используйте элемент управления IE, а в Linux используйте Mozilla (которая, вероятно, будет доступна в виде динамической библиотеки, которую вы можете загрузить).
Это сделает ваш app как можно меньше, но вам придется создать оболочку вокруг IE / Mozilla, чтобы легко работать с ними из кода, а ваш HTML / CSS / JS должен быть кроссбраузерным.
Другой подход, полностью непроверенный: Включите простой веб-сервер (например, Boost :: Asio имеет учебник / пример по этому вопросу) в вашу программу, возможно, в отдельном потоке. Затем позвольте пользователю выбрать веб-браузер для перехода на веб-сервер, только что запущенный вашей программой.
8 МБ: вы говорите о размере файла (или флэш-памяти)? Я ожидаю, что требования к оперативной памяти браузеров будут более значительными, чем кодовая база ... но я не вижу этого в вашем вопросе. Поскольку вы имеете в виду Qtwebkit, есть ли в вашем продукте другие библиотеки Qt?
Во многом зависит от ваших потребностей; как насчет совместимости, CSS, размера экрана, производительности? Бесплатное ПО или лицензионное? Какие условия лицензии (т.е. GPL или определенно нет). Не могли бы вы уточнить?
Браузер, который хорошо работает и соответствует стандартам, легко будет стоить 16+ Мбайт. Мне очень интересна Opera, в частности устройства Opera ; он полностью соответствует стандартам, настраивается и производителен, однако объем используемой памяти также находится в области 16-32 МБ.