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
|
/*
* $Id: common.c,v 1.4 2004/05/31 19:54:12 lordjaxom Exp $
*/
#define __STL_CONFIG_H
#include <vdr/plugin.h>
#undef __STL_CONFIG_H
#include "data.h"
#include "common.h"
const char *SkinPath(void) {
return cPlugin::ConfigDirectory(PLUGIN_NAME_I18N);
}
void DrawTextTransparent(cOsd *Osd, int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment) {
int w = Font->Width(s);
int h = Font->Height();
int limit = 0;
if (Width || Height) {
int cw = Width ? Width : w;
limit = x + cw;
if (Width) {
if ((Alignment & taLeft) != 0)
;
else if ((Alignment & taRight) != 0) {
if (w < Width)
x += Width - w;
}
else { // taCentered
if (w < Width)
x += (Width - w) / 2;
}
}
if (Height) {
if ((Alignment & taTop) != 0)
;
else if ((Alignment & taBottom) != 0) {
if (h < Height)
y += Height - h;
}
else { // taCentered
if (h < Height)
y += (Height - h) / 2;
}
}
}
while (s && *s) {
const cFont::tCharData *CharData = Font->CharData(*s++);
if (limit && int(x + CharData->width) > limit)
break; // we don't draw partial characters
if (int(x + CharData->width) > 0) {
for (int row = 0; row < h; row++) {
cFont::tPixelData PixelData = CharData->lines[row];
for (int col = CharData->width; col-- > 0; ) {
if (PixelData & 1)
Osd->DrawRectangle(x + col, y + row, x + col, y + row, ColorFg);
PixelData >>= 1;
}
}
}
x += CharData->width;
}
}
const char *ChannelNumber(const cChannel *Channel, int Number) {
static char buffer[256];
buffer[0] = '\0';
if (Channel) {
if (!Channel->GroupSep())
snprintf(buffer, sizeof(buffer), "%d%s", Channel->Number(), Number ? "-" : "");
}
else if (Number)
snprintf(buffer, sizeof(buffer), "%d-", Number);
return buffer;
}
const char *ChannelName(const cChannel *Channel, int Number) {
static char buffer[256];
buffer[0] = '\0';
if (Channel)
snprintf(buffer, sizeof(buffer), "%s", Channel->Name());
else if (!Number)
snprintf(buffer, sizeof(buffer), "%s", tr("*** Invalid Channel ***"));
return buffer;
}
string ItemText(cText2SkinItem *Item, const string &Content) {
string s;
if (Item->Text() != "") {
s = Item->Text();
int pos;
while ((pos = s.find('$')) != -1)
s.replace(pos, 1, Content);
} else
s = Content;
return s;
}
|