ChromiumBrowser: initial version for Linux/X11

git-svn-id: svn://ultimatepp.org/upp/trunk@8377 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
zbych 2015-04-24 19:09:23 +00:00
parent e54d6ea4a1
commit 729e4ce6b6
21 changed files with 1164 additions and 0 deletions

View file

@ -0,0 +1,204 @@
#include "ChromiumBrowser.h"
#include "ClientApp.h"
#include "include/cef_app.h"
#include "include/cef_version.h"
using namespace Upp;
Vector<char*> GetArgs()
{
const Vector<String>& cmdline = CommandLine();
static String app;
Vector<char*> argv;
app = GetExeTitle();
argv.Clear();
argv.Add((char *)~app);
for (unsigned i = 0; i < cmdline.GetCount(); i++){
argv.Add((char *)~cmdline[i]);
}
return argv;
}
void ChromiumBrowser::ChildProcess()
{
CefRefPtr<ClientApp> app(new ClientApp);
Vector<char *> args = GetArgs();
RDUMP(args);
CefMainArgs main_args(args.GetCount(), &args[0]);
int exit_code = CefExecuteProcess(main_args, app.get(), NULL);
if (exit_code >= 0){
RLOG("CefExecuteProcess error");
exit(exit_code);
}
}
bool ChromiumBrowser::IsChildProcess()
{
const Vector<String>& cmdline = CommandLine();
return (cmdline.GetCount() > 0 && cmdline[0].StartsWith("--type="));
}
ChromiumBrowser::ChromiumBrowser(): handler(NULL), start_page("about:blank")
{
CefRefPtr<ClientApp> app(new ClientApp);
Vector<char *> args = GetArgs();
RDUMP(args);
CefMainArgs main_args(args.GetCount(), &args[0]);
int exit_code = CefExecuteProcess(main_args, app.get(), NULL);
if (exit_code >= 0){
RLOG("CefExecuteProcess error");
exit(exit_code);
}
CefSettings cef_settings;
//cef_settings.multi_threaded_message_loop = true;
#ifdef _DEBUG
cef_settings.log_severity = LOGSEVERITY_VERBOSE;
#else
cef_settings.log_severity = LOGSEVERITY_DISABLE;
#endif
tmp_dir = GetTempFileName();
CefString(&cef_settings.cache_path) = ~tmp_dir;
CefInitialize(main_args, cef_settings, app.get(), NULL);
}
void ChromiumBrowser::MessageLoop()
{
CefDoMessageLoopWork();
SetTimeCallback(30, THISBACK(MessageLoop));
}
void ChromiumBrowser::AfterInit(bool Error)
{
handler = new ClientHandler(WhenUrlChange, WhenMessage, WhenTakeFocus, WhenKeyboard, WhenConsoleMessage);
CefBrowserSettings br_settings;
br_settings.file_access_from_file_urls = STATE_DISABLED;
Size sz = GetSize();
CefWindowInfo info;
info.SetAsChild(hwnd, CefRect(0, 0, sz.cx, sz.cy));
CefBrowserHost::CreateBrowser(info, handler.get(), ~start_page, br_settings, NULL);
SetTimeCallback(50, THISBACK(MessageLoop));
}
void ChromiumBrowser::BeforeTerminate()
{
if (handler && handler->GetBrowser()) {
handler->GetBrowser()->StopLoad();
Sleep(20);
handler->GetBrowser()->GetHost()->CloseBrowser(false);
}
CefShutdown();
DeleteFolderDeep(tmp_dir);
}
void ChromiumBrowser::Layout()
{
if (handler && handler->GetBrowser()){
Size sz = GetSize();
XWindowChanges change = {0};
change.width = sz.cx;
change.height = sz.cy;
change.x = 0;
change.y = 0;
XConfigureWindow(Xdisplay, handler->GetBrowser()->GetHost()->GetWindowHandle(), CWHeight | CWWidth | CWY, &change);
}
}
ChromiumBrowser::~ChromiumBrowser()
{
}
void ChromiumBrowser::SetFocus0(bool focus)
{
if (focus) DHCtrl::SetFocus();
else DHCtrl::LostFocus();
if (handler && handler->GetBrowser())
handler->GetBrowser()->GetHost()->SendFocusEvent(focus);
}
void ChromiumBrowser::Browse(const String & url)
{
if (handler && handler->GetBrowser()){
handler->GetBrowser()->StopLoad();
handler->GetBrowser()->GetMainFrame()->LoadURL(~url);
}
}
void ChromiumBrowser::ShowHTML(const String& html)
{
if (handler && handler->GetBrowser())
handler->GetBrowser()->GetMainFrame()->LoadString(~html, "about:blank");
}
String ChromiumBrowser::GetLocation()
{
if (handler && handler->GetBrowser())
return String(handler->GetBrowser()->GetMainFrame()->GetURL());
return String::GetVoid();
}
void ChromiumBrowser::GoBack()
{
if (handler && handler->GetBrowser())
handler->GetBrowser()->GoBack();
}
void ChromiumBrowser::RefreshPage()
{
if (handler && handler->GetBrowser())
handler->GetBrowser()->Reload();
}
void ChromiumBrowser::GoForward()
{
if (handler && handler->GetBrowser())
handler->GetBrowser()->GoForward();
}
void ChromiumBrowser::Stop()
{
if (handler && handler->GetBrowser())
handler->GetBrowser()->StopLoad();
}
String ChromiumBrowser::GetVersion()
{
return Format("CEF %d.%d Chromium %d.%d.%d.%d", cef_version_info(0), cef_version_info(1),
cef_version_info(2), cef_version_info(3), cef_version_info(4), cef_version_info(5));
}
void ChromiumBrowser::ExecuteJavaScript(const char * js)
{
if (handler && handler->GetBrowser()){
CefRefPtr<CefFrame> frame = handler->GetBrowser()->GetMainFrame();
frame->ExecuteJavaScript(js, frame->GetURL(), 0);
}
}

View file

@ -0,0 +1,54 @@
#ifndef _KioskChromium_ChromeBrowser_h_
#define _KioskChromium_ChromeBrowser_h_
#include <CtrlLib/CtrlLib.h>
#include "ClientHandler.h"
namespace Upp{
class ChromiumBrowser : public DHCtrl {
private:
CefRefPtr<ClientHandler> handler;
String start_page;
String tmp_dir;
virtual void AfterInit(bool Error);
virtual void BeforeTerminate();
virtual void Layout();
virtual void SetFocus0(bool focus);
virtual void GotFocus() {SetFocus0(true);}
virtual void LostFocus() {SetFocus0(false);}
void MessageLoop();
public:
typedef ChromiumBrowser CLASSNAME;
ChromiumBrowser();
~ChromiumBrowser();
Callback1<String> WhenUrlChange;
Callback1<String> WhenMessage;
Callback WhenTakeFocus;
Callback1<bool> WhenKeyboard;
Callback3<Upp::String, int, Upp::String> WhenConsoleMessage;
static void ChildProcess();
static bool IsChildProcess();
ChromiumBrowser & StartPage(const char * url) {start_page = url; return *this;}
void Browse(const String & url);
void ShowHTML(const String& html);
String GetLocation();
void GoBack();
void GoForward();
void Stop();
void RefreshPage();
String GetVersion();
void ExecuteJavaScript(const char * js);
};
}
#endif

View file

