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 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 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)
 
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)
 
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 { 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 28 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 58 of file mythpainteropengl.cpp.

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

◆ GetName()

QString MythOpenGLPainter::GetName ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 38 of file mythpainteropengl.h.

◆ SupportsAnimation()

bool MythOpenGLPainter::SupportsAnimation ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 39 of file mythpainteropengl.h.

◆ SupportsAlpha()

bool MythOpenGLPainter::SupportsAlpha ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 40 of file mythpainteropengl.h.

◆ SupportsClipping()

bool MythOpenGLPainter::SupportsClipping ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 41 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 89 of file mythpainteropengl.cpp.

◆ End()

void MythOpenGLPainter::End ( )
overridevirtual

Reimplemented from MythPainter.

Definition at line 149 of file mythpainteropengl.cpp.

◆ DrawImage()

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

Implements MythPainter.

Definition at line 245 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 282 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 311 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 323 of file mythpainteropengl.cpp.

◆ PushTransformation()

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

Reimplemented from MythPainter.

Definition at line 348 of file mythpainteropengl.cpp.

◆ PopTransformation()

void MythOpenGLPainter::PopTransformation ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 354 of file mythpainteropengl.cpp.

◆ ClearCache()

void MythOpenGLPainter::ClearCache ( void  )
protected

Definition at line 74 of file mythpainteropengl.cpp.

Referenced by FreeResources().

◆ GetTextureFromCache()

MythGLTexture * MythOpenGLPainter::GetTextureFromCache ( MythImage Image)
protected

Definition at line 171 of file mythpainteropengl.cpp.

Referenced by DrawImage().

◆ GetProceduralShader()

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

Definition at line 288 of file mythpainteropengl.cpp.

Referenced by DrawProcedural().

◆ GetFormatImagePriv()

MythImage* MythOpenGLPainter::GetFormatImagePriv ( void  )
inlineoverrideprotectedvirtual

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

Implements MythPainter.

Definition at line 60 of file mythpainteropengl.h.

◆ DeleteFormatImagePriv()

void MythOpenGLPainter::DeleteFormatImagePriv ( MythImage Image)
overrideprotectedvirtual

Implements MythPainter.

Definition at line 337 of file mythpainteropengl.cpp.

Referenced by GetTextureFromCache().

Member Data Documentation

◆ m_render

MythRenderOpenGL* MythOpenGLPainter::m_render { nullptr }
protected

◆ m_imageAndTextureLock

QRecursiveMutex MythOpenGLPainter::m_imageAndTextureLock
protected

◆ m_imageToTextureMap

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

Definition at line 71 of file mythpainteropengl.h.

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

◆ m_imageExpireList

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

Definition at line 72 of file mythpainteropengl.h.

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

◆ m_textureDeleteList

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

Definition at line 73 of file mythpainteropengl.h.

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

◆ m_mappedTextures

QVector<MythGLTexture*> MythOpenGLPainter::m_mappedTextures
protected

Definition at line 75 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 76 of file mythpainteropengl.h.

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

◆ m_mappedBufferPoolIdx

size_t MythOpenGLPainter::m_mappedBufferPoolIdx { 0 }
protected

Definition at line 77 of file mythpainteropengl.h.

Referenced by DrawImage().

◆ m_mappedBufferPoolReady

bool MythOpenGLPainter::m_mappedBufferPoolReady { false }
protected

Definition at line 78 of file mythpainteropengl.h.

Referenced by Begin(), and FreeResources().

◆ m_procedurals

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

Definition at line 80 of file mythpainteropengl.h.

Referenced by FreeResources(), and GetProceduralShader().


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