Apply stories fade in raster renderer.
This commit is contained in:
parent
30871ed116
commit
0d3df824e3
|
@ -16,14 +16,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
namespace Media::View {
|
namespace Media::View {
|
||||||
|
|
||||||
OverlayWidget::RendererSW::RendererSW(not_null<OverlayWidget*> owner)
|
OverlayWidget::RendererSW::RendererSW(not_null<OverlayWidget*> owner)
|
||||||
: _owner(owner)
|
: _owner(owner)
|
||||||
, _transparentBrush(style::TransparentPlaceholder()) {
|
, _transparentBrush(style::TransparentPlaceholder()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintFallback(
|
void OverlayWidget::RendererSW::paintFallback(
|
||||||
Painter &&p,
|
Painter &&p,
|
||||||
const QRegion &clip,
|
const QRegion &clip,
|
||||||
Ui::GL::Backend backend) {
|
Ui::GL::Backend backend) {
|
||||||
_p = &p;
|
_p = &p;
|
||||||
_clip = &clip;
|
_clip = &clip;
|
||||||
_clipOuter = clip.boundingRect();
|
_clipOuter = clip.boundingRect();
|
||||||
|
@ -49,8 +49,8 @@ void OverlayWidget::RendererSW::paintBackground() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QRect OverlayWidget::RendererSW::TransformRect(
|
QRect OverlayWidget::RendererSW::TransformRect(
|
||||||
QRectF geometry,
|
QRectF geometry,
|
||||||
int rotation) {
|
int rotation) {
|
||||||
const auto center = geometry.center();
|
const auto center = geometry.center();
|
||||||
const auto rect = ((rotation % 180) == 90)
|
const auto rect = ((rotation % 180) == 90)
|
||||||
? QRectF(
|
? QRectF(
|
||||||
|
@ -67,7 +67,7 @@ QRect OverlayWidget::RendererSW::TransformRect(
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintTransformedVideoFrame(
|
void OverlayWidget::RendererSW::paintTransformedVideoFrame(
|
||||||
ContentGeometry geometry) {
|
ContentGeometry geometry) {
|
||||||
Expects(_owner->_streamed != nullptr);
|
Expects(_owner->_streamed != nullptr);
|
||||||
|
|
||||||
const auto rotation = int(geometry.rotation);
|
const auto rotation = int(geometry.rotation);
|
||||||
|
@ -76,15 +76,15 @@ void OverlayWidget::RendererSW::paintTransformedVideoFrame(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
paintTransformedImage(_owner->videoFrame(), rect, rotation);
|
paintTransformedImage(_owner->videoFrame(), rect, rotation);
|
||||||
paintControlsFade(rect, geometry.controlsOpacity);
|
paintControlsFade(rect, geometry.controlsOpacity, geometry.fade);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintTransformedStaticContent(
|
void OverlayWidget::RendererSW::paintTransformedStaticContent(
|
||||||
const QImage &image,
|
const QImage &image,
|
||||||
ContentGeometry geometry,
|
ContentGeometry geometry,
|
||||||
bool semiTransparent,
|
bool semiTransparent,
|
||||||
bool fillTransparentBackground,
|
bool fillTransparentBackground,
|
||||||
int index) {
|
int index) {
|
||||||
const auto rotation = int(geometry.rotation);
|
const auto rotation = int(geometry.rotation);
|
||||||
const auto rect = TransformRect(geometry.rect, rotation);
|
const auto rect = TransformRect(geometry.rect, rotation);
|
||||||
if (!rect.intersects(_clipOuter)) {
|
if (!rect.intersects(_clipOuter)) {
|
||||||
|
@ -97,12 +97,19 @@ void OverlayWidget::RendererSW::paintTransformedStaticContent(
|
||||||
if (!image.isNull()) {
|
if (!image.isNull()) {
|
||||||
paintTransformedImage(image, rect, rotation);
|
paintTransformedImage(image, rect, rotation);
|
||||||
}
|
}
|
||||||
paintControlsFade(rect, geometry.controlsOpacity);
|
paintControlsFade(rect, geometry.controlsOpacity, geometry.fade);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintControlsFade(
|
void OverlayWidget::RendererSW::paintControlsFade(
|
||||||
QRect geometry,
|
QRect geometry,
|
||||||
float64 opacity) {
|
float64 opacity,
|
||||||
|
float64 fullFade) {
|
||||||
|
if (fullFade > 0.) {
|
||||||
|
_p->setOpacity(fullFade);
|
||||||
|
_p->fillRect(geometry, Qt::black);
|
||||||
|
opacity *= 1. - fullFade;
|
||||||
|
}
|
||||||
|
|
||||||
_p->setOpacity(opacity);
|
_p->setOpacity(opacity);
|
||||||
_p->setClipRect(geometry);
|
_p->setClipRect(geometry);
|
||||||
const auto width = _owner->width();
|
const auto width = _owner->width();
|
||||||
|
@ -136,9 +143,9 @@ void OverlayWidget::RendererSW::paintControlsFade(
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintTransformedImage(
|
void OverlayWidget::RendererSW::paintTransformedImage(
|
||||||
const QImage &image,
|
const QImage &image,
|
||||||
QRect rect,
|
QRect rect,
|
||||||
int rotation) {
|
int rotation) {
|
||||||
PainterHighQualityEnabler hq(*_p);
|
PainterHighQualityEnabler hq(*_p);
|
||||||
if (UsePainterRotation(rotation)) {
|
if (UsePainterRotation(rotation)) {
|
||||||
if (rotation) {
|
if (rotation) {
|
||||||
|
@ -155,9 +162,9 @@ void OverlayWidget::RendererSW::paintTransformedImage(
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintRadialLoading(
|
void OverlayWidget::RendererSW::paintRadialLoading(
|
||||||
QRect inner,
|
QRect inner,
|
||||||
bool radial,
|
bool radial,
|
||||||
float64 radialOpacity) {
|
float64 radialOpacity) {
|
||||||
_owner->paintRadialLoadingContent(*_p, inner, radial, radialOpacity);
|
_owner->paintRadialLoadingContent(*_p, inner, radial, radialOpacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,8 +173,8 @@ void OverlayWidget::RendererSW::paintThemePreview(QRect outer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintDocumentBubble(
|
void OverlayWidget::RendererSW::paintDocumentBubble(
|
||||||
QRect outer,
|
QRect outer,
|
||||||
QRect icon) {
|
QRect icon) {
|
||||||
if (outer.intersects(_clipOuter)) {
|
if (outer.intersects(_clipOuter)) {
|
||||||
_owner->paintDocumentBubbleContent(*_p, outer, icon, _clipOuter);
|
_owner->paintDocumentBubbleContent(*_p, outer, icon, _clipOuter);
|
||||||
if (icon.intersects(_clipOuter)) {
|
if (icon.intersects(_clipOuter)) {
|
||||||
|
@ -186,12 +193,12 @@ void OverlayWidget::RendererSW::paintControlsStart() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayWidget::RendererSW::paintControl(
|
void OverlayWidget::RendererSW::paintControl(
|
||||||
OverState control,
|
OverState control,
|
||||||
QRect over,
|
QRect over,
|
||||||
float64 overOpacity,
|
float64 overOpacity,
|
||||||
QRect inner,
|
QRect inner,
|
||||||
float64 innerOpacity,
|
float64 innerOpacity,
|
||||||
const style::icon &icon) {
|
const style::icon &icon) {
|
||||||
if (!over.isEmpty() && !over.intersects(_clipOuter)) {
|
if (!over.isEmpty() && !over.intersects(_clipOuter)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,10 @@ private:
|
||||||
const QImage &image,
|
const QImage &image,
|
||||||
QRect rect,
|
QRect rect,
|
||||||
int rotation);
|
int rotation);
|
||||||
void paintControlsFade(QRect geometry, float64 opacity);
|
void paintControlsFade(
|
||||||
|
QRect geometry,
|
||||||
|
float64 opacity,
|
||||||
|
float64 fullFade);
|
||||||
void paintRadialLoading(
|
void paintRadialLoading(
|
||||||
QRect inner,
|
QRect inner,
|
||||||
bool radial,
|
bool radial,
|
||||||
|
|
|
@ -4011,10 +4011,12 @@ void OverlayWidget::storiesTogglePaused(bool paused) {
|
||||||
|| !_streamed->instance.player().active()) {
|
|| !_streamed->instance.player().active()) {
|
||||||
return;
|
return;
|
||||||
} else if (_streamed->instance.player().paused()) {
|
} else if (_streamed->instance.player().paused()) {
|
||||||
_streamed->instance.resume();
|
if (!paused) {
|
||||||
updatePlaybackState();
|
_streamed->instance.resume();
|
||||||
playbackPauseMusic();
|
updatePlaybackState();
|
||||||
} else {
|
playbackPauseMusic();
|
||||||
|
}
|
||||||
|
} else if (paused) {
|
||||||
_streamed->instance.pause();
|
_streamed->instance.pause();
|
||||||
updatePlaybackState();
|
updatePlaybackState();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user