summaryrefslogtreecommitdiff
path: root/patchfont.c
blob: 320e0366ab4da3c9e2cdb31d1afe03a9daeeb418 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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);
}