void FaderWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QColor semiTransparentColor = startColor;
    semiTransparentColor.setAlpha(currentAlpha);
    painter.fillRect(rect(), semiTransparentColor);

    if (_type == FadeInParentWidget) {
        currentAlpha -= 255 * timer->interval() / duration;
        if (currentAlpha <= 0) {
            timer->stop();
            hide();
            close();
            Q_EMIT fadeDone();
        }
    } else if (_type == FadeOutParentWidget) {
        currentAlpha += 255 * timer->interval() / duration;
        if (currentAlpha >= 255) {
            timer->stop();
            hide();
            close();
            Q_EMIT fadeDone();
        }
    }
}
Exemplo n.º 2
0
void Renderer::endFrame()
{
    if (!fadeDone())
    {
        SDL_Color color;
        SDL_GetRenderDrawColor(_sdlRenderer, &color.r, &color.g, &color.b, &color.a);
        SDL_SetRenderDrawColor(_sdlRenderer, _fadeColor.r, _fadeColor.g, _fadeColor.b, _fadeColor.a);
        SDL_RenderFillRect(_sdlRenderer, NULL);
        SDL_SetRenderDrawColor(_sdlRenderer, color.r, color.g, color.b, color.a);
    }
    SDL_RenderPresent(_sdlRenderer);
}