Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/mythtv/libs/libmythui/mythpainter.cpp b/mythtv/libs/libmythui/mythpainter.cpp
- index 82d5e05..f50f953 100644
- --- a/mythtv/libs/libmythui/mythpainter.cpp
- +++ b/mythtv/libs/libmythui/mythpainter.cpp
- @@ -145,8 +145,12 @@ void MythPainter::DrawTextLayout(const QRect & canvasRect,
- return;
- }
- - QRect srcRect(0, 0, dest.width(), dest.height());
- + QRect srcRect(0, 0, canvas.width(), canvas.height());
- + SetClipRect(dest);
- + dest.moveTopLeft(QPoint(dest.x() + canvas.x(), dest.y() + canvas.y()));
- + dest.setSize(canvas.size());
- DrawImage(dest, im, srcRect, alpha);
- + SetClipRect(QRect());
- im->DecrRef();
- }
- @@ -361,9 +365,7 @@ MythImage *MythPainter::GetImageFromTextLayout(const LayoutVector &layouts,
- {
- LayoutVector::const_iterator Ipara;
- - QString incoming = QString::number(canvas.x()) +
- - QString::number(canvas.y()) +
- - QString::number(canvas.width()) +
- + QString incoming = QString::number(canvas.width()) +
- QString::number(canvas.height()) +
- QString::number(dest.width()) +
- QString::number(dest.height()) +
- @@ -428,12 +430,11 @@ MythImage *MythPainter::GetImageFromTextLayout(const LayoutVector &layouts,
- painter.setPen(QPen(font.GetBrush(), 0));
- for (Ipara = layouts.begin(); Ipara != layouts.end(); ++Ipara)
- - (*Ipara)->draw(&painter, canvas.topLeft(), formats, clip);
- + (*Ipara)->draw(&painter, QPoint(0, 0), formats, clip);
- painter.end();
- - pm.setOffset(canvas.topLeft());
- - im->Assign(pm.copy(0, 0, dest.width(), dest.height()));
- + im->Assign(pm);
- im->IncrRef();
- m_SoftwareCacheSize += im->bytesPerLine() * im->height();
- diff --git a/mythtv/libs/libmythui/mythpainter_ogl.cpp b/mythtv/libs/libmythui/mythpainter_ogl.cpp
- index b146428..09c4d1b 100644
- --- a/mythtv/libs/libmythui/mythpainter_ogl.cpp
- +++ b/mythtv/libs/libmythui/mythpainter_ogl.cpp
- @@ -10,6 +10,7 @@
- #include "mythlogging.h"
- // Mythui headers
- +#include "mythmainwindow.h"
- #include "mythrender_opengl.h"
- // Own header
- @@ -239,3 +240,19 @@ void MythOpenGLPainter::PopTransformation(void)
- if (realRender)
- realRender->PopTransformation();
- }
- +
- +void MythOpenGLPainter::SetClipRect(const QRect &clipRect)
- +{
- + if (!realRender)
- + return;
- +
- + realRender->makeCurrent();
- + glEnable(GL_SCISSOR_TEST);
- + QRect uiRect = GetMythMainWindow()->GetUIScreenRect();
- + if (!clipRect.isEmpty())
- + glScissor(qMax(clipRect.x(), 0), uiRect.height() - clipRect.height() - qMax(clipRect.y(), 0),
- + clipRect.width(), clipRect.height());
- + else
- + glScissor(0, 0, uiRect.width(), uiRect.height());
- + realRender->doneCurrent();
- +}
- diff --git a/mythtv/libs/libmythui/mythpainter_ogl.h b/mythtv/libs/libmythui/mythpainter_ogl.h
- index 54588a6..52d02cb 100644
- --- a/mythtv/libs/libmythui/mythpainter_ogl.h
- +++ b/mythtv/libs/libmythui/mythpainter_ogl.h
- @@ -22,6 +22,7 @@ class MUI_PUBLIC MythOpenGLPainter : public MythPainter
- virtual bool SupportsAnimation(void) { return true; }
- virtual bool SupportsAlpha(void) { return true; }
- virtual bool SupportsClipping(void) { return false; }
- + virtual void SetClipRect(const QRect &clipRect);
- virtual void FreeResources(void);
- virtual void Begin(QPaintDevice *parent);
- virtual void End();
- diff --git a/mythtv/libs/libmythui/mythrender_opengl.cpp b/mythtv/libs/libmythui/mythrender_opengl.cpp
- index 787d632..4efa33f 100644
- --- a/mythtv/libs/libmythui/mythrender_opengl.cpp
- +++ b/mythtv/libs/libmythui/mythrender_opengl.cpp
- @@ -735,6 +735,7 @@ void MythRenderOpenGL::Init2DState(void)
- SetBlend(false);
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- + glEnable(GL_SCISSOR_TEST);
- glDisable(GL_DEPTH_TEST);
- glDepthMask(GL_FALSE);
- glDisable(GL_CULL_FACE);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement