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(); } } }
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); }