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

#include <mythpainteropengl.h>

Inheritance diagram for MythOpenGLPainter:
Inheritance graph
[legend]
Collaboration diagram for MythOpenGLPainter:
Collaboration graph
[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 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 void SetClipRect (QRect clipRect)
 
virtual void SetClipRegion (const QRegion &clipRegion)
 
virtual void Clear (QPaintDevice *device, const QRegion &region)
 
void DrawImage (int x, int y, MythImage *im, int alpha)
 
void DrawImage (QPoint topLeft, MythImage *im, int alph)
 
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 DrawEllipse (QRect area, const QBrush &fillBrush, const QPen &linePen, int alpha)
 
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)
 
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)
 
void ExpireImages (int64_t max=0)
 
virtual void Teardown (void)
 
void CheckFormatImage (MythImage *im)
 

Protected Attributes

MythRenderOpenGLm_render { nullptr }
 
QMap< MythImage *, MythGLTexture * > m_imageToTextureMap
 
std::list< MythImage * > m_imageExpireList
 
std::list< MythGLTexture * > m_textureDeleteList
 
QMutex m_textureDeleteLock
 
QVector< MythGLTexture * > m_mappedTextures
 
std::array< QOpenGLBuffer *, MAX_BUFFER_POOLm_mappedBufferPool { nullptr }
 
size_t m_mappedBufferPoolIdx { 0 }
 
bool m_mappedBufferPoolReady { false }
 
- 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
int m_hardwareCacheSize { 0 }
 
int m_maxHardwareCacheSize { 0 }
 

Additional Inherited Members

- Public Types inherited from MythPainterGPU
enum  ViewControl { 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 23 of file mythpainteropengl.h.

Constructor & Destructor Documentation

◆ MythOpenGLPainter()

MythOpenGLPainter::MythOpenGLPainter ( MythRenderOpenGL Render,
MythMainWindow Parent 
)

Definition at line 13 of file mythpainteropengl.cpp.

◆ ~MythOpenGLPainter()

MythOpenGLPainter::~MythOpenGLPainter ( )
override

Definition at line 23 of file mythpainteropengl.cpp.

Member Function Documentation

◆ DeleteTextures()

void MythOpenGLPainter::DeleteTextures ( void  )

Definition at line 56 of file mythpainteropengl.cpp.

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

◆ GetName()

QString MythOpenGLPainter::GetName ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 33 of file mythpainteropengl.h.

◆ SupportsAnimation()

bool MythOpenGLPainter::SupportsAnimation ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 34 of file mythpainteropengl.h.

◆ SupportsAlpha()

bool MythOpenGLPainter::SupportsAlpha ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 35 of file mythpainteropengl.h.

◆ SupportsClipping()

bool MythOpenGLPainter::SupportsClipping ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 36 of file mythpainteropengl.h.

◆ FreeResources()

void MythOpenGLPainter::FreeResources ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 38 of file mythpainteropengl.cpp.

Referenced by ~MythOpenGLPainter().

◆ Begin()

void MythOpenGLPainter::Begin ( QPaintDevice *  Parent)
overridevirtual

Reimplemented from MythPainter.

Definition at line 87 of file mythpainteropengl.cpp.

◆ End()

void MythOpenGLPainter::End ( )
overridevirtual

Reimplemented from MythPainter.

Definition at line 146 of file mythpainteropengl.cpp.

◆ DrawImage()

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

Implements MythPainter.

Definition at line 237 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 283 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 295 of file mythpainteropengl.cpp.

◆ PushTransformation()

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

Reimplemented from MythPainter.

Definition at line 320 of file mythpainteropengl.cpp.

◆ PopTransformation()

void MythOpenGLPainter::PopTransformation ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 326 of file mythpainteropengl.cpp.

◆ ClearCache()

void MythOpenGLPainter::ClearCache ( void  )
protected

Definition at line 72 of file mythpainteropengl.cpp.

Referenced by FreeResources().

◆ GetTextureFromCache()

MythGLTexture * MythOpenGLPainter::GetTextureFromCache ( MythImage Image)
protected

Definition at line 168 of file mythpainteropengl.cpp.

Referenced by DrawImage().

◆ GetFormatImagePriv()

MythImage* MythOpenGLPainter::GetFormatImagePriv ( void  )
inlineoverrideprotectedvirtual

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

Implements MythPainter.

Definition at line 52 of file mythpainteropengl.h.

◆ DeleteFormatImagePriv()

void MythOpenGLPainter::DeleteFormatImagePriv ( MythImage Image)
overrideprotectedvirtual

Implements MythPainter.

Definition at line 309 of file mythpainteropengl.cpp.

Referenced by GetTextureFromCache().

Member Data Documentation

◆ m_render

MythRenderOpenGL* MythOpenGLPainter::m_render { nullptr }
protected

◆ m_imageToTextureMap

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

Definition at line 58 of file mythpainteropengl.h.

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

◆ m_imageExpireList

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

Definition at line 59 of file mythpainteropengl.h.

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

◆ m_textureDeleteList

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

Definition at line 60 of file mythpainteropengl.h.

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

◆ m_textureDeleteLock

QMutex MythOpenGLPainter::m_textureDeleteLock
protected

Definition at line 61 of file mythpainteropengl.h.

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

◆ m_mappedTextures

QVector<MythGLTexture*> MythOpenGLPainter::m_mappedTextures
protected

Definition at line 63 of file mythpainteropengl.h.

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

◆ m_mappedBufferPool

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

Definition at line 64 of file mythpainteropengl.h.

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

◆ m_mappedBufferPoolIdx

size_t MythOpenGLPainter::m_mappedBufferPoolIdx { 0 }
protected

Definition at line 65 of file mythpainteropengl.h.

Referenced by DrawImage().

◆ m_mappedBufferPoolReady

bool MythOpenGLPainter::m_mappedBufferPoolReady { false }
protected

Definition at line 66 of file mythpainteropengl.h.

Referenced by Begin(), and FreeResources().


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