summaryrefslogtreecommitdiff
path: root/patches/vdr-1.2.6-palette.diff
diff options
context:
space:
mode:
authorAndreas Regel <andreas.regel@powarman.de>2004-06-13 23:00:00 +0200
committerAndreas Regel <andreas.regel@powarman.de>2004-06-13 23:00:00 +0200
commit1df133b2a0565a35c3b07e043bd04b449869a0cb (patch)
tree7e29cb4b4e7ed2143a96b06a114cf68320ca9a2e /patches/vdr-1.2.6-palette.diff
parent2e17045cd1b8abe771d136cbc3a815b547d32280 (diff)
downloadvdr-plugin-osdpip-0.0.5.tar.gz
vdr-plugin-osdpip-0.0.5.tar.bz2
Release version 0.0.5v0.0.5
- added support for VDR version 1.3.7 and later (VDR 1.2.6 is still supported, no guarantee for 1.3.0-1.3.6) - no patching required any longer with 1.3.7 and later - fixed info window colors if palette patch is not applied (VDR up to 1.3.6, index patch must be applied) - added german translations - added finnish translations (thanks to Rolf Ahrenberg)
Diffstat (limited to 'patches/vdr-1.2.6-palette.diff')
-rw-r--r--patches/vdr-1.2.6-palette.diff139
1 files changed, 139 insertions, 0 deletions
diff --git a/patches/vdr-1.2.6-palette.diff b/patches/vdr-1.2.6-palette.diff
new file mode 100644
index 0000000..46559a9
--- /dev/null
+++ b/patches/vdr-1.2.6-palette.diff
@@ -0,0 +1,139 @@
+--- vdrold/osdbase.c 2004-06-13 13:58:22.000000000 +0200
++++ vdr-1.2.6/osdbase.c 2004-06-13 14:01:26.000000000 +0200
+@@ -104,6 +104,12 @@
+ }
+ }
+
++void cPalette::Replace(const cPalette &Palette)
++{
++ for (int i = 0; i < Palette.numColors; i++)
++ SetColor(i, Palette.color[i]);
++}
++
+ // --- cBitmap ---------------------------------------------------------------
+
+ cBitmap::cBitmap(int Width, int Height, int Bpp, bool ClearWithBackground)
+@@ -116,7 +122,7 @@
+ fontType = fontOsd;
+ font = NULL;
+ if (width > 0 && height > 0) {
+- bitmap = MALLOC(char, width * height);
++ bitmap = MALLOC(unsigned char, width * height);
+ if (bitmap) {
+ Clean();
+ memset(bitmap, 0x00, width * height);
+@@ -188,7 +194,7 @@
+ dirtyY2 = -1;
+ }
+
+-void cBitmap::SetIndex(int x, int y, char Index)
++void cBitmap::SetIndex(int x, int y, unsigned char Index)
+ {
+ if (bitmap) {
+ if (0 <= x && x < width && 0 <= y && y < height) {
+@@ -220,6 +226,17 @@
+ }
+ }
+
++void cBitmap::SetBitmap256(int x, int y, const cBitmap &Bitmap)
++{
++ if (bitmap && Bitmap.bitmap) {
++ Replace(Bitmap);
++ for (int ix = 0; ix < Bitmap.width; ix++) {
++ for (int iy = 0; iy < Bitmap.height; iy++)
++ SetIndex(x + ix, y + iy, Bitmap.bitmap[Bitmap.width * iy + ix]);
++ }
++ }
++}
++
+ int cBitmap::Width(unsigned char c)
+ {
+ return font ? font->Width(c) : -1;
+@@ -269,7 +286,7 @@
+ Fill(0, 0, width - 1, height - 1, clrBackground);
+ }
+
+-const char *cBitmap::Data(int x, int y)
++const unsigned char *cBitmap::Data(int x, int y)
+ {
+ return &bitmap[y * width + x];
+ }
+@@ -317,7 +334,10 @@
+ x -= x0;
+ y -= y0;
+ }
+- cBitmap::SetBitmap(x, y, Bitmap);
++ if (bpp == 8)
++ cBitmap::SetBitmap256(x, y, Bitmap);
++ else
++ cBitmap::SetBitmap(x, y, Bitmap);
+ }
+
+ void cWindow::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor ColorBg)
+@@ -329,7 +349,7 @@
+ cBitmap::Text(x, y, s, ColorFg, ColorBg);
+ }
+
+-const char *cWindow::Data(int x, int y)
++const unsigned char *cWindow::Data(int x, int y)
+ {
+ return cBitmap::Data(x, y);
+ }
+--- vdrold/osdbase.h 2004-06-13 14:05:47.000000000 +0200
++++ vdr-1.2.6/osdbase.h 2004-06-13 13:59:45.000000000 +0200
+@@ -13,7 +13,8 @@
+ #include <stdio.h>
+ #include "font.h"
+
+-#define MAXNUMCOLORS 16
++#define MAXNUMCOLORS 256
++#define VDR_OSDPIP_PATCHED
+
+ enum eDvbColor {
+ #ifdef DEBUG_OSD
+@@ -69,13 +70,14 @@
+ // stored yet, NumColors will be set to 0 and the function will
+ // return NULL.
+ void Take(const cPalette &Palette, tIndexes *Indexes = NULL);
++ void Replace(const cPalette &Palette);
+ };
+
+ class cBitmap : public cPalette {
+ private:
+ cFont *font;
+ eDvbFont fontType;
+- char *bitmap;
++ unsigned char *bitmap;
+ bool clearWithBackground;
+ protected:
+ int width, height;
+@@ -86,9 +88,10 @@
+ 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, unsigned char Index);
+ void SetPixel(int x, int y, eDvbColor Color);
+ void SetBitmap(int x, int y, const cBitmap &Bitmap);
++ void SetBitmap256(int x, int y, const cBitmap &Bitmap);
+ int Width(void) { return width; }
+ int Width(unsigned char c);
+ int Width(const char *s);
+@@ -97,7 +100,7 @@
+ 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 unsigned char *Data(int x, int y);
+ };
+
+ #define MAXNUMWINDOWS 7 // OSD windows are counted 1...7
+@@ -122,7 +125,7 @@
+ 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 unsigned char *Data(int x, int y);
+ };
+
+ typedef int tWindowHandle;