@ -0,0 +1,137 @@
PREMULTIPLIED
IMAGE_ID(chromium)
IMAGE_BEGIN_DATA
IMAGE_DATA(120,156,237,155,7,84,84,87,26,199,103,6,212,36,18,53,197,184,38,26,179,81,211,227,26,151,36,106,236,198,178,137)
IMAGE_DATA(189,38,70,162,70,179,182,216,11,42,2,98,40,161,136,98,162,9,36,8,42,98,65,112,4,20,80,138,8,8,2,210)
IMAGE_DATA(4,233,101,144,38,93,81,55,38,107,190,253,190,59,239,206,188,25,135,161,26,179,231,120,207,249,31,167,190,119,127,255)
IMAGE_DATA(175,220,251,222,160,100,148,100,148,228,241,120,60,30,143,199,227,17,15,3,169,84,214,137,132,143,101,143,122,50,15,105)
IMAGE_DATA(200,158,124,250,153,62,221,251,188,57,250,159,159,126,229,50,121,141,75,154,137,173,252,254,130,239,252,129,235,75,65,38)
IMAGE_DATA(168,41,27,246,231,12,158,190,210,253,197,215,6,77,233,220,173,123,95,244,166,195,163,6,104,197,144,62,97,212,237,229)
IMAGE_DATA(127,140,159,111,111,98,119,26,76,236,148,124,196,186,208,62,128,105,145,131,90,252,53,238,5,125,103,190,237,105,248,194)
IMAGE_DATA(86,14,95,216,200,97,216,231,155,124,141,158,235,249,38,30,214,240,81,131,233,29,82,105,199,103,95,234,247,209,172,237)
IMAGE_DATA(94,245,52,119,98,32,22,49,59,241,126,229,16,8,95,57,6,194,98,71,229,191,244,156,251,160,203,131,121,54,167,152)
IMAGE_DATA(62,183,246,131,151,222,252,96,150,84,198,234,229,175,52,100,93,186,247,126,111,246,142,227,247,148,115,149,179,121,207,39)
IMAGE_DATA(118,148,54,59,113,47,118,58,3,75,4,45,214,229,129,29,247,64,206,142,55,207,154,248,79,193,103,223,250,193,220,157)
IMAGE_DATA(126,240,92,239,215,134,227,121,165,143,152,155,206,111,56,97,229,238,12,154,23,205,79,131,95,28,127,123,145,7,44,246)
IMAGE_DATA(103,152,7,244,47,61,95,132,252,140,221,94,20,127,59,30,127,57,59,182,152,127,206,78,95,152,184,202,37,251,17,122)
IMAGE_DATA(32,123,182,215,107,35,103,91,249,178,185,204,197,121,137,61,160,186,157,47,228,128,46,15,22,57,4,138,20,160,193,46)
IMAGE_DATA(142,61,29,71,153,251,200,142,249,79,231,161,243,205,193,243,206,178,58,9,51,45,79,220,127,178,235,243,125,255,100,31)
IMAGE_DATA(100,131,166,44,247,152,181,227,36,204,198,57,48,126,238,129,181,14,15,68,121,192,123,193,2,222,243,4,110,113,221,235)
IMAGE_DATA(98,215,142,61,157,151,206,63,115,135,15,204,176,244,129,94,239,12,95,40,249,115,214,80,233,168,197,182,137,116,78,58)
IMAGE_DATA(183,94,15,172,197,181,160,246,193,68,232,11,20,103,30,107,53,183,186,239,171,226,46,228,150,154,221,87,131,125,186,197)
IMAGE_DATA(9,152,178,253,24,244,29,58,213,226,33,123,32,27,190,196,62,125,178,217,49,152,102,126,2,30,240,64,171,22,84,245)
IMAGE_DATA(192,125,16,188,80,251,161,150,154,89,71,204,25,187,175,22,251,73,17,251,113,152,180,237,40,252,107,203,17,232,53,112)
IMAGE_DATA(236,170,135,228,129,129,241,231,219,99,38,154,122,193,39,91,189,65,233,193,113,165,7,150,74,15,168,30,121,63,80,230)
IMAGE_DATA(131,159,70,95,224,154,167,234,147,167,68,107,155,38,179,46,110,237,156,215,102,31,191,249,48,140,221,112,8,140,94,232)
IMAGE_DATA(51,88,210,190,253,64,218,119,228,188,189,99,214,31,132,143,55,30,134,9,155,209,131,45,222,236,188,83,241,252,52,15)
IMAGE_DATA(113,46,168,124,104,196,139,198,52,87,139,249,65,238,147,204,107,58,23,229,223,20,140,193,167,91,143,194,68,83,100,223)
IMAGE_DATA(164,100,31,181,206,147,73,34,149,61,213,94,240,157,186,246,248,7,63,238,232,245,158,232,193,33,230,53,157,247,83,33)
IMAGE_DATA(23,166,98,46,76,23,230,54,147,121,161,156,51,175,13,37,135,154,171,49,169,120,173,212,223,39,95,57,183,56,230,148)
IMAGE_DATA(135,19,48,31,199,33,251,152,13,7,85,236,164,97,43,127,188,133,83,239,216,102,120,169,180,147,241,162,253,191,27,47)
IMAGE_DATA(222,175,113,124,113,46,80,238,81,28,184,15,211,132,124,80,123,161,233,135,62,205,20,241,114,145,175,211,132,30,55,9)
IMAGE_DATA(207,65,220,202,152,123,193,88,140,197,232,245,154,236,92,253,70,205,251,65,210,198,58,24,56,225,75,211,85,7,210,96)
IMAGE_DATA(192,124,23,248,224,235,159,52,207,129,185,64,190,147,15,227,209,7,154,19,205,141,98,195,188,192,56,77,197,60,157,110)
IMAGE_DATA(129,94,88,168,189,224,222,104,75,28,99,226,101,57,78,177,166,60,103,53,174,230,166,28,28,211,8,183,88,134,79,116)
IMAGE_DATA(238,217,90,118,3,195,142,93,215,28,186,6,27,189,179,96,220,134,163,204,131,193,75,93,117,158,135,98,64,245,71,185)
IMAGE_DATA(56,65,240,130,230,75,121,65,115,39,6,242,100,50,242,76,225,50,23,36,60,167,247,232,51,147,182,41,121,201,75,21)
IMAGE_DATA(51,30,115,220,70,101,141,55,22,111,93,26,250,239,61,229,136,210,170,235,166,209,11,44,126,94,239,149,9,155,143,101)
IMAGE_DATA(131,217,201,92,120,247,139,61,204,131,33,43,220,26,61,223,104,145,23,20,35,242,131,230,206,69,239,209,117,140,169,107)
IMAGE_DATA(56,124,119,228,18,56,120,199,129,249,129,72,88,226,24,128,121,142,107,26,95,215,132,156,159,42,242,104,178,224,33,247)
IMAGE_DATA(106,10,203,47,165,40,87,232,243,211,45,149,154,33,228,217,76,43,31,232,254,242,235,35,36,45,172,131,14,157,158,122)
IMAGE_DATA(158,199,126,235,137,28,48,247,205,3,19,167,80,198,79,62,124,180,242,151,102,199,96,228,90,79,160,117,243,7,191,68)
IMAGE_DATA(72,201,174,2,69,233,109,200,191,126,11,242,138,111,50,229,23,223,130,194,146,6,40,194,215,211,10,110,66,68,70,45)
IMAGE_DATA(156,77,169,134,160,84,181,66,210,170,225,220,213,106,56,159,94,3,161,25,53,16,126,173,6,34,50,107,225,66,86,45)
IMAGE_DATA(68,102,215,66,84,118,29,68,231,160,114,235,32,54,175,30,98,243,235,33,174,160,30,46,23,222,132,243,169,197,13,146)
IMAGE_DATA(22,238,9,222,155,184,96,235,58,175,107,66,236,115,192,210,47,15,108,2,139,224,189,133,63,168,60,24,246,77,211,30)
IMAGE_DATA(12,95,227,1,142,199,98,161,244,198,93,198,92,84,218,0,233,56,183,232,140,106,8,75,169,132,208,228,74,184,136,92)
IMAGE_DATA(73,56,119,242,160,224,58,121,113,11,82,242,235,32,48,233,6,248,95,81,42,0,31,159,73,70,225,119,130,80,193,169)
IMAGE_DATA(149,232,73,21,122,82,5,161,233,85,16,134,199,11,191,86,141,158,84,163,39,53,16,149,83,11,151,242,106,225,50,30)
IMAGE_DATA(39,30,125,120,177,119,159,55,154,155,3,82,169,236,201,213,7,51,96,195,145,76,216,114,60,27,204,49,247,173,228,249)
IMAGE_DATA(200,95,8,91,188,83,25,63,247,96,248,42,247,70,217,41,255,35,147,175,67,113,249,109,38,98,118,59,175,128,61,103)
IMAGE_DATA(10,97,111,80,33,124,31,84,196,68,143,247,156,45,4,23,84,48,178,22,160,15,138,178,219,168,6,8,73,173,82,243)
IMAGE_DATA(51,15,42,49,55,212,252,33,196,159,81,5,145,200,28,131,204,113,5,117,144,88,84,15,9,133,168,2,165,136,127,171)
IMAGE_DATA(141,139,123,115,99,255,92,175,254,239,175,197,220,223,132,185,191,205,39,7,44,48,246,59,253,11,192,238,108,17,216,7)
IMAGE_DATA(43,96,216,10,119,77,15,86,63,232,1,173,11,169,185,85,80,82,113,27,242,48,158,63,157,43,2,231,192,124,84,65)
IMAGE_DATA(147,114,240,207,131,68,204,233,210,27,119,160,12,117,14,57,3,208,131,64,33,7,136,59,28,189,140,198,207,16,219,21)
IMAGE_DATA(228,77,44,84,42,65,44,17,127,60,214,129,20,215,242,230,240,143,95,230,112,124,221,97,202,253,44,48,67,126,203,83)
IMAGE_DATA(249,96,29,80,8,246,65,10,112,8,81,128,61,178,112,126,181,7,7,212,123,15,124,28,126,69,1,101,85,119,32,27)
IMAGE_DATA(243,217,198,55,7,236,229,121,45,146,173,95,46,68,164,85,66,69,245,93,40,175,190,195,242,60,42,187,134,177,38,41)
IMAGE_DATA(52,153,181,165,205,207,61,248,123,191,215,7,54,163,6,58,172,242,204,0,234,251,166,152,251,219,133,220,183,13,84,243)
IMAGE_DATA(59,98,14,79,222,238,131,220,154,30,140,16,60,176,62,28,5,53,245,247,160,180,242,14,88,249,100,129,141,95,78,171)
IMAGE_DATA(180,211,39,27,18,48,198,85,181,255,129,98,60,22,229,245,21,45,181,132,127,182,201,215,235,154,138,253,211,207,191,244)
IMAGE_DATA(250,234,67,25,176,145,215,62,246,253,157,167,213,185,239,112,14,249,67,21,176,55,170,12,6,9,189,80,236,193,16,92)
IMAGE_DATA(23,170,235,126,133,155,13,247,192,53,164,16,172,78,100,193,142,54,200,204,251,26,59,94,221,205,123,144,129,117,212,22)
IMAGE_DATA(126,79,121,120,98,83,252,47,189,249,225,191,214,32,255,166,163,153,108,221,163,218,255,22,107,255,187,179,200,142,252,142)
IMAGE_DATA(2,191,83,184,2,190,222,23,161,218,19,112,153,187,158,135,134,59,191,67,30,246,47,83,175,12,216,126,244,90,155,21)
IMAGE_DATA(152,88,1,183,241,152,229,152,7,196,215,108,126,173,30,144,128,61,160,41,254,193,179,214,58,137,123,159,229,169,60,141)
IMAGE_DATA(218,167,220,119,10,83,192,174,8,5,184,68,151,192,208,229,63,171,216,223,152,235,12,151,210,138,225,254,253,63,192,35)
IMAGE_DATA(188,8,249,211,219,69,107,61,210,128,198,157,187,191,35,95,93,171,227,79,234,210,181,219,223,244,241,79,51,245,184,200)
IMAGE_DATA(122,223,81,206,175,92,247,116,241,59,71,42,192,92,126,21,222,153,183,155,241,255,125,134,3,252,246,219,125,54,215,21)
IMAGE_DATA(110,201,176,222,51,173,93,180,218,61,21,178,48,247,201,215,236,242,134,54,241,247,126,229,213,183,37,122,122,224,162,221)
IMAGE_DATA(23,42,56,191,153,79,46,236,144,235,231,223,19,93,140,123,92,47,198,63,98,185,27,99,47,175,251,15,44,115,77,194)
IMAGE_DATA(121,167,180,155,130,146,42,216,177,175,215,220,109,19,255,235,111,15,24,172,47,254,43,61,210,65,197,127,82,201,175,234)
IMAGE_DATA(253,231,30,228,223,29,133,30,196,40,48,7,246,192,108,51,111,54,71,138,213,215,251,175,192,114,244,160,189,228,125,177)
IMAGE_DATA(152,29,187,234,214,61,189,252,141,174,255,130,222,29,244,193,40,125,241,215,203,175,35,254,156,127,174,189,63,204,222,118)
IMAGE_DATA(132,205,49,19,249,23,126,159,0,75,246,39,182,155,14,225,185,180,249,91,210,251,184,6,252,243,195,49,250,248,87,184)
IMAGE_DATA(167,221,111,73,254,115,254,125,9,37,240,49,174,255,52,110,212,255,10,159,57,199,193,130,239,227,219,77,126,177,165,236)
IMAGE_DATA(216,101,120,236,214,230,62,233,173,1,131,134,233,227,95,176,43,172,180,37,253,143,241,71,227,90,112,73,1,11,247,133)
IMAGE_DATA(193,31,127,252,193,230,57,119,87,44,204,219,29,215,46,154,131,199,138,207,173,97,199,205,195,253,112,107,99,79,122,181)
IMAGE_DATA(255,27,131,244,241,79,222,224,22,186,22,249,55,29,213,179,254,225,250,191,11,215,127,231,11,168,139,232,65,180,50,7)
IMAGE_DATA(156,209,131,162,234,6,54,79,103,255,28,152,235,20,11,115,218,65,83,237,98,224,238,175,255,101,199,77,40,108,125,236)
IMAGE_DATA(73,221,123,244,124,85,95,255,51,158,178,108,231,218,195,25,108,253,215,220,255,104,238,255,104,255,163,157,3,228,65,120)
IMAGE_DATA(65,45,155,231,85,197,77,152,100,19,13,51,190,139,105,155,236,99,224,135,51,185,112,235,206,111,80,139,123,202,38,247)
IMAGE_DATA(252,122,98,79,50,48,52,236,172,143,191,103,255,247,198,172,209,181,255,61,35,226,23,215,0,207,1,193,131,93,209,69)
IMAGE_DATA(192,199,90,247,100,152,108,27,213,38,141,219,17,9,101,120,13,196,247,191,45,189,230,17,43,60,165,168,94,31,59,141)
IMAGE_DATA(206,221,94,120,133,95,251,179,235,31,95,245,181,191,118,13,136,115,128,123,64,181,16,41,228,64,13,206,249,99,203,11)
IMAGE_DATA(48,113,103,100,171,52,198,34,2,130,175,148,67,21,238,39,138,241,90,50,161,141,177,223,98,179,167,89,247,0,190,241)
IMAGE_DATA(196,53,80,116,239,103,135,92,221,3,30,200,1,242,224,130,166,7,78,23,139,224,6,230,42,181,194,164,220,90,24,97)
IMAGE_DATA(22,6,99,45,35,90,164,97,219,194,192,51,180,0,42,113,207,95,86,117,183,77,61,143,116,25,53,240,253,161,227,37)
IMAGE_DATA(205,184,7,244,62,235,1,66,15,20,122,128,170,6,68,57,192,250,128,80,7,42,15,168,31,160,15,123,113,95,120,23)
IMAGE_DATA(247,194,245,183,127,131,107,56,247,57,142,49,140,105,164,89,211,26,186,37,20,252,47,151,176,251,7,37,216,239,83,176)
IMAGE_DATA(151,52,151,189,49,254,152,220,58,232,210,237,153,23,155,19,255,206,207,244,232,75,61,64,117,255,139,106,224,52,214,128)
IMAGE_DATA(142,28,80,121,16,46,242,65,240,98,111,84,49,203,131,130,210,6,40,193,235,119,138,231,116,187,40,48,222,24,2,131)
IMAGE_DATA(77,207,51,206,143,80,67,240,241,251,155,206,193,8,244,199,246,68,6,251,124,81,249,109,40,40,107,128,211,120,237,215)
IMAGE_DATA(220,125,94,99,236,177,249,117,112,56,40,62,175,57,236,194,144,45,118,137,172,84,214,0,191,7,244,96,14,232,243,128)
IMAGE_DATA(203,17,175,3,67,210,171,216,189,205,124,212,245,10,172,227,236,26,56,20,86,8,78,167,50,193,193,55,19,92,131,242)
IMAGE_DATA(32,52,185,130,197,154,62,163,64,246,208,148,74,88,237,153,209,230,184,95,206,175,135,200,172,90,120,215,184,121,185,207)
IMAGE_DATA(249,187,247,121,107,232,90,225,254,247,22,118,255,91,217,7,173,3,10,148,57,208,136,7,212,19,89,95,20,68,143,29)
IMAGE_DATA(201,27,84,72,106,37,164,97,44,242,138,111,65,46,230,116,142,32,122,76,247,134,51,145,39,248,74,5,152,31,207,130)
IMAGE_DATA(37,110,105,32,199,199,109,97,39,93,204,174,69,255,171,105,221,51,106,65,252,105,116,92,230,150,112,135,255,254,193,239)
IMAGE_DATA(131,90,97,14,104,212,129,150,7,42,31,68,226,175,211,231,108,131,139,96,119,104,49,28,138,46,3,159,203,21,224,19)
IMAGE_DATA(87,14,7,35,75,192,12,243,108,177,107,42,44,253,229,42,44,119,191,10,166,222,153,144,44,170,251,132,86,176,71,231)
IMAGE_DATA(212,194,57,100,31,62,97,218,151,146,150,255,77,128,172,235,11,47,191,163,202,1,225,94,32,237,135,233,94,176,173,80)
IMAGE_DATA(7,170,60,16,251,160,67,244,30,83,136,210,55,218,79,209,154,66,125,133,142,77,204,92,255,254,57,141,221,203,111,138)
IMAGE_DATA(187,41,246,243,25,213,224,159,92,9,50,89,171,127,11,55,156,99,113,44,113,189,151,114,45,160,253,32,237,7,152,7)
IMAGE_DATA(148,7,129,69,170,60,80,229,66,136,136,85,196,204,185,233,243,118,42,246,2,246,187,202,55,88,231,98,126,251,128,60)
IMAGE_DATA(236,121,55,219,133,253,181,119,141,71,35,135,65,43,249,165,82,153,204,136,175,5,84,7,91,133,94,192,243,128,106,129)
IMAGE_DATA(247,68,238,131,216,11,213,107,66,174,80,222,16,251,78,140,59,177,211,53,182,118,236,105,254,173,225,38,69,97,189,159)
IMAGE_DATA(79,87,178,187,158,77,161,223,62,219,250,55,0,6,253,140,199,127,65,117,192,246,132,130,7,60,15,172,228,5,96,237)
IMAGE_DATA(95,200,114,129,124,96,215,9,65,10,13,209,107,42,110,244,140,250,168,133,192,110,170,149,251,30,145,215,213,121,223,2)
IMAGE_DATA(110,234,243,212,235,168,222,79,39,85,194,177,248,10,236,121,29,186,72,218,231,239,96,58,126,110,117,50,149,246,68,27)
IMAGE_DATA(189,53,61,176,192,117,113,135,80,15,223,146,15,1,133,108,175,108,43,136,30,171,184,49,230,244,89,186,166,160,53,149)
IMAGE_DATA(234,158,126,99,229,236,75,49,246,113,121,117,45,226,102,235,59,126,231,66,102,13,4,167,85,129,60,233,6,28,141,47)
IMAGE_DATA(7,227,81,159,204,147,180,62,239,181,7,121,216,97,233,143,241,183,232,222,192,70,81,45,80,12,137,135,251,64,177,37)
IMAGE_DATA(78,242,131,196,152,241,53,218,63,80,204,169,135,210,158,146,60,164,190,42,142,61,253,206,215,18,238,203,66,173,135,93)
IMAGE_DATA(171,129,51,169,85,224,139,223,63,130,235,201,166,61,199,35,104,190,237,196,46,246,192,112,185,219,149,187,148,7,84,11)
IMAGE_DATA(212,19,41,134,220,7,202,7,230,133,159,90,244,156,250,5,189,191,77,136,57,221,91,33,15,201,75,206,190,242,192,213)
IMAGE_DATA(102,49,107,196,28,247,53,33,87,177,214,113,175,228,131,251,196,195,177,101,224,232,155,80,34,105,143,191,251,209,61,104)
IMAGE_DATA(13,53,92,250,83,124,3,245,3,218,27,80,61,16,15,197,147,123,65,156,92,244,156,100,202,185,49,230,244,61,250,62)
IMAGE_DATA(93,103,113,254,8,204,223,102,113,11,117,78,253,157,98,238,39,228,251,193,152,50,112,146,167,84,74,218,63,238,186,60)
IMAGE_DATA(232,100,98,127,54,159,174,147,41,23,136,135,229,3,178,81,78,108,22,137,158,211,235,20,111,198,141,159,167,239,137,217)
IMAGE_DATA(55,161,135,77,115,215,49,238,80,204,245,179,84,231,216,223,79,36,40,99,238,30,85,10,230,158,225,153,146,135,23,119)
IMAGE_DATA(237,65,181,208,105,200,236,117,206,171,144,131,249,128,241,164,124,166,107,6,226,228,162,231,244,58,189,79,159,163,207,83)
IMAGE_DATA(174,139,235,158,174,205,116,215,119,29,123,143,246,239,20,239,179,87,149,220,148,235,84,231,30,209,165,224,122,161,4,102)
IMAGE_DATA(44,179,112,145,60,252,184,235,26,6,120,173,216,127,169,91,210,189,111,60,210,25,27,253,118,76,156,92,244,156,94,167)
IMAGE_DATA(247,87,104,113,147,236,176,63,138,251,89,92,62,253,13,75,45,139,117,24,214,4,237,221,3,49,207,79,37,223,0,159)
IMAGE_DATA(4,37,183,103,76,41,184,225,158,121,95,248,117,120,254,197,87,244,254,158,243,103,120,128,155,164,206,111,141,156,181,106)
IMAGE_DATA(185,192,71,156,92,218,188,218,162,248,114,222,136,172,26,204,239,106,198,124,6,115,252,52,198,154,122,58,173,229,94,177)
IMAGE_DATA(66,188,145,123,127,196,117,248,100,193,58,107,92,223,141,30,49,59,31,108,109,48,236,248,196,115,239,140,249,108,125,83)
IMAGE_DATA(204,92,46,193,133,140,53,24,243,154,106,58,0,251,184,28,247,46,39,19,111,192,241,120,30,235,50,248,5,235,251,199)
IMAGE_DATA(11,74,238,79,23,110,176,125,178,243,211,61,36,127,13,110,237,65,115,162,124,48,250,91,191,129,99,39,173,255,57,124)
IMAGE_DATA(185,123,122,163,252,114,33,190,62,2,175,55,242,30,142,85,51,187,50,230,18,88,227,124,226,98,255,129,67,38,26,118)
IMAGE_DATA(232,200,247,115,127,69,118,241,96,62,208,191,50,131,14,93,187,191,242,246,240,1,227,76,182,76,221,236,17,197,217,247)
IMAGE_DATA(226,53,225,161,75,184,110,93,42,131,3,2,47,213,180,205,177,184,226,175,182,239,243,249,112,194,236,165,189,250,189,61)
IMAGE_DATA(68,102,96,248,180,112,204,255,215,255,31,200,189,80,237,69,145,169,203,83,70,93,122,26,117,125,182,55,233,137,167,140)
IMAGE_DATA(122,208,117,150,142,239,200,36,127,253,88,183,102,72,245,232,241,248,19,199,255,0,202,41,70,100,0,0,0,0,0,0)
IMAGE_END_DATA(4224, 1)

