Beispiel #1
0
double GLWebViewState::setupDrawing(IntRect& viewRect, SkRect& visibleRect,
                                  IntRect& webViewRect, int titleBarHeight,
                                  IntRect& screenClip, float scale)
{
    int left = viewRect.x();
    int top = viewRect.y();
    int width = viewRect.width();
    int height = viewRect.height();

    ShaderProgram* shader = TilesManager::instance()->shader();
    if (shader->program() == -1) {
        XLOG("Reinit shader");
        shader->init();
    }
    shader->setViewport(visibleRect, scale);
    shader->setViewRect(viewRect);
    shader->setWebViewRect(webViewRect);
    shader->setTitleBarHeight(titleBarHeight);
    shader->setScreenClip(screenClip);
    shader->resetBlending();

    shader->calculateAnimationDelta();

    glViewport(left + shader->getAnimationDeltaX(),
               top - shader->getAnimationDeltaY(),
               width, height);

    double currentTime = WTF::currentTime();

    setViewport(visibleRect, scale);
    m_zoomManager.processNewScale(currentTime, scale);

    return currentTime;
}