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 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)
 
virtual void PushTransformation ([[maybe_unused]] const UIEffects &zoom, [[maybe_unused]] QPointF center=QPointF())
 
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 : 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 14 of file mythpainteropengl.cpp.

◆ ~MythOpenGLPainter()

MythOpenGLPainter::~MythOpenGLPainter ( )
override

Definition at line 24 of file mythpainteropengl.cpp.

Member Function Documentation

◆ DeleteTextures()

void MythOpenGLPainter::DeleteTextures ( void  )

Definition at line 59 of file mythpainteropengl.cpp.

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

◆ GetName()

QString MythOpenGLPainter::GetName ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 36 of file mythpainteropengl.h.

◆ SupportsAnimation()

bool MythOpenGLPainter::SupportsAnimation ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 37 of file mythpainteropengl.h.

◆ SupportsAlpha()

bool MythOpenGLPainter::SupportsAlpha ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 38 of file mythpainteropengl.h.

◆ SupportsClipping()

bool MythOpenGLPainter::SupportsClipping ( void  )
inlineoverridevirtual

Implements MythPainter.

Definition at line 39 of file mythpainteropengl.h.

◆ FreeResources()

void MythOpenGLPainter::FreeResources ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 39 of file mythpainteropengl.cpp.

Referenced by ~MythOpenGLPainter().

◆ Begin()

void MythOpenGLPainter::Begin ( QPaintDevice *  Parent)
overridevirtual

Reimplemented from MythPainter.

Definition at line 90 of file mythpainteropengl.cpp.

◆ End()

void MythOpenGLPainter::End ( )
overridevirtual

Reimplemented from MythPainter.

Definition at line 150 of file mythpainteropengl.cpp.

◆ DrawImage()

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

Implements MythPainter.

Definition at line 246 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 283 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 312 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 324 of file mythpainteropengl.cpp.

◆ PushTransformation()

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

Definition at line 349 of file mythpainteropengl.cpp.

◆ PopTransformation()

void MythOpenGLPainter::PopTransformation ( void  )
overridevirtual

Reimplemented from MythPainter.

Definition at line 355 of file mythpainteropengl.cpp.

◆ ClearCache()

void MythOpenGLPainter::ClearCache ( void  )
protected

Definition at line 75 of file mythpainteropengl.cpp.

Referenced by FreeResources().

◆ GetTextureFromCache()

MythGLTexture * MythOpenGLPainter::GetTextureFromCache ( MythImage Image)
protected

Definition at line 172 of file mythpainteropengl.cpp.

Referenced by DrawImage().

◆ GetProceduralShader()

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

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

◆ DeleteFormatImagePriv()

void MythOpenGLPainter::DeleteFormatImagePriv ( MythImage Image)
overrideprotectedvirtual

Implements MythPainter.

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

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

◆ m_imageExpireList

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

Definition at line 66 of file mythpainteropengl.h.

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

◆ m_textureDeleteList

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

Definition at line 67 of file mythpainteropengl.h.

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

◆ m_mappedTextures

QVector<MythGLTexture*> MythOpenGLPainter::m_mappedTextures
protected

Definition at line 69 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 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_procedurals

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

Definition at line 74 of file mythpainteropengl.h.

Referenced by FreeResources(), and GetProceduralShader().


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