View file

@ -0,0 +1,22 @@
description "Chromium Embedded Framework widget\377";
charset "UTF-8";
uses
CtrlLib;
library(LINUX) "libcef.so cef_dll_wrapper";
file
ChromiumBrowser.iml,
ChromiumBrowser.usc,
ChromiumBrowser.h,
ChromiumBrowser.cpp,
ClientApp.h,
ClientApp.cpp,
ClientHandler.h,
ClientHandler.cpp;
mainconfig
"" = "GUI MT SSE2 USEMALLOC";

View file

@ -0,0 +1,28 @@
ctrl ChromiumBrowser {
group "Complex";
GetMinSize() { return Size(0, 0); }
GetStdSize() { return Size(130, 130); }
Frame SetFrame @1;
String StartPage;
Paint(w) {
r = GetRect();
DrawCtrlFrame(w, r, .SetFrame);
sz = Size(r.right - r.left, r.bottom - r.top);
DeflateRect(r);
sz = Size(r.right - r.left, r.bottom - r.top);
w.DrawRect(r.left, r.top, sz.cx, sz.cy, :SWhite);
img = "ChromiumBrowser:ChromiumBrowser.iml:chromium";
w.DrawImage(r.left, r.top, img);
}
Sample() {
.StartPage = "http://ultimatepp.org";
}
}

View file

@ -0,0 +1,56 @@
#include "ClientApp.h"
using namespace Upp;
ClientApp::ClientApp()
{
//Add our own JS functions to the list
functions.Add("JSExample1", THISBACK(JSExample1));
}
void ClientApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line)
{
//Extra command line switches
command_line->AppendSwitch("enable-media-stream");
command_line->AppendSwitch("no-sandbox");
}
void ClientApp::OnContextCreated(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context)
{
//Register our JS functions
CefRefPtr<CefV8Value> object = context->GetGlobal();
for(int f = 0; f < functions.GetCount(); f++){
CefRefPtr<CefV8Value> func = CefV8Value::CreateFunction(~functions.GetKey(f), this);
object->SetValue(~functions.GetKey(f), func, V8_PROPERTY_ATTRIBUTE_NONE);
}
}
void ClientApp::OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefDOMNode> node)
{
bool is_editable = (node.get() && node->IsEditable());
browser->SendProcessMessage(PID_BROWSER, CefProcessMessage::Create(is_editable ? "show_keyboard" : "hide_keyboard"));
}
bool ClientApp::Execute(const CefString& name, CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval, CefString& exception)
{
int f = functions.Find(name.ToString());
if (f >= 0){
functions[f].Execute(arguments, retval, exception);
return true;
}else{
RLOG(String("ERROR: Unknown native function: ") + name.ToString());
}
return false;
}
void ClientApp::JSExample1(const CefV8ValueList& args, CefRefPtr<CefV8Value>& retval, CefString& exc)
{
retval = CefV8Value::CreateString("Function that returns some string");
}

View file

@ -0,0 +1,60 @@
#ifndef _KioskChromium_CefApp_h_
#define _KioskChromium_CefApp_h_
#include <CtrlLib/CtrlLib.h>
#undef LOG
#undef DLOG
#undef CHECK
#undef LOG_INFO
#undef LOG_WARNING
#include "include/cef_app.h"
#include "include/cef_dom.h"
#undef LOG
#undef DLOG
#undef CHECK
#undef LOG_INFO
#undef LOG_WARNING
namespace Upp{
class ClientApp: public CefApp,
public CefBrowserProcessHandler,
public CefRenderProcessHandler,
public CefV8Handler
{
private:
CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() { return this; }
VectorMap<String, Callback3<const CefV8ValueList&, CefRefPtr<CefV8Value>&, CefString&> > functions;
void JSExample1(const CefV8ValueList&, CefRefPtr<CefV8Value>&, CefString&);
public:
typedef ClientApp CLASSNAME;
ClientApp();
virtual void OnBeforeCommandLineProcessing(const CefString& process_type,
CefRefPtr<CefCommandLine> command_line);
virtual void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context);
virtual void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) OVERRIDE;
virtual bool Execute(const CefString& name,
CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval,
CefString& exception) OVERRIDE;
IMPLEMENT_REFCOUNTING(ClientApp);
};
}
#endif

