diff options
author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2009-10-09 09:15:26 +0200 |
---|---|---|
committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2009-10-09 09:15:26 +0200 |
commit | 92173126abead8179491eb06d886e6e0ce8bc93a (patch) | |
tree | f49691d547bd55b08fa4c80396d71c3e2daa1e4c | |
parent | 3dfdf27669ec33b777cc0b18000e2e5c84dee0a9 (diff) | |
download | vdr-plugin-dxr3-92173126abead8179491eb06d886e6e0ce8bc93a.tar.gz vdr-plugin-dxr3-92173126abead8179491eb06d886e6e0ce8bc93a.tar.bz2 |
add a mergedBitmap, which will containt all areas bitmaps
-rw-r--r-- | dxr3osd.c | 16 | ||||
-rw-r--r-- | dxr3osd.h | 1 |
2 files changed, 17 insertions, 0 deletions
@@ -67,6 +67,7 @@ public: cDxr3Osd::cDxr3Osd(int Left, int Top, uint Level) : cOsd(Left, Top, Level) { + mergedBitmap = NULL; shown = false; Palette = new cPalette(4); last = new cTimeMs(); @@ -80,6 +81,9 @@ cDxr3Osd::~cDxr3Osd() SetActive(false); delete Palette; delete last; + + if (mergedBitmap) + delete mergedBitmap; } // ================================== @@ -142,6 +146,18 @@ eOsdError cDxr3Osd::SetAreas(const tArea *Areas, int NumAreas) memcpy(areas, Areas, sizeof(tArea) * NumAreas); numAreas = NumAreas; + // allocate a new bitmap, which will contain all areas + if (numAreas > 1) { + + int w = areas[numAreas - 1].x2; + int h = areas[numAreas - 1].y2; + + if (mergedBitmap) + delete mergedBitmap; + + mergedBitmap = new cBitmap(w, h, 4, 0, 0); + } + return cOsd::SetAreas(Areas, NumAreas); } @@ -35,6 +35,7 @@ private: cTimeMs *last; tArea areas[MAXNUMWINDOWS]; int numAreas; + cBitmap *mergedBitmap; }; #endif /*_DXR3_OSD_H_*/ |