mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 06:07:06 +02:00
Fix semi-transparent .webp in media viewer.
This commit is contained in:
parent
7059336ff0
commit
4e0355d09f
6 changed files with 11 additions and 3 deletions
|
@ -183,7 +183,7 @@ void OverlayWidget::RendererGL::paintTransformedVideoFrame(
|
|||
}
|
||||
if (data.format == Streaming::FrameFormat::ARGB32) {
|
||||
Assert(!data.original.isNull());
|
||||
paintTransformedStaticContent(data.original, geometry, false);
|
||||
paintTransformedStaticContent(data.original, geometry, false, false);
|
||||
return;
|
||||
}
|
||||
Assert(data.format == Streaming::FrameFormat::YUV420);
|
||||
|
@ -237,12 +237,14 @@ void OverlayWidget::RendererGL::paintTransformedVideoFrame(
|
|||
_yuv420Program->setUniformValue("u_texture", GLint(1));
|
||||
_yuv420Program->setUniformValue("v_texture", GLint(2));
|
||||
|
||||
toggleBlending(false);
|
||||
paintTransformedContent(&*_yuv420Program, geometry);
|
||||
}
|
||||
|
||||
void OverlayWidget::RendererGL::paintTransformedStaticContent(
|
||||
const QImage &image,
|
||||
ContentGeometry geometry,
|
||||
bool semiTransparent,
|
||||
bool fillTransparentBackground) {
|
||||
Expects(image.isNull()
|
||||
|| image.format() == QImage::Format_RGB32
|
||||
|
@ -300,6 +302,7 @@ void OverlayWidget::RendererGL::paintTransformedStaticContent(
|
|||
}
|
||||
program->setUniformValue("s_texture", GLint(0));
|
||||
|
||||
toggleBlending(semiTransparent && !fillTransparentBackground);
|
||||
paintTransformedContent(&*program, geometry);
|
||||
}
|
||||
|
||||
|
@ -341,7 +344,6 @@ void OverlayWidget::RendererGL::paintTransformedContent(
|
|||
|
||||
program->setUniformValue("viewport", _uniformViewport);
|
||||
|
||||
toggleBlending(false);
|
||||
FillTexturedRectangle(*_f, &*program);
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ private:
|
|||
void paintTransformedStaticContent(
|
||||
const QImage &image,
|
||||
ContentGeometry geometry,
|
||||
bool semiTransparent,
|
||||
bool fillTransparentBackground) override;
|
||||
void paintTransformedContent(
|
||||
not_null<QOpenGLShaderProgram*> program,
|
||||
|
|
|
@ -77,6 +77,7 @@ void OverlayWidget::RendererSW::paintTransformedVideoFrame(
|
|||
void OverlayWidget::RendererSW::paintTransformedStaticContent(
|
||||
const QImage &image,
|
||||
ContentGeometry geometry,
|
||||
bool semiTransparent,
|
||||
bool fillTransparentBackground) {
|
||||
const auto rotation = int(geometry.rotation);
|
||||
const auto rect = TransformRect(geometry.rect, rotation);
|
||||
|
|
|
@ -26,6 +26,7 @@ private:
|
|||
void paintTransformedStaticContent(
|
||||
const QImage &image,
|
||||
ContentGeometry geometry,
|
||||
bool semiTransparent,
|
||||
bool fillTransparentBackground) override;
|
||||
void paintTransformedImage(
|
||||
const QImage &image,
|
||||
|
|
|
@ -18,6 +18,7 @@ public:
|
|||
virtual void paintTransformedStaticContent(
|
||||
const QImage &image,
|
||||
ContentGeometry geometry,
|
||||
bool semiTransparent,
|
||||
bool fillTransparentBackground) = 0;
|
||||
virtual void paintRadialLoading(
|
||||
QRect inner,
|
||||
|
|
|
@ -627,7 +627,8 @@ bool OverlayWidget::contentShown() const {
|
|||
|
||||
bool OverlayWidget::opaqueContentShown() const {
|
||||
return contentShown()
|
||||
&& (!_document
|
||||
&& (!_staticContentTransparent
|
||||
|| !_document
|
||||
|| (!_document->isVideoMessage() && !_document->sticker()));
|
||||
}
|
||||
|
||||
|
@ -3268,6 +3269,7 @@ void OverlayWidget::paint(not_null<Renderer*> renderer) {
|
|||
renderer->paintTransformedStaticContent(
|
||||
_staticContent,
|
||||
contentGeometry(),
|
||||
_staticContentTransparent,
|
||||
fillTransparentBackground);
|
||||
}
|
||||
paintRadialLoading(renderer);
|
||||
|
|
Loading…
Add table
Reference in a new issue