Advertisement
Guest User

Untitled

a guest
Sep 18th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.05 KB | None | 0 0
  1. diff --git a/mythtv/libs/libmythui/mythpainter.cpp b/mythtv/libs/libmythui/mythpainter.cpp
  2. index 82d5e05..f50f953 100644
  3. --- a/mythtv/libs/libmythui/mythpainter.cpp
  4. +++ b/mythtv/libs/libmythui/mythpainter.cpp
  5. @@ -145,8 +145,12 @@ void MythPainter::DrawTextLayout(const QRect & canvasRect,
  6.          return;
  7.      }
  8.  
  9. -    QRect srcRect(0, 0, dest.width(), dest.height());
  10. +    QRect srcRect(0, 0, canvas.width(), canvas.height());
  11. +    SetClipRect(dest);
  12. +    dest.moveTopLeft(QPoint(dest.x() + canvas.x(), dest.y() + canvas.y()));
  13. +    dest.setSize(canvas.size());
  14.      DrawImage(dest, im, srcRect, alpha);
  15. +    SetClipRect(QRect());
  16.  
  17.      im->DecrRef();
  18.  }
  19. @@ -361,9 +365,7 @@ MythImage *MythPainter::GetImageFromTextLayout(const LayoutVector &layouts,
  20.  {
  21.      LayoutVector::const_iterator Ipara;
  22.  
  23. -    QString incoming = QString::number(canvas.x()) +
  24. -                       QString::number(canvas.y()) +
  25. -                       QString::number(canvas.width()) +
  26. +    QString incoming = QString::number(canvas.width()) +
  27.                         QString::number(canvas.height()) +
  28.                         QString::number(dest.width()) +
  29.                         QString::number(dest.height()) +
  30. @@ -428,12 +430,11 @@ MythImage *MythPainter::GetImageFromTextLayout(const LayoutVector &layouts,
  31.  
  32.          painter.setPen(QPen(font.GetBrush(), 0));
  33.          for (Ipara = layouts.begin(); Ipara != layouts.end(); ++Ipara)
  34. -            (*Ipara)->draw(&painter, canvas.topLeft(), formats, clip);
  35. +            (*Ipara)->draw(&painter, QPoint(0, 0), formats, clip);
  36.  
  37.          painter.end();
  38.  
  39. -        pm.setOffset(canvas.topLeft());
  40. -        im->Assign(pm.copy(0, 0, dest.width(), dest.height()));
  41. +        im->Assign(pm);
  42.  
  43.          im->IncrRef();
  44.          m_SoftwareCacheSize += im->bytesPerLine() * im->height();
  45. diff --git a/mythtv/libs/libmythui/mythpainter_ogl.cpp b/mythtv/libs/libmythui/mythpainter_ogl.cpp
  46. index b146428..09c4d1b 100644
  47. --- a/mythtv/libs/libmythui/mythpainter_ogl.cpp
  48. +++ b/mythtv/libs/libmythui/mythpainter_ogl.cpp
  49. @@ -10,6 +10,7 @@
  50.  #include "mythlogging.h"
  51.  
  52.  // Mythui headers
  53. +#include "mythmainwindow.h"
  54.  #include "mythrender_opengl.h"
  55.  
  56.  // Own header
  57. @@ -239,3 +240,19 @@ void MythOpenGLPainter::PopTransformation(void)
  58.      if (realRender)
  59.          realRender->PopTransformation();
  60.  }
  61. +
  62. +void MythOpenGLPainter::SetClipRect(const QRect &clipRect)
  63. +{
  64. +    if (!realRender)
  65. +        return;
  66. +
  67. +    realRender->makeCurrent();
  68. +    glEnable(GL_SCISSOR_TEST);
  69. +    QRect uiRect = GetMythMainWindow()->GetUIScreenRect();
  70. +    if (!clipRect.isEmpty())
  71. +        glScissor(qMax(clipRect.x(), 0), uiRect.height() - clipRect.height() - qMax(clipRect.y(), 0),
  72. +                  clipRect.width(), clipRect.height());
  73. +    else
  74. +        glScissor(0, 0, uiRect.width(), uiRect.height());
  75. +    realRender->doneCurrent();
  76. +}
  77. diff --git a/mythtv/libs/libmythui/mythpainter_ogl.h b/mythtv/libs/libmythui/mythpainter_ogl.h
  78. index 54588a6..52d02cb 100644
  79. --- a/mythtv/libs/libmythui/mythpainter_ogl.h
  80. +++ b/mythtv/libs/libmythui/mythpainter_ogl.h
  81. @@ -22,6 +22,7 @@ class MUI_PUBLIC MythOpenGLPainter : public MythPainter
  82.      virtual bool SupportsAnimation(void) { return true;              }
  83.      virtual bool SupportsAlpha(void)     { return true;              }
  84.      virtual bool SupportsClipping(void)  { return false;             }
  85. +    virtual void SetClipRect(const QRect &clipRect);
  86.      virtual void FreeResources(void);
  87.      virtual void Begin(QPaintDevice *parent);
  88.      virtual void End();
  89. diff --git a/mythtv/libs/libmythui/mythrender_opengl.cpp b/mythtv/libs/libmythui/mythrender_opengl.cpp
  90. index 787d632..4efa33f 100644
  91. --- a/mythtv/libs/libmythui/mythrender_opengl.cpp
  92. +++ b/mythtv/libs/libmythui/mythrender_opengl.cpp
  93. @@ -735,6 +735,7 @@ void MythRenderOpenGL::Init2DState(void)
  94.      SetBlend(false);
  95.      glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  96.      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  97. +    glEnable(GL_SCISSOR_TEST);
  98.      glDisable(GL_DEPTH_TEST);
  99.      glDepthMask(GL_FALSE);
  100.      glDisable(GL_CULL_FACE);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement