summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2004-01-31 10:34:05 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2004-01-31 10:34:05 +0100
commita09f209122e811b471e7148d616ce95b84dd548e (patch)
treec978b1de857992e63747a84a366b5727e0bb72fc
parentf48061576e6c23e6fab8e6de7a6a881ebcbde62e (diff)
downloadvdr-a09f209122e811b471e7148d616ce95b84dd548e.tar.gz
vdr-a09f209122e811b471e7148d616ce95b84dd548e.tar.bz2
Fixed handling bitmap indexes for 256 color mode
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY1
-rw-r--r--osdbase.c16
-rw-r--r--osdbase.h12
4 files changed, 18 insertions, 14 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index df80aa46..aa4a0d10 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -925,3 +925,6 @@ Christian Tramnitz <maillist@tramnitz.com>
Jens Rosenboom <me@jayr.de>
for fixing the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case
the disk is full
+
+Andreas Regel <andreas.regel@gmx.de>
+ for fixing handling bitmap indexes for 256 color mode
diff --git a/HISTORY b/HISTORY
index 0eccb5c2..d6a8284a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2633,3 +2633,4 @@ Video Disk Recorder Revision History
- Fixed handling CA ids (was broken in 1.3.4).
- Fixed the SVDRP command 'STAT DISK' to avoid a 'division by 0' in case the
disk is full (thanks to Jens Rosenboom).
+- Fixed handling bitmap indexes for 256 color mode (thanks to Andreas Regel).
diff --git a/osdbase.c b/osdbase.c
index 2ba4de85..71794068 100644
--- a/osdbase.c
+++ b/osdbase.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: osdbase.c 1.11 2003/10/19 14:32:32 kls Exp $
+ * $Id: osdbase.c 1.12 2004/01/31 10:31:13 kls Exp $
*/
#include "osdbase.h"
@@ -116,7 +116,7 @@ cBitmap::cBitmap(int Width, int Height, int Bpp, bool ClearWithBackground)
fontType = fontOsd;
font = NULL;
if (width > 0 && height > 0) {
- bitmap = MALLOC(char, width * height);
+ bitmap = MALLOC(u_char, width * height);
if (bitmap) {
Clean();
memset(bitmap, 0x00, width * height);
@@ -186,7 +186,7 @@ void cBitmap::Clean(void)
dirtyY2 = -1;
}
-void cBitmap::SetIndex(int x, int y, char Index)
+void cBitmap::SetIndex(int x, int y, u_char Index)
{
if (bitmap) {
if (0 <= x && x < width && 0 <= y && y < height) {
@@ -231,8 +231,8 @@ int cBitmap::Width(const char *s)
void cBitmap::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor ColorBg)
{
if (bitmap) {
- char fg = Index(ColorFg);
- char bg = Index(ColorBg);
+ u_char fg = Index(ColorFg);
+ u_char bg = Index(ColorBg);
int h = font->Height(s);
while (s && *s) {
const cFont::tCharData *CharData = font->CharData(*s++);
@@ -253,7 +253,7 @@ void cBitmap::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor Col
void cBitmap::Fill(int x1, int y1, int x2, int y2, eDvbColor Color)
{
if (bitmap) {
- char c = Index(Color);
+ u_char c = Index(Color);
for (int y = y1; y <= y2; y++)
for (int x = x1; x <= x2; x++)
SetIndex(x, y, c);
@@ -267,7 +267,7 @@ void cBitmap::Clear(void)
Fill(0, 0, width - 1, height - 1, clrBackground);
}
-const char *cBitmap::Data(int x, int y)
+const u_char *cBitmap::Data(int x, int y)
{
return &bitmap[y * width + x];
}
@@ -327,7 +327,7 @@ void cWindow::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor Col
cBitmap::Text(x, y, s, ColorFg, ColorBg);
}
-const char *cWindow::Data(int x, int y)
+const u_char *cWindow::Data(int x, int y)
{
return cBitmap::Data(x, y);
}
diff --git a/osdbase.h b/osdbase.h
index a77d4f96..3277d820 100644
--- a/osdbase.h
+++ b/osdbase.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: osdbase.h 1.8 2004/01/04 15:19:20 kls Exp $
+ * $Id: osdbase.h 1.9 2004/01/31 10:28:49 kls Exp $
*/
#ifndef __OSDBASE_H
@@ -49,7 +49,7 @@ private:
bool fetched[MAXNUMCOLORS];
bool full;
protected:
- typedef unsigned char tIndexes[MAXNUMCOLORS];
+ typedef u_char tIndexes[MAXNUMCOLORS];
public:
cPalette(int Bpp);
int Index(eDvbColor Color);
@@ -75,7 +75,7 @@ class cBitmap : public cPalette {
private:
const cFont *font;
eDvbFont fontType;
- char *bitmap;
+ u_char *bitmap;
bool clearWithBackground;
protected:
int width, height;
@@ -86,7 +86,7 @@ public:
bool ClearWithBackground(void) { return clearWithBackground; }
eDvbFont SetFont(eDvbFont Font);
bool Dirty(int &x1, int &y1, int &x2, int &y2);
- void SetIndex(int x, int y, char Index);
+ void SetIndex(int x, int y, u_char Index);
void SetPixel(int x, int y, eDvbColor Color);
void SetBitmap(int x, int y, const cBitmap &Bitmap);
int Width(void) { return width; }
@@ -97,7 +97,7 @@ public:
void Fill(int x1, int y1, int x2, int y2, eDvbColor Color);
void Clean(void);
void Clear(void);
- const char *Data(int x, int y);
+ const u_char *Data(int x, int y);
};
#define MAXNUMWINDOWS 7 // OSD windows are counted 1...7
@@ -122,7 +122,7 @@ public:
void Fill(int x1, int y1, int x2, int y2, eDvbColor Color);
void SetBitmap(int x, int y, const cBitmap &Bitmap);
void Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground);
- const char *Data(int x, int y);
+ const u_char *Data(int x, int y);
};
typedef int tWindowHandle;