MythTV master
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MythOpenGLPainter Class Reference

#include <libmythui/opengl/mythpainteropengl.h>

Inheritance diagram for MythOpenGLPainter:
[legend]
Collaboration diagram for MythOpenGLPainter:
[legend]

Public Member Functions

 MythOpenGLPainter (MythRenderOpenGL *Render, MythMainWindow *Parent)
 
 ~MythOpenGLPainter () override
 
void DeleteTextures (void)
 
QString GetName (void) override
 
bool SupportsAnimation (void) override
 
bool SupportsAlpha (void) override
 
bool SupportsClipping (void) override
 
void FreeResources (void) override
 
void Begin (QPaintDevice *Parent) override
 
void End () override
 
void DrawImage (QRect Dest, MythImage *Image, QRect Source, int Alpha) override
 
void DrawProcedural (QRect Dest, int Alpha, const ProcSource &VertexSource, const ProcSource &FragmentSource, const QString &SourceHash) override
 
void DrawRect (QRect Area, const QBrush &FillBrush, const QPen &LinePen, int Alpha) override
 Draw a rectangle. More...
 
void DrawRoundRect (QRect Area, int CornerRadius, const QBrush &FillBrush, const QPen &LinePen, int Alpha) override
 
void PushTransformation (const UIEffects &Fx, QPointF Center=QPointF()) override
 
void PopTransformation (void) override
 
- Public Member Functions inherited from MythPainterGPU
 MythPainterGPU (MythMainWindow *Parent)
 
 ~MythPainterGPU () override=default
 
void SetViewControl (ViewControls Control)
 
- Public Member Functions inherited from MythPainter
 MythPainter ()
 
 ~MythPainter () override=default
 MythPainter destructor. More...
 
virtual QString GetName (void)=0
 
virtual bool SupportsAnimation (void)=0
 
virtual bool SupportsAlpha (void)=0
 
virtual bool SupportsClipping (void)=0
 
virtual void FreeResources (void)
 
virtual void Begin (QPaintDevice *)
 
virtual void End ()
 
virtual void SetClipRect (QRect clipRect)
 
virtual void SetClipRegion (const QRegion &clipRegion)
 
virtual void Clear (QPaintDevice *device, const QRegion &region)
 
virtual void DrawImage (QRect dest, MythImage *im, QRect src, int alpha)=0
 
void DrawImage (int x, int y, MythImage *im, int alpha)
 
void DrawImage (QPoint topLeft, MythImage *im, int alph)
 
virtual void DrawProcedural (QRect, int, const ProcSource &, const ProcSource &, const QString &)
 
virtual void DrawText (QRect r, const QString &msg, int flags, const MythFontProperties &font, int alpha, QRect boundRect)
 
virtual void DrawTextLayout (QRect canvasRect, const LayoutVector &layouts, const FormatVector &formats, const MythFontProperties &font, int alpha, QRect destRect)
 
virtual void DrawRect (QRect area, const QBrush &fillBrush, const QPen &linePen, int alpha)
 
virtual void DrawRoundRect (QRect area, int cornerRadius, const QBrush &fillBrush, const QPen &linePen, int alpha)
 
virtual void DrawEllipse (QRect area, const QBrush &fillBrush, const QPen &linePen, int alpha)
 
virtual void PushTransformation (const UIEffects &zoom, QPointF center=QPointF())
 
virtual void PopTransformation (void)
 
MythImageGetFormatImage ()
 Returns a blank reference counted image in the format required for the Draw functions for this painter. More...
 
void DeleteFormatImage (MythImage *im)
 
void SetDebugMode (bool showBorders, bool showNames)
 
bool ShowBorders (void) const
 
bool ShowTypeNames (void) const
 
void SetMaximumCacheSizes (int hardware, int software)
 

Protected Member Functions

void ClearCache (void)
 
MythGLTextureGetTextureFromCache (MythImage *Image)
 
QOpenGLShaderProgram * GetProceduralShader (const ProcSource &VertexSource, const ProcSource &FragmentSource, const QString &SourceHash)
 
MythImageGetFormatImagePriv (void) override
 Creates a reference counted image, call DecrRef() to delete. More...
 
void DeleteFormatImagePriv (MythImage *Image) override
 
- Protected Member Functions inherited from MythPainter
MythImageGetImageFromString (const QString &msg, int flags, QRect r, const MythFontProperties &font)
 
MythImageGetImageFromTextLayout (const LayoutVector &layouts, const FormatVector &formats, const MythFontProperties &font, QRect &canvas, QRect &dest)
 
MythImageGetImageFromRect (QRect area, int radius, int ellipse, const QBrush &fillBrush, const QPen &linePen)
 