View file

@ -0,0 +1,89 @@
#include "ClientHandler.h"
#include "include/cef_task.h"
void ClientHandler::OnAfterCreated(CefRefPtr<CefBrowser> new_browser)
{
if (!browser.get()) {
// We need to keep the main child window, but not popup windows
browser = new_browser;
}
}
void ClientHandler::OnAddressChange(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& url)
{
PostCallback(callback1(WhenUrlChange, url.ToString()));
}
bool ClientHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser, const CefString& message, const CefString& source, int line)
{
ASSERT(CefCurrentlyOn(TID_UI));
PostCallback(callback3(WhenConsoleMessage, source.ToString(), line, message.ToString()));
return true;
}
bool ClientHandler::OnBeforePopup(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
const CefString& target_url,
const CefString& target_frame_name,
const CefPopupFeatures& popupFeatures,
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings,
bool* no_javascript_access)
{
RLOG(Upp::Format("Popup canceled, frame name: '%s', url '%s'", target_frame_name.ToString().c_str(), target_url.ToString().c_str()));
// Cancel popups
return true;
}
void ClientHandler::OnLoadError(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
ErrorCode errorCode,
const CefString& errorText,
const CefString& failedUrl)
{
frame->LoadString("<html><head></head><body><center><h1>Page not found</h1></center></body><html>", failedUrl);
}
bool ClientHandler::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser, CefProcessId source_process, CefRefPtr<CefProcessMessage> message)
{
if (message->GetName().ToString() == "show_keyboard"){
PostCallback(callback1(WhenKeyboard, true));
}else if (message->GetName().ToString() == "hide_keyboard"){
PostCallback(callback1(WhenKeyboard, false));
}else{
PostCallback(callback1(WhenMessage, message->GetName().ToString()));
}
return true;
}
void ClientHandler::OnTakeFocus(CefRefPtr<CefBrowser> browser, bool next )
{
PostCallback(WhenTakeFocus);
}
void ClientHandler::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefContextMenuParams> params,
CefRefPtr<CefMenuModel> model)
{
//Empty context menu
model->Clear();
}
bool ClientHandler::OnJSDialog(CefRefPtr<CefBrowser> browser, const CefString& origin_url,
const CefString& accept_lang, JSDialogType dialog_type,
const CefString& message_text, const CefString& default_prompt_text,
CefRefPtr<CefJSDialogCallback> callback, bool& suppress_message)
{
RLOG(message_text.ToString().c_str());
return false;
}

View file

@ -0,0 +1,107 @@
#ifndef _ClinetHandler_h
#define _ClinetHandler_h
#include <CtrlLib/CtrlLib.h>
#undef LOG
#undef DLOG
#undef CHECK
#undef LOG_INFO
#undef LOG_WARNING
#undef ITEM
#include "include/cef_client.h"
class ClientHandler : public CefClient, public CefLifeSpanHandler, public CefDisplayHandler,
public CefLoadHandler, public CefFocusHandler, public CefContextMenuHandler,
public CefJSDialogHandler
{
public:
ClientHandler( Upp::Callback1<Upp::String> & wuc,
Upp::Callback1<Upp::String> & wm,
Upp::Callback & tf,
Upp::Callback1<bool> & wk,
Upp::Callback3<Upp::String, int, Upp::String> & wcm):
browser(NULL), WhenUrlChange(wuc), WhenMessage(wm), WhenTakeFocus(tf),
WhenKeyboard(wk), WhenConsoleMessage(wcm) { }
~ClientHandler() { }
Upp::Callback1<Upp::String> & WhenUrlChange;
Upp::Callback1<Upp::String> & WhenMessage;
Upp::Callback & WhenTakeFocus;
Upp::Callback1<bool> & WhenKeyboard;
Upp::Callback3<Upp::String, int, Upp::String> & WhenConsoleMessage;
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE { return this; }
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE { return this; }
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() OVERRIDE { return this; }
// virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE { return this; }
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() OVERRIDE { return this; }
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() OVERRIDE { return this; }
virtual bool OnBeforePopup(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
const CefString& target_url,
const CefString& target_frame_name,
const CefPopupFeatures& popupFeatures,
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings,
bool* no_javascript_access) OVERRIDE;
virtual void OnLoadError(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
ErrorCode errorCode,
const CefString& errorText,
const CefString& failedUrl) OVERRIDE;
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
const CefString& url) OVERRIDE;
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
const CefString& message,
const CefString& source,
int line) OVERRIDE;
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE;
virtual void OnTakeFocus( CefRefPtr<CefBrowser> browser, bool next ) OVERRIDE;
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) OVERRIDE;
virtual bool OnJSDialog(CefRefPtr<CefBrowser> browser,
const CefString& origin_url,
const CefString& accept_lang,
JSDialogType dialog_type,
const CefString& message_text,
const CefString& default_prompt_text,
CefRefPtr<CefJSDialogCallback> callback,
bool& suppress_message) OVERRIDE;
CefRefPtr<CefBrowser> GetBrowser() { return browser; }
protected:
// The child browser window
CefRefPtr<CefBrowser> browser;
// Note that any of the IMPLEMENT_WHATEVER
// macros that come with CEF can (and do) set
// access modifiers, so you'll want them after
// everything else in your class or you may be
// in for a surprise when the access of a member
// isn't what you expect it to be!
IMPLEMENT_REFCOUNTING(ClientHandler);
};
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View file

@ -0,0 +1,4 @@
#ifndef _ChromiumBrowser_icpp_init_stub
#define _ChromiumBrowser_icpp_init_stub
#include "CtrlLib/init"
#endif

View file

@ -0,0 +1,18 @@
#ifndef _ChromiumBrowserExample_ChromiumBrowserExample_h
#define _ChromiumBrowserExample_ChromiumBrowserExample_h
#include <CtrlLib/CtrlLib.h>
#include <ChromiumBrowser/ChromiumBrowser.h>
using namespace Upp;
#define LAYOUTFILE <ChromiumBrowserExample/ChromiumBrowserExample.lay>
#include <CtrlCore/lay.h>
class ChromiumBrowserExample : public WithChromiumBrowserExampleLayout<TopWindow> {
public:
typedef ChromiumBrowserExample CLASSNAME;
ChromiumBrowserExample();
};
#endif

View file

