summaryrefslogtreecommitdiff
path: root/patchfont.c
diff options
context:
space:
mode:
Diffstat (limited to 'patchfont.c')
-rw-r--r--patchfont.c163
1 files changed, 163 insertions, 0 deletions
diff --git a/patchfont.c b/patchfont.c
new file mode 100644
index 0000000..320e036
--- /dev/null
+++ b/patchfont.c
@@ -0,0 +1,163 @@
+/*
+ * See the README file for copyright information and how to reach the author.
+ */
+
+#include <vdr/font.h>
+#include "patchfont.h"
+#include "mymenusetup.h"
+
+void PatchFont(eDvbFont DvbFont)
+{
+ const cFont *font = cFont::GetFont(DvbFont);
+ int num_rows_global = font->Height();
+ int num_rows = num_rows_global+2;
+ int i,j,num_char;
+
+ cFont::tPixelData* font_data = new cFont::tPixelData[225*(num_rows)];
+
+ for (i = 0; i < 225; i++)
+ for (j = 0; j < num_rows; j++)
+ font_data[(i*num_rows)+j]=0x0000000000000000;
+
+ font_data[0+0]=6;//font->CharData(0)->width;
+ font_data[0+1]=num_rows_global;
+
+ for(num_char=33, i = 1; num_char<256; i++, num_char++)
+ {
+ const cFont::tCharData* char_data = font->CharData(num_char);
+ font_data[i*num_rows+0] = (num_char>=127 && num_char<=129)?6:char_data->width;
+ font_data[i*num_rows+1] = char_data->height;
+
+ // new marker
+ if(num_char==250&&mysetup.PatchNew)
+ {
+ if(DvbFont==fontOsd)
+ {
+ font_data[i*num_rows+ 0]=16;
+ font_data[i*num_rows+ 1]=27;
+ font_data[i*num_rows+ 2]=0; // ................
+ font_data[i*num_rows+ 3]=0xc600; // ##...##.........
+ font_data[i*num_rows+ 4]=0xe600; // ###..##.........
+ font_data[i*num_rows+ 5]=0xf600; // ####.##.........
+ font_data[i*num_rows+ 6]=0xf600; // ####.##.........
+ font_data[i*num_rows+ 7]=0xde00; // ##.####.........
+ font_data[i*num_rows+ 8]=0xde00; // ##.####.........
+ font_data[i*num_rows+ 9]=0xce00; // ##..###.........
+ font_data[i*num_rows+10]=0xc600; // ##...##.........
+ font_data[i*num_rows+11]=0x0; // ................
+ font_data[i*num_rows+12]=0x1fc0; // ...#######......
+ font_data[i*num_rows+13]=0x1fc0; // ...#######......
+ font_data[i*num_rows+14]=0x1800; // ...##...........
+ font_data[i*num_rows+15]=0x1f00; // ...#####........
+ font_data[i*num_rows+16]=0x1f00; // ...#####........
+ font_data[i*num_rows+17]=0x1800; // ...##...........
+ font_data[i*num_rows+18]=0x1fc0; // ...#######......
+ font_data[i*num_rows+19]=0x1fc0; // ...#######......
+ font_data[i*num_rows+20]=0x0; // ................
+ font_data[i*num_rows+21]=0x318; // ......##...##...
+ font_data[i*num_rows+22]=0x318; // ......##...##...
+ font_data[i*num_rows+23]=0x318; // ......##...##...
+ font_data[i*num_rows+24]=0x318; // ......##...##...
+ font_data[i*num_rows+25]=0x318; // ......##...##...
+ font_data[i*num_rows+26]=0x318; // ......##...##...
+ font_data[i*num_rows+27]=0x3f8; // ......#######...
+ font_data[i*num_rows+28]=0x1f0; // .......#####....
+ }
+ else
+ {
+ font_data[i*num_rows+ 0]=16;
+ font_data[i*num_rows+ 1]=22;
+ font_data[i*num_rows+ 2]=0x0; // ................
+ font_data[i*num_rows+ 3]=0xc600; // ##...##.........
+ font_data[i*num_rows+ 4]=0xe600; // ###..##.........
+ font_data[i*num_rows+ 5]=0xf600; // ####.##.........
+ font_data[i*num_rows+ 6]=0xde00; // ##.####.........
+ font_data[i*num_rows+ 7]=0xce00; // ##..###.........
+ font_data[i*num_rows+ 8]=0xc600; // ##...##.........
+ font_data[i*num_rows+ 9]=0x0; // ................
+ font_data[i*num_rows+10]=0x1fc0; // ...#######......
+ font_data[i*num_rows+11]=0x1fc0; // ...#######......
+ font_data[i*num_rows+12]=0x1800; // ...##...........
+ font_data[i*num_rows+13]=0x1f00; // ...#####........
+ font_data[i*num_rows+14]=0x1800; // ...##...........
+ font_data[i*num_rows+15]=0x1fc0; // ...#######......
+ font_data[i*num_rows+16]=0x1fc0; // ...#######......
+ font_data[i*num_rows+17]=0x0; // ................
+ font_data[i*num_rows+18]=0x318; // ......##...##...
+ font_data[i*num_rows+19]=0x318; // ......##...##...
+ font_data[i*num_rows+20]=0x318; // ......##...##...
+ font_data[i*num_rows+21]=0x318; // ......##...##...
+ font_data[i*num_rows+22]=0x3f8; // ......#######...
+ font_data[i*num_rows+23]=0x1f0; // .......#####....
+ }
+ }
+ // dvd marker
+ else if(num_char==251&&mysetup.PatchDvd)
+ {
+ if(DvbFont==fontOsd)
+ {
+ font_data[i*num_rows+ 0]=22;
+ font_data[i*num_rows+ 1]=27;
+ font_data[i*num_rows+ 5]=0x0; // .. .... .... .... .... ....
+ font_data[i*num_rows+ 6]=0x003f00; // .. .... ..## #### .... ....
+ font_data[i*num_rows+ 7]=0x01ffe0; // .. ...# #### #### ###. ....
+ font_data[i*num_rows+ 8]=0x03ff90; // .. ..## #### #### #..# ....
+ font_data[i*num_rows+ 9]=0x07ff08; // .. .### #### #### .... #...
+ font_data[i*num_rows+10]=0x0fff04; // .. #### #### #### .... .#..
+ font_data[i*num_rows+11]=0x0ffe04; // .. #### #### ###. .... .#..
+ font_data[i*num_rows+12]=0x0ffe0c; // .. #### #### ###. .... ##..
+ font_data[i*num_rows+13]=0x1ffc3e; // .# #### #### ##.. ..## ###.
+ font_data[i*num_rows+14]=0x1ff2fe; // .# #### #### ..#. #### ###.
+ font_data[i*num_rows+15]=0x1fe1fe; // .# #### ###. ...# #### ###.
+ font_data[i*num_rows+16]=0x1fe1fe; // .# #### ###. ...# #### ###.
+ font_data[i*num_rows+17]=0x1fd3fe; // .# #### ##.# ..## #### ###.
+ font_data[i*num_rows+18]=0x1f0ffe; // .# #### .... #### #### ###.
+ font_data[i*num_rows+19]=0x0c1ffc; // .. ##.. ...# #### #### ##..
+ font_data[i*num_rows+20]=0x081ffc; // .. #... ...# #### #### ##..
+ font_data[i*num_rows+21]=0x083ffc; // .. #... ..## #### #### ##..
+ font_data[i*num_rows+22]=0x043ff8; // .. .#.. ..## #### #### #...
+ font_data[i*num_rows+23]=0x027ff0; // .. ..#. .### #### #### ....
+ font_data[i*num_rows+24]=0x01ffe0; // .. ...# #### #### ###. ....
+ font_data[i*num_rows+25]=0x003f00; // .. .... ..## #### .... ....
+ font_data[i*num_rows+26]=0x000000; // .. .... .... .... .... ....
+ }
+ else
+ {
+ font_data[i*num_rows+ 0]=22;
+ font_data[i*num_rows+ 1]=22;
+ font_data[i*num_rows+ 2]=0x0; // .. .... .... .... .... ....
+ font_data[i*num_rows+ 3]=0x003f00; // .. .... ..## #### .... ....
+ font_data[i*num_rows+ 4]=0x01ffe0; // .. ...# #### #### ###. ....
+ font_data[i*num_rows+ 5]=0x03ff90; // .. ..## #### #### #..# ....
+ font_data[i*num_rows+ 6]=0x07ff08; // .. .### #### #### .... #...
+ font_data[i*num_rows+ 7]=0x0fff04; // .. #### #### #### .... .#..
+ font_data[i*num_rows+ 8]=0x0ffe04; // .. #### #### ###. .... .#..
+ font_data[i*num_rows+ 9]=0x0ffe0c; // .. #### #### ###. .... ##..
+ font_data[i*num_rows+10]=0x1ffc3e; // .# #### #### ##.. ..## ###.
+ font_data[i*num_rows+11]=0x1ff2fe; // .# #### #### ..#. #### ###.
+ font_data[i*num_rows+12]=0x1fe1fe; // .# #### ###. ...# #### ###.
+ font_data[i*num_rows+13]=0x1fe1fe; // .# #### ###. ...# #### ###.
+ font_data[i*num_rows+14]=0x1fd3fe; // .# #### ##.# ..## #### ###.
+ font_data[i*num_rows+15]=0x1f0ffe; // .# #### .... #### #### ###.
+ font_data[i*num_rows+16]=0x0c1ffc; // .. ##.. ...# #### #### ##..
+ font_data[i*num_rows+17]=0x081ffc; // .. #... ...# #### #### ##..
+ font_data[i*num_rows+18]=0x083ffc; // .. #... ..## #### #### ##..
+ font_data[i*num_rows+19]=0x043ff8; // .. .#.. ..## #### #### #...
+ font_data[i*num_rows+20]=0x027ff0; // .. ..#. .### #### #### ....
+ font_data[i*num_rows+21]=0x01ffe0; // .. ...# #### #### ###. ....
+ font_data[i*num_rows+22]=0x003f00; // .. .... ..## #### .... ....
+ font_data[i*num_rows+23]=0x000000; // .. .... .... .... .... ....
+ }
+ }
+ else
+ {
+ for(j = 0; j<(int)char_data->height; j++)
+ {
+ cFont::tPixelData Data = (cFont::tPixelData)char_data->lines[j];
+
+ font_data[(i*num_rows)+2+j] = Data;
+ }
+ }
+ }
+ cFont::SetFont(DvbFont, font_data);
+}