virtual MythImageGetFormatImagePriv (void)=0
 Creates a reference counted image, call DecrRef() to delete. More...
 
virtual void DeleteFormatImagePriv (MythImage *im)=0
 
void ExpireImages (int64_t max=0)
 
virtual void Teardown (void)
 
void CheckFormatImage (MythImage *im)
 

Protected Attributes

MythRenderOpenGLm_render { nullptr }
 
QRecursiveMutex m_imageAndTextureLock
 
QMap< MythImage *, MythGLTexture * > m_imageToTextureMap
 
std::list< MythImage * > m_imageExpireList
 
std::list< MythGLTexture * > m_textureDeleteList
 
QVector< MythGLTexture * > m_mappedTextures
 
std::array< QOpenGLBuffer *, MAX_BUFFER_POOLm_mappedBufferPool { nullptr }
 
size_t m_mappedBufferPoolIdx { 0 }
 
bool m_mappedBufferPoolReady { false }
 
QHash< QString, QOpenGLShaderProgram * > m_procedurals
 
- Protected Attributes inherited from MythPainterGPU
MythMainWindowm_parent { nullptr }
 
ViewControls m_viewControl { Viewport | Framebuffer }
 
qreal m_pixelRatio { 1.0 }
 
bool m_usingHighDPI { false }
 
QSize m_lastSize
 
- Protected Attributes inherited from MythPainter
float m_frameTime { 0 }
 
int m_hardwareCacheSize { 0 }
 
int m_maxHardwareCacheSize { 0 }
 

Additional Inherited Members

- Public Types inherited from MythPainterGPU
enum  ViewControl : std::uint8_t { None = 0x00 , Viewport = 0x01 , Framebuffer = 0x02 }
 
- Public Slots inherited from MythPainterGPU
void CurrentDPIChanged (qreal DPI)
 
- Static Protected Member Functions inherited from MythPainter
static void DrawTextPriv (MythImage *im, const QString &msg, int flags, QRect r, const MythFontProperties &font)
 
static void DrawRectPriv (MythImage *im, QRect area, int radius, int ellipse, const QBrush &fillBrush, const QPen &linePen)
 

Detailed Description

Definition at line 26 of file mythpainteropengl.h.

Constructor & Destructor Documentation

◆ MythOpenGLPainter()

MythOpenGLPainter::MythOpenGLPainter ( MythRenderOpenGL Render,
MythMainWindow Parent 
)

Definition at line 15 of file mythpainteropengl.cpp.

◆ ~MythOpenGLPainter()

MythOpenGLPainter::~MythOpenGLPainter ( )
override

Definition at line 26 of file mythpainteropengl.cpp.

Member Function Documentation

◆ Begin()

void MythOpenGLPainter::Begin ( QPaintDevice *  Parent)
overridevirtual

Reimplemented from MythPainter.

Definition at line 92 of file mythpainteropengl.cpp.

◆ ClearCache()

void MythOpenGLPainter::ClearCache ( void  )
protected

Definition at line 77 of file mythpainteropengl.cpp.

Referenced by FreeResources().

◆ DeleteFormatImagePriv()

void MythOpenGLPainter::DeleteFormatImagePriv ( MythImage Image)
overrideprotectedvirtual

Implements MythPainter.

Definition at line 336 of file mythpainteropengl.cpp.

Referenced by GetTextureFromCache().

◆ DeleteTextures()

void MythOpenGLPainter::DeleteTextures ( void  )

Definition at line 61 of file mythpainteropengl.cpp.

Referenced by Begin(), FreeResources(), and GetTextureFromCache().

◆ DrawImage()

void MythOpenGLPainter::DrawImage ( QRect  Dest,
MythImage Image,
QRect  Source,
int  Alpha 
)
overridevirtual

Implements MythPainter.

Definition at line 242 of file mythpainteropengl.cpp.

◆ DrawProcedural()

void MythOpenGLPainter::DrawProcedural ( QRect  Dest,
int  Alpha,
const ProcSource VertexSource,
const ProcSource FragmentSource,
const QString &  SourceHash 
)
overridevirtual

Reimplemented from MythPainter.

Definition at line 281 of file mythpainteropengl.cpp.

◆ DrawRect()

void MythOpenGLPainter::DrawRect ( QRect  Area,
const QBrush &  FillBrush,
const QPen &  LinePen,
int  Alpha 
)
overridevirtual

Draw a rectangle.

If it is a simple rectangle, then use our own shaders for rendering (which saves texture memory but may not be as accurate as Qt rendering) otherwise fallback to Qt painting to a QImage, which is uploaded as a texture.

Note
If high DPI scaling is in use, just use Qt painting rather than handling all of the adjustments required for pen width etc etc.

Reimplemented from MythPainter.

Definition at line 310 of file mythpainteropengl.cpp.

