00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(FREEMHEG_H)
00023 #define FREEMHEG_H
00024
00025 #include <QRegion>
00026
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029
00030 class MHDLADisplay;
00031 class MHTextDisplay;
00032 class MHBitmapDisplay;
00033 class MHContext;
00034 class MHEG;
00035
00036
00037 extern MHEG *MHCreateEngine(MHContext *context);
00038
00039 extern void MHSetLogging(FILE *logStream, unsigned int logLevel);
00040
00041
00042 class MHEG
00043 {
00044 public:
00045 virtual ~MHEG() {}
00046 virtual void SetBooting() = 0;
00047 virtual void DrawDisplay(QRegion toDraw) = 0;
00048
00049
00050 virtual int RunAll(void) = 0;
00051
00052 virtual void GenerateUserAction(int nCode) = 0;
00053 virtual void EngineEvent(int) = 0;
00054 };
00055
00056
00057 enum {
00058 MHLogError = 1,
00059 MHLogWarning = 2,
00060 MHLogNotifications = 4,
00061 MHLogScenes = 8,
00062 MHLogActions = 16,
00063 MHLogLinks = 32,
00064 MHLogDetail = 64
00065 };
00066
00067 #define MHLogAll (MHLogError|MHLogWarning|MHLogNotifications|MHLogScenes|MHLogActions|MHLogLinks|MHLogDetail)
00068
00069 class MHRgba
00070 {
00071 public:
00072 MHRgba(int red, int green, int blue, int alpha):
00073 m_red(red), m_green(green), m_blue(blue), m_alpha(alpha) {};
00074 MHRgba(): m_red(0), m_green(0), m_blue(0), m_alpha(0) {};
00075 int red() const { return m_red; }
00076 int green() const { return m_green; }
00077 int blue() const { return m_blue; }
00078 int alpha() const { return m_alpha; }
00079 private:
00080 unsigned char m_red, m_green, m_blue, m_alpha;
00081 };
00082
00083
00084
00085 class MHContext
00086 {
00087 public:
00088 virtual ~MHContext() {}
00089
00090
00091
00092
00093
00094
00095 virtual bool CheckCarouselObject(QString objectPath) = 0;
00096
00097
00098
00099
00100
00101 virtual bool GetCarouselData(QString objectPath, QByteArray &result) = 0;
00102
00103
00104 virtual void SetInputRegister(int nReg) = 0;
00105
00106
00107 virtual void RequireRedraw(const QRegion ®ion) = 0;
00108
00109
00110 virtual MHDLADisplay *CreateDynamicLineArt(bool isBoxed, MHRgba lineColour, MHRgba fillColour) = 0;
00111 virtual MHTextDisplay *CreateText(void) = 0;
00112 virtual MHBitmapDisplay *CreateBitmap(bool tiled) = 0;
00113
00114
00115 virtual void DrawRect(int xPos, int yPos, int width, int height, MHRgba colour) = 0;
00116 virtual void DrawVideo(const QRect &videoRect, const QRect &displayRect) = 0;
00117 virtual void DrawBackground(const QRegion ®) = 0;
00118
00119
00120 virtual int GetChannelIndex(const QString &str) = 0;
00121
00122 virtual bool GetServiceInfo(int channelId, int &netId, int &origNetId,
00123 int &transportId, int &serviceId) = 0;
00124
00125 virtual bool TuneTo(int channel, int tuneinfo) = 0;
00126
00127
00128
00129 virtual bool CheckStop(void) = 0;
00130
00131
00132 virtual bool BeginAudio(const QString &stream, int tag) = 0;
00133
00134 virtual void StopAudio(void) = 0;
00135
00136 virtual bool BeginVideo(const QString &stream, int tag) = 0;
00137
00138 virtual void StopVideo(void) = 0;
00139
00140
00141 virtual const char *GetReceiverId(void) = 0;
00142 virtual const char *GetDSMCCId(void) = 0;
00143 };
00144
00145
00146 class MHDLADisplay
00147 {
00148 public:
00149 virtual ~MHDLADisplay() {}
00150
00151 virtual void Draw(int x, int y) = 0;
00152
00153 virtual void SetSize(int width, int height) = 0;
00154 virtual void SetLineSize(int width) = 0;
00155 virtual void SetLineColour(MHRgba colour) = 0;
00156 virtual void SetFillColour(MHRgba colour) = 0;
00157
00158 virtual void Clear() = 0;
00159
00160 virtual void DrawLine(int x1, int y1, int x2, int y2) = 0;
00161 virtual void DrawBorderedRectangle(int x, int y, int width, int height) = 0;
00162 virtual void DrawOval(int x, int y, int width, int height) = 0;
00163 virtual void DrawArcSector(int x, int y, int width, int height, int start, int arc, bool isSector) = 0;
00164 virtual void DrawPoly(bool isFilled, int nPoints, const int xArray[], const int yArray[]) = 0;
00165 };
00166
00167 class MHTextDisplay {
00168 public:
00169 virtual ~MHTextDisplay() {}
00170
00171
00172
00173 virtual void Draw(int x, int y) = 0;
00174 virtual void SetSize(int width, int height) = 0;
00175 virtual void SetFont(int size, bool isBold, bool isItalic) = 0;
00176
00177
00178 virtual QRect GetBounds(const QString &str, int &strLen, int maxSize = -1) = 0;
00179 virtual void Clear(void) = 0;
00180 virtual void AddText(int x, int y, const QString &, MHRgba colour) = 0;
00181 };
00182
00183 class MHBitmapDisplay
00184 {
00185 public:
00186 virtual ~MHBitmapDisplay() {}
00187
00188
00189
00190 virtual void Draw(int x, int y, QRect rect, bool tiled) = 0;
00191
00192 virtual void CreateFromPNG(const unsigned char *data, int length) = 0;
00193 virtual void CreateFromMPEG(const unsigned char *data, int length) = 0;
00194
00195 virtual void ScaleImage(int newWidth, int newHeight) = 0;
00196
00197 virtual QSize GetSize() = 0;
00198 virtual bool IsOpaque() = 0;
00199
00200 };
00201
00202 #endif