@ -0,0 +1,271 @@
PREMULTIPLIED
IMAGE_ID(icon) IMAGE_META("exp", "")
IMAGE_ID(stop)
IMAGE_ID(go)
IMAGE_ID(refresh)
IMAGE_ID(back)
IMAGE_ID(forward)
IMAGE_BEGIN_DATA
IMAGE_DATA(120,156,237,155,121,84,84,215,29,199,71,52,201,105,155,166,127,180,57,105,122,210,45,177,109,106,219,180,169,73,142,73)
IMAGE_DATA(220,151,36,164,238,9,146,136,38,70,141,6,21,197,5,81,16,89,68,144,197,13,151,10,178,137,8,234,176,12,139,2)
IMAGE_DATA(202,42,32,171,2,3,35,219,176,12,187,236,138,218,152,212,252,250,251,221,121,119,230,205,56,12,171,49,61,199,123,206)
IMAGE_DATA(247,56,235,123,247,243,253,45,247,190,55,40,153,46,153,46,121,50,158,140,39,227,201,120,204,99,236,248,241,166,207,144)
IMAGE_DATA(240,177,201,227,158,204,35,26,38,31,174,247,254,237,98,187,83,51,62,117,141,56,188,220,93,38,255,204,61,246,193,231)
IMAGE_DATA(251,98,129,235,51,65,203,81,22,110,209,85,22,123,162,2,204,118,133,206,95,104,227,251,202,196,137,107,158,122,220,0)
IMAGE_DATA(195,24,99,102,175,217,247,27,115,23,169,199,114,247,24,88,238,174,230,35,214,21,30,113,76,95,120,106,197,95,227,94)
IMAGE_DATA(208,119,150,185,197,160,23,50,176,216,43,131,79,246,68,68,126,184,221,255,207,18,201,244,113,143,27,204,232,152,48,225)
IMAGE_DATA(233,249,54,254,239,126,234,26,213,75,115,39,6,98,17,179,19,239,74,207,120,88,233,21,15,171,188,212,255,210,115,238)
IMAGE_DATA(131,33,15,150,238,141,102,194,227,194,226,93,161,31,143,55,101,245,242,67,26,38,166,86,255,126,221,124,79,228,125,245)
IMAGE_DATA(92,101,108,222,203,136,29,165,207,78,220,171,188,47,192,106,65,171,12,121,224,206,61,144,177,227,45,117,37,254,104,204)
IMAGE_DATA(133,40,48,119,137,130,5,59,131,166,224,121,199,60,102,110,58,255,56,51,39,169,130,230,69,243,211,225,23,199,223,67)
IMAGE_DATA(228,1,139,253,5,230,1,253,75,207,191,64,126,198,238,33,138,191,59,143,191,140,29,91,204,191,196,37,18,62,118,146)
IMAGE_DATA(86,62,70,15,76,76,55,251,77,51,115,142,100,115,49,199,121,137,61,160,186,93,38,228,128,33,15,190,240,140,23,41)
IMAGE_DATA(78,135,93,28,123,58,142,58,247,145,29,243,159,206,67,231,91,130,231,253,216,57,2,62,114,146,62,152,97,229,243,202)
IMAGE_DATA(247,236,131,201,66,135,179,65,31,59,69,128,25,206,129,241,115,15,92,13,120,32,202,3,222,11,62,231,61,79,224,22)
IMAGE_DATA(215,189,33,118,253,216,211,121,233,252,200,15,139,29,165,240,161,77,200,10,201,247,179,134,142,89,184,235,108,33,157,147)
IMAGE_DATA(206,109,212,3,87,113,45,104,125,88,46,244,5,138,51,143,181,150,91,219,247,53,113,23,114,75,203,30,169,195,190,104)
IMAGE_DATA(247,121,152,191,235,44,188,111,19,188,251,17,123,96,98,186,227,76,217,60,251,179,176,208,225,60,60,228,129,94,45,104)
IMAGE_DATA(234,129,251,32,120,161,245,67,43,45,179,129,152,51,246,72,61,246,8,17,251,57,152,107,23,14,56,55,152,97,29,96)
IMAGE_DATA(245,136,60,24,59,107,107,112,246,7,182,161,240,225,206,48,80,123,112,78,237,129,163,218,3,170,71,222,15,212,249,16)
IMAGE_DATA(165,211,23,184,150,106,250,100,180,104,109,211,101,54,196,173,159,243,250,236,239,109,63,13,179,182,134,192,91,171,247,79)
IMAGE_DATA(146,140,110,63,24,51,101,99,128,207,204,45,167,96,246,182,211,240,254,118,244,96,71,24,59,239,2,60,63,205,67,156)
IMAGE_DATA(11,26,31,250,241,162,63,153,235,49,63,204,29,193,188,166,115,81,254,205,199,24,252,107,103,56,124,96,139,236,54,106)
IMAGE_DATA(246,233,155,131,153,36,47,78,252,241,104,193,255,113,145,195,223,249,113,103,108,9,70,15,66,152,215,116,222,127,9,185)
IMAGE_DATA(176,0,115,97,145,48,183,143,152,23,234,57,243,218,80,115,104,185,250,147,134,215,89,251,125,242,149,115,139,99,78,121)
IMAGE_DATA(248,62,230,227,28,100,159,185,245,148,134,157,52,205,58,232,54,78,253,233,17,195,143,31,255,204,155,43,79,124,251,198)
IMAGE_DATA(170,227,58,199,23,231,2,229,30,197,129,251,176,80,200,7,173,23,186,126,24,211,71,34,94,46,242,117,161,208,227,230)
IMAGE_DATA(226,57,136,91,29,243,80,152,133,177,152,177,69,151,157,107,234,198,147,71,37,35,172,131,181,39,242,108,173,2,229,240)
IMAGE_DATA(218,178,195,240,214,151,39,116,207,129,185,64,190,147,15,239,161,15,52,39,154,27,197,134,121,129,113,90,128,121,186,104)
IMAGE_DATA(55,122,177,91,235,5,247,70,95,226,24,19,47,203,113,138,53,229,57,171,113,45,55,229,224,204,126,184,197,122,117,145)
IMAGE_DATA(245,139,195,101,159,56,123,205,207,54,133,220,128,109,97,21,48,103,107,56,243,96,210,90,95,131,231,161,24,80,253,81)
IMAGE_DATA(46,190,47,120,65,243,165,188,160,185,19,3,121,50,15,121,230,115,57,8,18,158,211,123,244,153,185,118,106,94,242,82)
IMAGE_DATA(195,140,199,156,179,77,93,227,253,197,219,160,172,131,90,17,101,88,215,77,235,253,139,78,110,9,45,135,237,103,43,193)
IMAGE_DATA(62,162,26,254,102,113,136,121,240,246,58,191,126,207,55,67,228,5,197,136,252,160,185,115,209,123,116,29,99,235,155,10)
IMAGE_DATA(251,206,92,5,207,176,92,112,8,204,128,213,94,113,152,231,184,166,241,117,77,200,249,5,34,143,230,9,30,114,175,230)
IMAGE_DATA(179,252,82,139,114,133,62,191,200,81,173,197,66,158,125,228,44,133,37,246,167,166,74,134,88,7,211,62,117,252,5,143)
IMAGE_DATA(253,206,243,85,224,16,169,132,229,222,201,140,159,124,120,119,189,255,160,99,48,205,58,24,104,221,60,26,85,8,197,149)
IMAGE_DATA(29,160,106,190,3,53,141,183,65,217,112,139,169,166,225,54,212,53,245,65,61,190,46,175,189,5,105,138,110,184,88,220)
IMAGE_DATA(9,9,37,90,37,201,59,225,82,105,39,92,46,235,130,100,69,23,164,222,232,130,180,242,110,72,175,232,134,140,202,110)
IMAGE_DATA(200,172,236,129,172,42,84,117,15,228,40,123,33,167,166,23,114,107,123,33,175,238,22,190,214,213,39,25,226,158,96,237)
IMAGE_DATA(137,220,157,155,67,111,8,177,175,2,199,40,37,236,141,175,135,215,87,28,213,120,48,121,195,192,30,76,217,20,4,94)
IMAGE_DATA(103,115,160,249,230,61,198,92,223,220,7,101,56,183,44,69,39,164,20,183,67,114,81,59,92,65,174,235,56,119,242,160)
IMAGE_DATA(182,145,188,184,13,197,53,61,16,127,253,38,196,94,83,43,14,31,95,40,66,225,119,18,80,137,37,237,232,73,7,122)
IMAGE_DATA(210,1,201,101,29,144,130,199,75,189,209,137,158,116,162,39,93,144,89,213,13,87,149,221,144,135,199,201,71,31,194,146)
IMAGE_DATA(174,190,58,216,28,120,233,165,73,63,218,120,74,1,91,207,148,195,142,115,149,224,128,185,239,44,171,65,254,58,216,17)
IMAGE_DATA(86,194,248,185,7,83,172,2,250,101,167,252,207,40,106,132,134,214,59,76,196,236,119,89,5,135,46,212,129,79,66,29)
IMAGE_DATA(28,73,168,103,162,199,135,46,214,193,97,84,34,178,214,162,15,170,150,59,168,62,72,42,233,208,242,51,15,218,49,55)
IMAGE_DATA(180,252,73,196,175,232,128,12,100,206,70,230,220,218,30,40,172,239,133,130,58,84,173,90,196,159,93,209,25,48,216,216)
IMAGE_DATA(91,184,199,190,105,141,185,111,131,185,111,39,173,130,221,24,123,151,216,90,112,191,88,15,30,137,42,152,188,46,64,215)
IMAGE_DATA(131,141,15,123,64,235,66,73,117,7,52,181,221,1,37,198,243,196,165,122,56,16,95,131,170,29,80,158,177,74,40,196)
IMAGE_DATA(156,110,190,121,23,90,80,151,144,51,14,61,136,23,114,128,184,83,209,203,44,252,12,177,93,67,222,194,58,181,10,196)
IMAGE_DATA(18,241,231,99,29,140,199,181,124,48,252,150,1,197,231,54,159,166,220,175,0,123,228,119,140,174,1,215,184,58,240,72)
IMAGE_DATA(80,129,103,146,10,60,144,133,243,107,61,8,212,176,79,198,199,169,215,84,208,210,113,23,42,49,159,247,70,86,129,135)
IMAGE_DATA(76,57,36,185,69,85,67,154,188,29,218,58,239,65,107,231,93,150,231,153,149,93,140,245,186,74,151,89,95,250,252,220)
IMAGE_DATA(131,232,180,162,127,12,162,6,158,178,10,86,0,245,125,91,204,253,93,66,238,187,197,107,249,189,48,135,231,237,146,34)
IMAGE_DATA(183,174,7,83,5,15,92,79,103,66,87,239,125,104,110,191,11,206,210,10,216,27,85,53,44,185,72,43,161,0,99,220)
IMAGE_DATA(209,253,31,104,192,99,81,94,95,211,211,80,248,211,229,77,155,7,138,189,217,158,152,63,109,12,81,192,54,94,251,216)
IMAGE_DATA(247,93,98,180,185,239,121,9,249,147,85,224,147,217,2,255,20,122,161,216,131,183,113,93,232,236,249,26,110,245,221,7)
IMAGE_DATA(223,164,58,112,62,95,1,78,35,144,125,216,13,118,188,158,91,247,65,129,117,52,18,254,92,101,119,225,64,252,159,29)
IMAGE_DATA(76,55,221,132,252,54,225,229,108,221,163,218,223,131,181,191,239,34,178,35,191,151,192,239,157,170,130,47,143,165,105,246)
IMAGE_DATA(4,92,14,190,151,161,239,238,183,160,196,254,101,27,170,128,93,225,55,70,172,248,194,54,184,131,199,108,197,60,32,190)
IMAGE_DATA(65,243,235,245,128,2,236,1,3,241,175,241,45,244,22,247,62,199,104,165,78,237,83,238,123,167,168,96,127,154,10,14)
IMAGE_DATA(103,53,193,59,150,39,53,236,175,154,31,128,171,242,6,120,240,224,59,8,74,173,71,254,178,81,145,117,144,28,104,220)
IMAGE_DATA(189,247,45,242,245,12,59,254,164,99,65,231,127,105,140,223,210,191,228,10,235,125,225,156,95,189,238,25,226,63,144,161)
IMAGE_DATA(2,7,89,41,252,117,233,65,198,255,251,197,158,240,205,55,15,216,92,215,249,21,193,150,96,249,168,104,99,64,9,84)
IMAGE_DATA(96,238,147,175,149,173,125,35,226,143,72,205,255,139,196,72,15,92,23,80,218,198,249,237,165,213,224,36,51,206,127,40)
IMAGE_DATA(171,1,247,184,161,140,127,170,165,31,99,111,237,249,15,124,229,123,29,231,93,60,106,74,184,222,198,142,221,216,117,111)
IMAGE_DATA(68,252,177,89,242,73,198,226,191,62,168,12,52,252,17,106,126,77,239,191,244,48,255,193,76,244,32,91,133,57,112,8)
IMAGE_DATA(204,236,195,216,28,41,86,95,30,191,6,150,232,193,104,41,236,74,3,59,118,199,237,251,70,249,251,93,255,5,197,231)
IMAGE_DATA(86,76,55,22,127,163,252,6,226,207,249,205,61,98,193,204,238,12,155,99,57,242,175,56,82,0,171,143,23,142,154,66)
IMAGE_DATA(240,92,250,252,67,233,125,154,248,103,43,102,26,229,15,44,123,48,148,252,231,252,199,10,154,96,54,174,255,52,110,246)
IMAGE_DATA(126,13,159,28,200,133,207,143,228,143,154,162,114,154,217,177,91,240,216,195,205,125,82,92,150,98,242,0,245,223,60,148)
IMAGE_DATA(254,199,248,179,112,45,184,170,130,21,199,82,224,187,239,190,99,243,52,223,159,3,75,15,230,142,138,150,224,177,242,171)
IMAGE_DATA(187,216,113,149,184,31,30,110,236,73,145,41,133,255,52,198,255,149,127,73,178,53,242,219,132,27,89,255,112,253,223,143)
IMAGE_DATA(235,255,129,116,212,21,244,32,75,157,3,7,208,131,250,206,62,54,207,3,177,85,96,238,157,3,75,70,65,11,220,179)
IMAGE_DATA(225,222,215,255,101,199,45,168,27,126,236,73,129,145,201,47,27,235,127,184,254,187,88,159,86,176,245,95,119,255,163,187)
IMAGE_DATA(255,163,253,143,126,14,144,7,169,181,221,108,158,165,170,91,48,119,111,22,44,222,151,61,50,121,100,195,209,11,213,112)
IMAGE_DATA(251,238,55,208,141,123,202,1,247,252,70,98,79,154,179,124,249,79,140,241,175,56,152,50,115,147,161,253,239,5,17,191)
IMAGE_DATA(184,6,120,14,8,30,236,207,170,7,62,172,3,138,96,158,91,230,136,52,199,41,3,90,240,26,136,239,127,135,122,205)
IMAGE_DATA(163,163,154,238,94,99,236,52,62,113,146,253,142,95,251,179,235,159,72,237,181,191,126,13,136,115,128,123,64,181,144,33)
IMAGE_DATA(228,64,23,206,121,182,99,58,124,224,146,49,44,205,220,157,6,137,215,90,161,3,247,19,13,120,45,89,48,194,216,103)
IMAGE_DATA(86,180,15,234,30,192,134,96,92,3,69,247,126,156,100,218,30,240,80,14,144,7,233,186,30,120,95,169,135,155,152,171)
IMAGE_DATA(212,10,175,87,119,195,84,251,20,152,229,152,54,36,77,182,75,129,224,228,90,104,199,61,127,75,199,189,17,245,60,82)
IMAGE_DATA(30,93,255,102,148,189,39,25,196,61,160,175,88,15,16,122,160,208,3,52,53,32,202,1,214,7,132,58,208,120,64,253)
IMAGE_DATA(0,125,240,193,125,225,61,220,11,247,222,249,6,110,224,220,151,120,101,51,166,105,246,3,235,157,29,201,16,155,215,196)
IMAGE_DATA(238,31,52,97,191,47,198,94,50,88,246,254,248,179,171,123,192,35,32,252,87,131,137,255,194,93,103,95,161,30,160,185)
IMAGE_DATA(255,69,53,16,131,53,96,32,7,52,30,164,138,124,16,188,240,201,108,96,121,80,219,220,7,77,120,253,78,241,92,228)
IMAGE_DATA(158,9,111,108,75,130,73,182,151,25,231,187,168,183,241,241,155,54,151,96,42,250,227,118,94,193,62,95,223,122,7,106)
IMAGE_DATA(91,250,32,6,175,253,6,187,207,235,143,61,167,166,7,82,202,218,149,131,97,23,134,201,134,192,210,118,117,13,240,123)
IMAGE_DATA(64,15,231,128,49,15,184,188,240,58,48,169,172,131,221,219,172,65,53,182,97,29,87,118,65,72,74,29,120,71,151,131)
IMAGE_DATA(103,100,57,248,38,40,33,185,168,141,197,154,62,163,66,246,228,226,118,216,24,172,24,113,220,243,106,122,33,163,162,27)
IMAGE_DATA(66,83,7,151,251,156,127,217,190,164,119,172,133,251,223,59,216,253,111,117,31,116,141,171,85,231,64,63,30,80,79,100)
IMAGE_DATA(125,81,16,61,246,34,111,80,73,37,237,32,199,88,40,27,110,67,53,230,116,149,32,122,76,247,134,203,145,39,241,90)
IMAGE_DATA(27,56,156,171,128,213,126,114,144,225,227,145,176,147,174,84,118,163,255,157,48,205,204,236,217,33,196,159,198,211,27,130)
IMAGE_DATA(75,239,242,223,63,248,125,80,103,204,1,157,58,208,243,64,227,131,72,252,117,250,156,91,98,61,28,76,110,128,144,172)
IMAGE_DATA(22,144,230,181,129,52,183,21,78,101,52,129,61,230,217,42,223,18,88,235,95,10,150,1,165,96,27,86,14,69,162,186)
IMAGE_DATA(47,24,6,123,86,85,55,92,66,246,176,140,202,207,36,67,255,155,0,19,115,199,168,191,106,114,64,184,23,72,251,97)
IMAGE_DATA(186,23,236,38,212,129,38,15,196,62,24,16,189,199,148,164,246,141,246,83,180,166,80,95,161,99,19,51,215,154,147,114)
IMAGE_DATA(118,47,127,32,238,129,216,47,43,58,33,182,168,29,38,78,28,246,111,225,227,214,7,200,11,183,132,170,215,2,218,15)
IMAGE_DATA(210,126,128,121,64,121,16,95,175,201,3,77,46,36,137,88,69,204,156,155,62,239,174,97,175,101,191,171,108,192,58,23)
IMAGE_DATA(243,123,196,41,177,231,221,26,21,246,99,49,133,51,144,99,236,48,249,199,60,63,97,194,179,124,45,160,58,216,41,244)
IMAGE_DATA(2,158,7,84,11,188,39,114,31,196,94,104,94,19,114,133,242,134,216,93,48,238,196,78,215,216,250,177,167,249,15,135)
IMAGE_DATA(155,237,113,176,222,47,151,169,217,207,229,53,211,111,159,35,253,27,128,177,95,250,100,89,80,29,176,61,161,224,1,207)
IMAGE_DATA(3,103,89,45,184,198,214,177,92,32,31,216,117,66,130,74,71,244,154,134,27,61,163,62,186,91,96,183,213,203,253,160)
IMAGE_DATA(140,70,109,222,15,129,155,250,60,245,58,170,247,152,235,237,112,54,191,13,222,50,181,120,78,50,58,127,7,243,244,134)
IMAGE_DATA(0,121,9,237,137,182,133,233,122,176,27,215,69,39,161,30,246,144,15,113,117,108,175,236,38,136,30,107,184,49,230,244)
IMAGE_DATA(89,186,166,160,53,149,234,158,126,99,229,236,107,49,246,185,202,158,33,113,179,245,29,191,147,94,222,5,137,242,14,144)
IMAGE_DATA(93,191,9,225,249,173,112,228,162,124,169,100,248,121,175,63,200,195,167,54,4,41,110,211,189,129,109,162,90,160,24,18)
IMAGE_DATA(15,247,129,98,75,156,228,7,137,49,227,107,180,127,160,152,83,15,165,61,37,121,72,125,85,28,123,250,157,111,40,220)
IMAGE_DATA(121,66,173,167,220,232,130,11,37,29,16,137,223,63,131,235,137,127,122,67,26,205,119,148,216,197,30,140,179,10,86,220)
IMAGE_DATA(163,60,160,90,160,158,72,49,228,62,80,62,48,47,162,180,162,231,212,47,232,125,59,33,230,116,111,133,60,36,47,57)
IMAGE_DATA(251,250,192,210,65,49,235,196,28,247,53,73,165,88,235,184,87,146,226,62,241,116,78,11,156,204,104,108,146,140,198,223)
IMAGE_DATA(253,24,30,180,134,142,219,16,84,214,71,253,128,246,6,84,15,196,67,241,228,94,16,39,23,61,39,217,114,110,140,57)
IMAGE_DATA(125,143,190,79,215,89,156,63,13,243,119,80,220,66,157,83,127,167,152,71,9,249,126,42,187,5,124,211,27,219,37,163)
IMAGE_DATA(31,119,67,30,60,179,62,80,94,67,215,201,148,11,196,195,242,1,217,40,39,182,139,68,207,233,117,138,55,227,198,207)
IMAGE_DATA(211,247,196,236,54,232,225,192,220,61,140,59,25,115,253,34,213,57,246,247,243,5,234,152,7,100,54,195,209,84,85,185)
IMAGE_DATA(228,209,197,93,127,80,45,60,179,198,183,224,128,21,114,48,31,48,158,148,207,116,205,64,156,92,244,156,94,167,247,233)
IMAGE_DATA(115,244,121,202,117,113,221,211,181,153,225,250,238,97,239,209,254,157,226,125,177,84,205,77,185,78,117,30,148,213,140,49)
IMAGE_DATA(111,130,67,9,53,135,37,143,62,238,134,198,216,185,54,65,127,176,12,44,189,143,53,193,216,232,183,99,226,228,162,231)
IMAGE_DATA(244,58,189,191,78,143,155,228,142,253,81,220,207,114,107,232,111,88,186,89,172,83,176,38,104,239,30,143,121,30,93,116)
IMAGE_DATA(19,164,5,106,238,224,236,102,240,195,61,243,177,212,70,176,245,75,53,250,123,206,247,225,193,11,47,188,246,147,149,71)
IMAGE_DATA(178,173,44,5,62,226,228,210,231,213,23,197,151,243,166,85,116,97,126,119,50,230,11,152,227,49,24,107,234,233,180,150)
IMAGE_DATA(135,230,8,241,70,238,227,105,141,112,48,177,202,117,154,217,186,103,31,51,59,31,108,109,120,115,225,250,159,163,15,91)
IMAGE_DATA(6,98,230,58,156,88,199,88,19,49,175,169,166,227,176,143,203,112,239,18,81,120,19,206,229,243,88,183,128,63,214,247)
IMAGE_DATA(191,211,5,238,132,106,183,213,118,135,94,144,252,48,184,245,7,205,105,236,243,207,79,120,214,194,35,97,214,26,223,226)
IMAGE_DATA(84,203,128,178,126,249,101,66,124,165,2,111,24,242,158,206,209,50,251,50,230,38,240,185,84,119,101,207,249,252,15,76)
IMAGE_DATA(45,172,248,126,238,135,200,46,30,204,7,250,247,229,137,102,63,251,196,45,126,202,202,35,87,119,172,245,43,206,228,236)
IMAGE_DATA(62,120,77,24,114,21,215,173,171,45,16,40,240,82,77,31,79,81,53,248,36,213,74,247,201,74,215,58,156,74,127,251)
IMAGE_DATA(79,239,206,255,169,112,204,255,215,255,31,200,189,208,236,69,199,191,101,250,220,26,187,131,47,90,186,6,254,154,244,233)
IMAGE_DATA(166,189,47,208,117,150,129,239,152,72,126,248,177,30,206,24,99,68,79,198,247,56,254,7,138,230,188,39,0,0,0,0)
IMAGE_END_DATA(4192, 1)
IMAGE_BEGIN_DATA
IMAGE_DATA(120,156,237,91,121,112,85,213,25,63,247,102,79,76,32,36,36,65,146,72,36,1,178,177,72,128,16,32,201,200,18,100)
IMAGE_DATA(8,97,201,184,84,40,22,9,130,45,80,144,221,34,2,142,109,71,43,90,106,23,177,74,181,8,18,2,200,26,217,178)
IMAGE_DATA(80,165,181,21,103,10,99,91,218,14,246,143,46,212,161,109,232,48,67,167,14,167,223,119,207,119,120,39,247,221,119,223)
IMAGE_DATA(93,94,212,182,239,155,249,205,57,247,190,115,190,243,187,223,217,207,249,30,43,100,133,44,42,81,249,44,36,49,49,49)
IMAGE_DATA(181,184,184,100,193,248,9,213,59,154,154,30,185,184,242,177,85,93,235,55,60,206,55,0,86,175,89,123,99,209,35,139)
IMAGE_DATA(47,214,77,189,167,25,211,164,167,167,231,247,20,143,216,216,216,152,129,133,69,77,245,245,13,237,155,183,108,229,219,183)
IMAGE_DATA(191,200,159,219,246,60,223,178,245,41,224,177,142,127,117,197,74,14,220,56,114,91,187,118,61,95,190,124,5,127,112,238)
IMAGE_DATA(188,75,152,39,49,49,169,87,36,185,12,40,40,168,111,152,57,231,252,182,231,95,224,223,122,110,27,7,187,240,89,179)
IMAGE_DATA(27,121,195,204,217,182,104,108,188,151,127,113,254,67,124,70,195,172,43,5,5,119,214,71,130,75,78,78,191,234,133,77)
IMAGE_DATA(139,174,126,123,251,119,248,87,150,46,51,202,169,159,209,224,10,211,235,103,240,186,169,211,174,230,244,235,87,237,135,75)
IMAGE_DATA(118,118,78,245,146,71,191,124,125,11,212,15,218,227,158,105,211,125,97,242,148,186,235,67,134,20,175,242,194,37,47,63)
IMAGE_DATA(191,30,108,125,21,219,195,148,186,169,17,193,228,41,83,249,221,19,39,221,204,203,203,115,85,119,49,32,240,45,231,209)
IMAGE_DATA(46,208,87,248,196,73,147,35,6,224,195,199,84,142,125,63,53,53,53,207,41,159,254,253,115,155,86,173,94,3,109,101)
IMAGE_DATA(22,175,173,189,251,22,54,110,124,130,159,62,115,134,183,181,183,59,6,230,169,174,169,237,166,103,194,132,26,94,82,82)
IMAGE_DATA(186,203,9,151,248,248,248,212,170,170,113,237,15,47,92,200,39,84,215,116,67,91,91,27,191,118,237,154,43,96,158,202)
IMAGE_DATA(177,85,221,244,192,216,133,239,174,97,89,14,108,179,96,238,220,121,188,106,220,120,62,182,106,92,55,116,118,158,117,205)
IMAGE_DATA(7,243,140,26,61,38,72,87,101,229,88,142,101,133,227,83,52,104,240,142,57,115,26,177,142,131,208,217,217,233,129,79)
IMAGE_DATA(39,31,57,114,84,144,174,209,99,42,121,97,97,209,142,112,124,170,171,107,46,78,154,60,133,87,84,140,10,66,71,135)
IMAGE_DATA(123,62,152,103,248,240,17,65,186,70,2,74,203,202,46,192,252,147,97,199,7,210,118,141,28,89,193,71,140,184,43,8)
IMAGE_DATA(29,29,29,30,248,116,240,242,242,161,150,250,202,202,202,187,146,147,147,71,216,241,129,121,144,151,65,254,242,161,195,130)
IMAGE_DATA(208,222,238,158,15,230,41,41,45,181,212,87,92,82,194,147,146,147,107,236,248,12,26,52,24,250,98,9,246,199,32,180)
IMAGE_DATA(67,255,117,207,167,157,15,30,60,196,82,31,150,149,148,148,100,203,103,224,192,194,27,152,127,240,144,96,120,237,239,133)
IMAGE_DATA(69,69,150,250,176,44,104,63,149,118,124,242,243,239,184,0,233,176,237,7,193,43,31,152,219,131,116,193,58,132,99,89)
IMAGE_DATA(113,113,113,182,237,57,43,43,123,239,128,1,5,134,14,51,206,192,216,236,150,15,230,129,114,45,245,101,101,101,237,181)
IMAGE_DATA(227,130,146,154,154,182,32,55,55,143,195,124,106,232,81,225,149,79,255,220,220,110,122,80,119,110,94,30,135,57,44,236)
IMAGE_DATA(120,8,246,203,207,206,206,190,4,99,39,55,227,212,169,83,174,249,96,158,126,253,110,15,210,5,239,62,193,178,194,241)
IMAGE_DATA(65,129,49,161,9,234,141,103,231,228,116,195,226,197,75,120,107,107,171,81,134,19,156,60,121,210,200,147,149,173,232,202)
IMAGE_DATA(206,225,168,187,87,175,222,142,230,83,20,93,215,123,101,100,100,92,233,219,183,47,87,145,153,217,151,103,100,100,186,2)
IMAGE_DATA(230,49,235,1,221,127,129,185,116,172,83,62,40,144,190,30,190,225,106,122,122,31,30,73,244,238,157,126,19,117,187,225)
IMAGE_DATA(34,5,246,20,213,208,230,174,167,165,165,241,72,0,117,37,36,36,120,90,175,42,118,90,149,146,146,114,19,192,253,32)
IMAGE_DATA(57,57,5,237,130,92,226,252,240,65,129,229,107,61,232,58,159,144,144,200,97,60,117,5,204,3,54,185,2,109,50,34)
IMAGE_DATA(251,29,69,242,129,215,46,232,163,215,0,220,33,62,193,60,154,166,85,69,152,139,42,169,160,127,1,96,7,224,2,160)
IMAGE_DATA(11,192,9,55,232,221,94,76,131,223,208,131,60,172,4,231,30,92,191,212,16,42,233,93,84,254,95,36,122,152,24,149)
IMAGE_DATA(168,124,46,68,157,152,19,233,57,134,158,117,64,130,242,187,70,144,18,219,3,124,212,178,99,137,19,78,22,37,244,78)
IMAGE_DATA(87,210,98,60,158,160,190,143,180,168,229,166,0,30,5,124,13,48,9,144,172,148,175,153,242,245,132,125,84,78,88,46)
IMAGE_DATA(30,42,47,2,188,12,120,21,176,18,112,151,146,14,237,39,109,218,83,124,144,135,252,118,180,199,18,192,75,128,29,132)
IMAGE_DATA(111,2,30,96,221,23,26,190,23,132,33,68,83,66,252,238,36,192,50,38,108,243,10,188,254,49,224,101,2,212,161,94)
IMAGE_DATA(1,33,240,215,192,158,186,98,31,35,174,137,247,190,68,87,66,4,214,199,114,192,107,128,31,17,143,55,0,192,79,219)
IMAGE_DATA(9,248,33,96,33,32,23,0,54,210,98,20,93,10,31,253,54,143,124,212,254,133,64,251,172,0,236,18,48,236,179,7)
IMAGE_DATA(126,218,79,113,224,165,183,0,158,129,120,141,40,95,75,16,48,212,248,109,83,170,125,52,226,243,24,224,77,1,253,32)
IMAGE_DATA(217,5,160,239,133,16,222,105,187,5,71,13,248,234,79,66,88,40,108,133,92,244,36,159,156,212,246,131,192,246,188,6)
IMAGE_DATA(176,79,0,203,214,15,145,125,208,78,7,132,125,144,151,241,254,48,196,191,7,225,189,128,68,82,21,23,176,151,47,94)
IMAGE_DATA(146,207,58,192,1,1,253,40,160,153,202,62,42,108,164,239,19,60,140,247,248,124,132,226,208,15,53,186,92,145,220,60)
IMAGE_DATA(241,80,67,228,179,1,112,88,0,235,203,0,150,121,140,120,72,28,82,226,71,196,179,182,81,180,117,207,162,155,66,228)
IMAGE_DATA(243,56,224,152,128,193,225,56,225,40,149,139,241,86,229,249,8,113,126,16,144,169,124,155,87,62,170,141,176,159,110,5)
IMAGE_DATA(156,0,156,4,64,185,236,52,224,109,64,7,189,67,174,103,1,71,232,25,199,203,81,44,208,71,213,49,192,139,196,40)
IMAGE_DATA(122,112,254,218,12,56,3,248,41,224,103,128,78,194,57,122,255,30,241,5,251,176,251,0,125,72,15,230,149,227,182,31)
IMAGE_DATA(27,169,223,147,14,216,166,112,193,178,47,82,252,29,192,135,20,190,0,40,98,98,124,144,101,235,138,62,63,125,94,93)
IMAGE_DATA(63,224,55,190,8,248,53,224,183,128,11,132,203,196,235,20,96,54,241,144,223,209,155,137,113,157,17,15,191,237,71,114)
IMAGE_DATA(65,61,105,128,239,2,46,1,126,3,248,8,240,43,192,187,128,175,3,110,103,98,141,134,223,160,174,221,164,174,24,159)
IMAGE_DATA(124,226,76,113,172,47,156,75,63,38,252,145,137,186,154,3,72,165,52,234,216,18,163,132,106,60,222,35,31,105,155,120)
IMAGE_DATA(210,131,101,225,92,250,119,38,236,178,142,56,170,245,160,19,47,171,53,135,31,219,48,22,176,175,108,127,216,22,96,62)
IMAGE_DATA(55,198,195,105,76,212,77,44,193,188,86,149,99,186,90,71,26,241,244,186,238,144,223,24,203,2,246,193,131,166,84,22)
IMAGE_DATA(24,7,236,208,83,34,203,70,73,162,80,142,149,118,136,74,84,162,18,149,208,18,61,76,140,202,231,68,42,152,56,20)
IMAGE_DATA(194,3,7,60,136,169,99,98,242,245,187,128,119,35,181,76,44,208,254,10,224,33,240,15,38,54,180,115,122,144,199,80)
IMAGE_DATA(192,113,27,14,161,208,6,152,16,97,46,243,153,88,32,186,229,34,209,5,88,29,65,46,94,121,152,241,116,15,114,193)
IMAGE_DATA(141,32,30,116,226,13,93,54,19,7,141,227,1,243,0,59,153,104,67,86,249,158,240,200,5,219,139,85,29,225,198,235)
IMAGE_DATA(126,7,249,113,115,120,194,34,255,191,0,19,61,240,105,181,208,245,1,160,216,133,14,92,124,191,106,161,7,55,185,41)
IMAGE_DATA(46,244,212,90,232,248,200,37,23,85,118,90,232,155,239,34,191,213,55,221,231,145,11,10,110,216,46,155,244,29,119,145)
IMAGE_DATA(255,99,83,222,51,62,184,72,89,204,130,191,113,136,131,124,21,22,249,150,68,128,207,29,22,122,231,58,200,55,201,34)
IMAGE_DATA(95,77,4,248,160,252,222,164,119,147,131,60,203,45,248,100,122,40,123,169,133,158,112,216,109,161,103,149,69,186,176,30)
IMAGE_DATA(186,33,228,251,46,184,52,51,49,166,154,165,206,34,237,120,143,124,80,172,250,170,213,184,22,234,223,9,227,44,210,127)
IMAGE_DATA(201,7,159,148,48,156,240,160,171,220,38,63,30,112,116,177,96,91,250,17,252,246,3,22,92,112,62,178,245,180,37,105)
IMAGE_DATA(49,229,187,201,252,247,49,228,244,129,73,175,211,49,250,126,230,174,142,157,74,134,194,105,169,203,188,109,22,156,142,71)
IMAGE_DATA(128,83,41,96,163,135,124,120,17,242,79,11,78,231,153,179,254,54,0,176,135,137,131,250,72,201,122,11,62,136,27,76)
IMAGE_DATA(244,153,6,64,95,37,61,94,118,224,248,142,135,227,127,163,180,24,14,139,32,167,103,67,112,114,131,72,115,194,121,230)
IMAGE_DATA(223,62,248,96,255,92,19,65,62,40,88,15,63,247,192,5,199,187,72,123,37,74,193,203,39,28,51,222,118,192,3,251)
IMAGE_DATA(245,195,204,127,127,116,42,184,118,197,189,196,38,19,154,88,100,219,74,84,162,226,92,162,135,137,255,19,226,228,86,73)
IMAGE_DATA(189,145,146,98,119,35,229,86,191,219,244,242,6,78,99,129,27,203,216,48,121,122,138,143,202,195,228,129,100,28,106,168)
IMAGE_DATA(92,63,13,62,230,219,81,201,13,111,191,199,132,224,163,150,227,150,143,234,37,165,122,207,41,237,69,122,66,221,122,190)
IMAGE_DATA(19,126,94,70,30,45,42,151,80,98,190,229,181,75,43,191,215,42,125,188,137,71,31,72,6,139,17,253,27,16,135,13)
IMAGE_DATA(169,190,217,1,23,198,130,251,130,217,203,194,74,212,27,101,245,118,159,9,78,232,77,131,127,49,208,97,129,106,120,186)
IMAGE_DATA(253,0,176,137,108,231,164,175,169,237,81,109,147,102,158,102,143,3,121,251,45,147,192,166,83,43,23,182,48,188,201,192)
IMAGE_DATA(46,134,167,221,235,244,46,28,31,115,191,8,215,142,165,221,84,111,149,88,122,78,131,159,102,144,45,208,227,238,37,38)
IMAGE_DATA(60,237,94,17,207,88,111,97,235,202,108,7,141,244,155,189,28,204,227,157,228,37,15,56,250,51,195,123,11,237,160,189)
IMAGE_DATA(70,60,118,83,93,81,104,120,141,197,4,108,100,133,110,245,143,229,37,132,177,143,244,254,72,162,56,166,199,5,52,110)
IMAGE_DATA(54,246,80,189,192,166,222,240,62,68,79,187,55,5,12,79,59,180,219,108,192,172,16,64,239,156,153,76,120,233,128,157)
IMAGE_DATA(89,35,61,15,98,129,113,213,202,62,242,61,110,114,241,240,15,189,74,192,30,12,189,14,247,8,175,58,195,235,240,13)
IMAGE_DATA(226,244,58,121,215,237,37,239,186,102,229,89,125,135,135,19,45,4,252,171,227,65,38,188,98,167,177,96,143,20,233,37)
IMAGE_DATA(35,189,73,202,200,38,120,89,131,30,145,7,68,220,240,138,220,45,120,24,104,102,1,47,196,22,242,0,180,129,193,101)
IMAGE_DATA(63,241,105,38,76,53,181,19,149,15,218,8,15,21,118,50,225,173,214,66,223,177,95,132,250,91,196,1,67,242,136,52)
IMAGE_DATA(188,253,14,42,161,13,12,125,251,72,231,65,138,215,49,235,249,25,249,12,35,187,96,249,71,40,15,148,109,28,40,160)
IMAGE_DATA(55,159,244,54,60,78,241,131,228,237,103,246,66,12,1,227,240,255,112,64,159,97,247,41,44,248,34,79,242,137,35,78)
IMAGE_DATA(79,83,158,183,200,78,20,222,242,52,108,101,1,207,67,228,118,140,5,60,18,109,192,14,41,58,143,17,191,105,204,122)
IMAGE_DATA(124,82,189,226,112,92,124,128,236,212,73,249,78,64,146,19,196,3,54,134,250,41,192,73,122,119,90,137,219,192,240,96)
IMAGE_DATA(60,77,250,208,75,16,55,152,211,169,92,243,154,69,229,20,79,156,240,47,95,120,160,129,94,143,29,240,243,59,128,159)
IMAGE_DATA(0,218,1,192,83,239,160,248,89,226,227,196,62,173,100,123,105,247,89,172,187,183,162,10,213,83,78,134,3,153,240,60)
IMAGE_DATA(62,7,58,223,133,100,231,33,252,5,0,54,245,250,123,132,115,212,70,242,236,97,28,214,163,87,43,174,79,208,235,189)
IMAGE_DATA(128,5,46,124,84,251,168,162,246,125,213,179,240,33,81,71,26,108,208,181,95,18,46,0,62,4,188,79,253,222,102,108)
IMAGE_DATA(214,84,251,171,227,159,156,55,101,255,14,181,94,82,189,195,36,199,209,76,140,25,232,25,137,94,119,191,99,1,15,197)
IMAGE_DATA(99,54,186,180,16,239,156,174,3,172,56,201,111,195,75,36,188,124,68,207,205,63,48,225,153,120,153,137,118,106,254,119)
IMAGE_DATA(134,219,245,161,221,250,201,42,221,109,44,48,207,125,129,137,118,142,135,201,127,162,184,213,222,195,141,56,89,207,89,217)
IMAGE_DATA(92,174,97,135,51,49,191,253,153,137,131,159,79,131,143,57,189,236,15,114,237,138,151,64,79,50,49,78,249,229,227,86)
IMAGE_DATA(100,159,144,92,228,63,143,48,44,253,12,248,72,14,82,228,58,137,49,214,109,45,44,197,173,253,205,226,166,61,153,61)
IMAGE_DATA(140,229,111,230,116,126,57,69,37,42,255,213,242,31,128,199,232,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
IMAGE_END_DATA(3040, 4)
IMAGE_BEGIN_DATA
IMAGE_DATA(120,156,237,151,57,111,20,65,16,133,123,102,119,125,33,129,145,16,137,65,128,229,196,4,206,8,144,64,4,4,32,7)
IMAGE_DATA(8,176,32,4,2,126,3,16,32,16,1,87,70,130,56,197,125,24,123,125,128,47,48,135,205,125,6,32,3,18,72,72)
IMAGE_DATA(4,128,68,194,111,224,213,244,43,111,209,158,29,175,145,69,194,150,244,169,143,237,233,122,93,213,51,221,235,90,92,139)
IMAGE_DATA(171,90,213,170,246,79,44,154,33,106,49,200,179,62,151,101,158,253,33,225,179,179,169,167,16,60,151,3,171,192,60,80)
IMAGE_DATA(107,52,228,136,213,148,229,207,90,108,198,86,162,95,138,92,169,140,118,131,93,96,17,166,202,155,49,181,165,103,34,245)
IMAGE_DATA(161,101,158,107,211,182,213,18,167,180,203,97,52,199,117,222,127,180,15,156,68,253,32,104,71,125,126,73,111,172,57,205)
IMAGE_DATA(90,107,193,212,85,75,206,77,213,154,98,178,78,141,193,100,140,246,131,211,224,34,56,14,182,97,76,35,168,55,113,145)
IMAGE_DATA(113,53,212,165,177,81,203,187,169,86,112,165,248,101,161,115,155,245,199,71,208,62,11,78,129,19,224,10,250,142,162,92)
IMAGE_DATA(94,210,145,140,179,126,163,160,12,251,237,123,144,129,204,45,90,236,252,241,33,244,157,99,124,132,243,224,178,207,97,212)
IMAGE_DATA(225,247,145,234,79,246,124,152,11,91,183,177,211,120,86,242,190,75,147,207,37,177,184,4,174,251,216,68,87,193,25,214)
IMAGE_DATA(165,127,15,198,52,149,198,39,86,71,93,105,122,52,142,205,160,35,155,104,11,30,223,138,114,51,215,190,17,92,48,90)
IMAGE_DATA(110,120,13,113,55,117,117,130,107,104,31,3,43,49,71,99,153,184,132,38,218,215,130,174,108,226,30,159,147,184,232,53)
IMAGE_DATA(196,93,244,121,149,125,157,190,47,161,155,99,122,189,38,201,161,219,1,154,140,79,253,134,134,26,243,212,83,204,38,238)
IMAGE_DATA(167,143,162,247,147,232,235,100,187,143,101,183,161,135,253,189,254,55,135,177,14,249,117,173,204,153,234,82,179,123,98,13)
IMAGE_DATA(232,207,38,89,247,0,24,164,15,97,24,12,209,119,145,245,1,234,184,105,116,162,238,6,185,54,236,127,183,137,90,114)
IMAGE_DATA(70,131,196,165,134,125,235,193,64,54,127,248,214,54,227,148,212,135,141,206,91,70,251,176,47,39,231,66,219,225,251,224)
IMAGE_DATA(150,185,244,239,143,216,58,48,146,141,228,43,30,161,15,225,30,219,67,44,37,30,183,217,63,76,77,67,164,143,58,68)
IMAGE_DATA(215,97,208,150,162,69,243,37,241,217,0,70,179,137,199,232,235,62,253,223,33,170,225,17,184,107,116,140,177,45,99,30)
IMAGE_DATA(51,87,59,83,246,138,205,151,208,224,252,126,158,46,62,35,204,141,148,163,140,199,11,240,0,140,131,135,236,127,202,126)
IMAGE_DATA(209,243,204,255,38,223,73,183,154,126,101,143,232,222,177,251,199,218,2,176,56,155,88,88,138,185,155,253,121,30,45,225)
IMAGE_DATA(123,244,18,188,6,111,192,43,244,191,101,251,57,120,2,14,160,111,33,253,52,4,126,195,179,76,222,59,61,47,42,57)
IMAGE_DATA(191,244,62,193,182,236,163,104,2,188,7,239,192,71,175,75,234,18,159,104,59,104,224,253,195,222,59,210,246,113,153,243)
IMAGE_DATA(50,211,236,249,35,115,74,46,63,3,232,112,95,193,4,235,248,6,186,21,28,55,39,88,111,185,115,40,140,201,116,86)
IMAGE_DATA(19,148,98,227,224,7,248,6,190,128,79,0,119,161,36,255,98,246,78,153,166,199,90,214,189,177,156,233,189,79,52,213)
IMAGE_DATA(81,207,79,240,29,124,0,237,28,163,251,85,243,162,119,199,74,124,86,170,199,174,53,71,61,242,30,255,2,114,62,181)
IMAGE_DATA(25,189,105,243,85,170,103,38,166,115,232,186,241,62,185,189,206,223,233,245,221,149,216,213,155,241,225,255,128,217,210,163)
IMAGE_DATA(123,76,99,32,62,91,89,215,59,77,173,25,107,247,100,161,2,13,127,171,81,239,193,106,54,71,118,206,240,174,92,181)
IMAGE_DATA(170,253,55,246,27,242,142,199,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
IMAGE_END_DATA(896, 1)

View file

@ -0,0 +1,10 @@
LAYOUT(ChromiumBrowserExampleLayout, 420, 280)
ITEM(Button, Back, Tip(t_("Go back")).LeftPosZ(4, 48).TopPosZ(4, 44))
ITEM(Button, Forward, Tip(t_("Go forward")).LeftPosZ(56, 48).TopPosZ(4, 44))
ITEM(Button, Refresh, Tip(t_("Refresh current page")).LeftPosZ(108, 48).TopPosZ(4, 44))
ITEM(EditString, Url, SetFont(StdFontZ(32)).HSizePosZ(160, 108).TopPosZ(4, 44))
ITEM(Button, Go, Tip(t_("Go")).RightPosZ(56, 48).TopPosZ(4, 44))
ITEM(Button, Stop, Tip(t_("Stop")).RightPosZ(4, 48).TopPosZ(4, 44))
ITEM(ChromiumBrowser, Browser, StartPage("http://ultimatepp.org").HSizePosZ(0, 0).VSizePosZ(52, 0))
END_LAYOUT

View file

@ -0,0 +1,23 @@
charset "UTF-8";
uses
CtrlLib,
ChromiumBrowser;
options(GCC) -std=c++11;
link(GCC) "-Wl,-rpath .";
file
Utils readonly separator,
Utils.h,
Utils.cpp,
Main readonly separator,
ChromiumBrowserExample.iml,
ChromiumBrowserExample.lay,
ChromiumBrowserExample.h,
main.cpp;
mainconfig
"" = "GUI MT SSE2 NOGTK USEMALLOC";

View file

@ -0,0 +1,17 @@
#include "Utils.h"
#define DOCK "gsettings set org.onboard.window docking-enabled true"
#define BOTTOM "gsettings set org.onboard.window docking-edge 'bottom'"
using namespace Upp;
void Upp::ShowKeyboard(bool show)
{
if (show){
Size sz = GetScreenSize();
int e = system(Format(DOCK ";" BOTTOM ";onboard -l Phone -x %d -y %d -s %d`x%d &", 0, sz.cy - sz.cy / 4, sz.cx, sz.cy / 4));
}else{
String tmp;
Sys("killall onboard", tmp);
}
}

View file

@ -0,0 +1,12 @@
#ifndef _ChromiumBrowserExample_Utils_h_
#define _ChromiumBrowserExample_Utils_h_
#include <CtrlLib/CtrlLib.h>
namespace Upp{
void ShowKeyboard(bool show);
}
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,5 @@
#ifndef _ChromiumBrowserExample_icpp_init_stub
#define _ChromiumBrowserExample_icpp_init_stub
#include "CtrlLib/init"
#include "ChromiumBrowser/init"
#endif

View file

@ -0,0 +1,47 @@
#include "ChromiumBrowserExample.h"
#include "Utils.h"
#define IMAGECLASS IMG
#define IMAGEFILE <ChromiumBrowserExample/ChromiumBrowserExample.iml>
#include <Draw/iml.h>
ChromiumBrowserExample::ChromiumBrowserExample()
{
CtrlLayout(*this, "Embedded Chromium Example");
Sizeable().MaximizeBox();
Icon(IMG::icon);
Back.SetImage(IMG::back);
Forward.SetImage(IMG::forward);
Refresh.SetImage(IMG::refresh);
Go.SetImage(IMG::go);
Stop.SetImage(IMG::stop);
Browser.WhenUrlChange = LAMBDA(String url) { Url.SetData(url); Url.CancelSelection(); };
Browser.WhenTakeFocus = LAMBDA() { Url.SetFocus(); };
Browser.WhenKeyboard = STDBACK(::ShowKeyboard);
Browser.WhenMessage = LAMBDA(String msg) { RLOG(msg);};
Browser.WhenConsoleMessage = LAMBDA(String url, int line, String msg) {RLOG(Format("Console message: url=%s, line=%d, msg=%s", url, line, msg));};
Back.WhenAction = callback(&Browser, &ChromiumBrowser::GoBack);
Forward.WhenAction = callback(&Browser, &ChromiumBrowser::GoForward);
Refresh.WhenAction = callback(&Browser, &ChromiumBrowser::RefreshPage);
Url.WhenEnter = LAMBDA() { Browser.Browse(~Url); };
Go.WhenAction = LAMBDA() { Browser.Browse(~Url); };
Stop.WhenAction = callback(&Browser, &ChromiumBrowser::Stop);
}
GUI_APP_MAIN
{
StdLogSetup(LOG_FILE | LOG_CERR | LOG_TIMESTAMP | LOG_APPEND);
SetLanguage( SetLNGCharset( GetSystemLNG(), CHARSET_UTF8 ) );
if (ChromiumBrowser::IsChildProcess()){
ChromiumBrowser::ChildProcess();
}else{
ChromiumBrowserExample().Run();
::ShowKeyboard(false);
}
}