summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2009-10-09 09:15:26 +0200
committerChristian Gmeiner <christian.gmeiner@gmail.com>2009-10-09 09:15:26 +0200
commit92173126abead8179491eb06d886e6e0ce8bc93a (patch)
treef49691d547bd55b08fa4c80396d71c3e2daa1e4c
parent3dfdf27669ec33b777cc0b18000e2e5c84dee0a9 (diff)
downloadvdr-plugin-dxr3-92173126abead8179491eb06d886e6e0ce8bc93a.tar.gz
vdr-plugin-dxr3-92173126abead8179491eb06d886e6e0ce8bc93a.tar.bz2
add a mergedBitmap, which will containt all areas bitmaps
-rw-r--r--dxr3osd.c16
-rw-r--r--dxr3osd.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/dxr3osd.c b/dxr3osd.c
index 6ece3c9..f9bed42 100644
--- a/dxr3osd.c
+++ b/dxr3osd.c
@@ -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);
}
diff --git a/dxr3osd.h b/dxr3osd.h
index e4bfa2e..42cc8c6 100644
--- a/dxr3osd.h
+++ b/dxr3osd.h
@@ -35,6 +35,7 @@ private:
cTimeMs *last;
tArea areas[MAXNUMWINDOWS];
int numAreas;
+ cBitmap *mergedBitmap;
};
#endif /*_DXR3_OSD_H_*/