WebView* createPlatformWebView(void)
{
    WebView* webView = WebView::createInstance();
    SDL_Rect rect = { 0, 0, 800, 600 };
    s_screen = createSDLWindow(rect.w, rect.h);
    webView->setViewWindow(s_screen);
    webView->initWithFrame(rect, NULL, NULL);
    s_webView = webView;
    return webView;
}
void waitEventUntilLoaded()
{
    SDL_Event event;

    SDL_GetEventFilter();
    SDL_Surface* scr;
    bool quit = false;
    while (!quit) {
        if (SDL_PollEvent(&event) != 0)
        {
            switch (event.type) {
                case SDL_ACTIVEEVENT:
                    if(event.active.gain == 1 && event.active.state == 2) {
                        SDL_Rect rect = {0, 0, 800, 600};
                        s_webView->addToDirtyRegion(rect);
                    }
                    SDL_ExposeEvent ev;
                    s_webView->onExpose(ev);
                    break;
                case SDL_KEYDOWN:
                    s_webView->onKeyDown(event.key);
                    break;
                case SDL_KEYUP:
                    s_webView->onKeyUp(event.key);
                    break;
                case SDL_MOUSEMOTION:
                    s_webView->onMouseMotion(event.motion);
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN)
                        s_webView->onScroll(event.button);
                    else
                        s_webView->onMouseButtonDown(event.button);
                    break;
                case SDL_MOUSEBUTTONUP:
                    if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) {
                        s_webView->onScroll(event.button);
                    }
                    else
                        s_webView->onMouseButtonUp(event.button);
                    break;
                case SDL_VIDEORESIZE:
                    scr = createSDLWindow(event.resize.w, event.resize.h);
                    s_webView->setViewWindow(scr);
                    s_webView->onResize(event.resize);
                    SDL_FreeSurface(s_screen);
                    s_screen = scr;
                    break;
                case SDL_VIDEOEXPOSE:
                    s_webView->onExpose(event.expose);
                    break;
                case SDL_USEREVENT:
                    s_webView->onUserEvent(event.user);
                    break;
                case SDL_SYSWMEVENT:
                    break;
                case SDL_QUIT:
                    quit = true;
                    break;
                default:
                    ;
            }
        } else {
            s_webView->fireWebKitThreadEvents();
            s_webView->fireWebKitTimerEvents();
        }
        quit = !s_webView->isLoading();
    }
}
Пример #3
0
void WindowService::initialize() {
	m_sdlWindow = createSDLWindow();
	m_sdlGLContext = createSDLGLContext();
}