00001 #ifndef MYTHPAINTER_OPENGL_H_
00002 #define MYTHPAINTER_OPENGL_H_
00003
00004 #include "mythpainter.h"
00005 #include "mythimage.h"
00006
00007 #include <list>
00008 using namespace std;
00009
00010 class MythOpenGLPainter : public MythPainter
00011 {
00012 public:
00013 MythOpenGLPainter();
00014 ~MythOpenGLPainter();
00015
00016 virtual QString GetName(void) { return QString("OpenGL"); }
00017 virtual bool SupportsAnimation(void) { return true; }
00018 virtual bool SupportsAlpha(void) { return true; }
00019 virtual bool SupportsClipping(void) { return false; }
00020
00021 virtual void Begin(QWidget *parent);
00022 virtual void End();
00023
00024 virtual void DrawImage(const QRect &dest, MythImage *im, const QRect &src,
00025 int alpha);
00026 virtual void DrawText(const QRect &dest, const QString &msg, int flags,
00027 const MythFontProperties &font, int alpha);
00028
00029 virtual MythImage *GetFormatImage();
00030 virtual void DeleteFormatImage(MythImage *im);
00031
00032 protected:
00033 void RemoveImageFromCache(MythImage *im);
00034 void BindTextureFromCache(MythImage *im, bool alphaonly = false);
00035
00036 inline int CalcAlpha(int alpha1, int alpha2);
00037
00038 int NearestGLTextureSize(int v);
00039
00040 void ReallyDrawText(QColor color, const QRect &r, int alpha);
00041 MythImage *GetImageFromString(const QString &msg, int flags, const QRect &r,
00042 const MythFontProperties &font);
00043
00044 QMap<MythImage *, unsigned int> m_ImageIntMap;
00045 list<MythImage *> m_ImageExpireList;
00046
00047 QMap<QString, MythImage *> m_StringToImageMap;
00048 list<QString> m_StringExpireList;
00049
00050 int q_gl_texture;
00051 bool texture_rects;
00052 int m_maxTexDim;
00053 };
00054
00055 #endif