◆ DrawRoundRect()

void MythOpenGLPainter::DrawRoundRect ( QRect  Area,
int  CornerRadius,
const QBrush &  FillBrush,
const QPen &  LinePen,
int  Alpha 
)
overridevirtual

Reimplemented from MythPainter.

Definition at line 322 of file mythpainteropengl.cpp.

◆ End()

void MythOpenGLPainter::End ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 152 of file mythpainteropengl.cpp.

◆ FreeResources()

void MythOpenGLPainter::FreeResources ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 41 of file mythpainteropengl.cpp.

Referenced by ~MythOpenGLPainter().

◆ GetFormatImagePriv()

MythImage * MythOpenGLPainter::GetFormatImagePriv ( void  )
inlineoverrideprotectedvirtual

Creates a reference counted image, call DecrRef() to delete.

Implements MythPainter.

Definition at line 58 of file mythpainteropengl.h.

◆ GetName()

QString MythOpenGLPainter::GetName ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 36 of file mythpainteropengl.h.

◆ GetProceduralShader()

QOpenGLShaderProgram * MythOpenGLPainter::GetProceduralShader ( const ProcSource VertexSource,
const ProcSource FragmentSource,
const QString &  SourceHash 
)
protected

Definition at line 287 of file mythpainteropengl.cpp.

Referenced by DrawProcedural().

◆ GetTextureFromCache()

MythGLTexture * MythOpenGLPainter::GetTextureFromCache ( MythImage Image)
protected

Definition at line 174 of file mythpainteropengl.cpp.

Referenced by DrawImage().

◆ PopTransformation()

void MythOpenGLPainter::PopTransformation ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 353 of file mythpainteropengl.cpp.

◆ PushTransformation()

void MythOpenGLPainter::PushTransformation ( const UIEffects Fx,
QPointF  Center = QPointF() 
)
overridevirtual

Reimplemented from MythPainter.

Definition at line 347 of file mythpainteropengl.cpp.

◆ SupportsAlpha()

bool MythOpenGLPainter::SupportsAlpha ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 38 of file mythpainteropengl.h.

◆ SupportsAnimation()

bool MythOpenGLPainter::SupportsAnimation ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 37 of file mythpainteropengl.h.

◆ SupportsClipping()

bool MythOpenGLPainter::SupportsClipping ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 39 of file mythpainteropengl.h.

Member Data Documentation

◆ m_imageAndTextureLock

QRecursiveMutex MythOpenGLPainter::m_imageAndTextureLock
protected

◆ m_imageExpireList

std::list<MythImage *> MythOpenGLPainter::m_imageExpireList
protected

Definition at line 66 of file mythpainteropengl.h.

Referenced by ClearCache(), DeleteFormatImagePriv(), and GetTextureFromCache().

◆ m_imageToTextureMap

QMap<MythImage *, MythGLTexture*> MythOpenGLPainter::m_imageToTextureMap
protected

Definition at line 65 of file mythpainteropengl.h.

Referenced by ClearCache(), DeleteFormatImagePriv(), and GetTextureFromCache().

◆ m_mappedBufferPool

std::array<QOpenGLBuffer*,MAX_BUFFER_POOL> MythOpenGLPainter::m_mappedBufferPool { nullptr }
protected

Definition at line 70 of file mythpainteropengl.h.

Referenced by Begin(), DrawImage(), and FreeResources().

◆ m_mappedBufferPoolIdx

size_t MythOpenGLPainter::m_mappedBufferPoolIdx { 0 }
protected

Definition at line 71 of file mythpainteropengl.h.

Referenced by DrawImage().

◆ m_mappedBufferPoolReady

bool MythOpenGLPainter::m_mappedBufferPoolReady { false }
protected

Definition at line 72 of file mythpainteropengl.h.

Referenced by Begin(), and FreeResources().

◆ m_mappedTextures

QVector<MythGLTexture*> MythOpenGLPainter::m_mappedTextures
protected

Definition at line 69 of file mythpainteropengl.h.

Referenced by DrawImage(), End(), and MythOpenGLPainter().

◆ m_procedurals

QHash<QString,QOpenGLShaderProgram*> MythOpenGLPainter::m_procedurals
protected

Definition at line 74 of file mythpainteropengl.h.

Referenced by FreeResources(), and GetProceduralShader().

◆ m_render

MythRenderOpenGL* MythOpenGLPainter::m_render { nullptr }
protected

◆ m_textureDeleteList

std::list<MythGLTexture*> MythOpenGLPainter::m_textureDeleteList
protected

Definition at line 67 of file mythpainteropengl.h.

Referenced by ClearCache(), DeleteFormatImagePriv(), and DeleteTextures().


The documentation for this class was generated from the following files: