mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Changed font handling to allow language specific character sets; adopted the small font character set from the "Elchi" patch
This commit is contained in:
parent
2b29a5ce36
commit
c94570e69d
@ -853,3 +853,6 @@ Thomas Rausch <Thomas.Rausch@gmx.de>
|
|||||||
|
|
||||||
Emil Petersky <petersky@isr.uni-stuttgart.de>
|
Emil Petersky <petersky@isr.uni-stuttgart.de>
|
||||||
for adding "Slovak Link" and "Czech Link" to 'ca.conf'
|
for adding "Slovak Link" and "Czech Link" to 'ca.conf'
|
||||||
|
|
||||||
|
Alessio Sangalli <alesan@manoweb.com>
|
||||||
|
for providing the iso8859-1 small font
|
||||||
|
5
HISTORY
5
HISTORY
@ -2438,7 +2438,7 @@ Video Disk Recorder Revision History
|
|||||||
|
|
||||||
- Improved cDvbDevice::StillPicture() (thanks to Thomas Heiligenmann).
|
- Improved cDvbDevice::StillPicture() (thanks to Thomas Heiligenmann).
|
||||||
|
|
||||||
2003-10-18: Version 1.3.0
|
2003-10-24: Version 1.3.0
|
||||||
|
|
||||||
- Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
|
- Changed thread handling to make it work with NPTL ("Native Posix Thread Library").
|
||||||
Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
|
Thanks to Jon Burgess, Andreas Schultz, Werner Fink and Stefan Huelswitt.
|
||||||
@ -2452,3 +2452,6 @@ Video Disk Recorder Revision History
|
|||||||
- Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
|
- Added "Slovak Link" and "Czech Link" to 'ca.conf' (thanks to Emil Petersky).
|
||||||
- Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
|
- Mutexes are now created with PTHREAD_MUTEX_ERRORCHECK_NP, which makes the
|
||||||
'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
|
'lockingTid' stuff obsolete (thanks to Stefan Huelswitt).
|
||||||
|
- Changed font handling to allow language specific character sets.
|
||||||
|
- Adopted the small font character set from the "Elchi" patch (originally
|
||||||
|
provided by Alessio Sangalli).
|
||||||
|
17
Makefile
17
Makefile
@ -4,7 +4,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Makefile 1.58 2003/08/09 11:09:45 kls Exp $
|
# $Id: Makefile 1.59 2003/10/24 12:53:12 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -39,8 +39,9 @@ OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o d
|
|||||||
receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sources.o\
|
receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sources.o\
|
||||||
spu.o status.o svdrp.o thread.o timers.o tools.o transfer.o vdr.o videodir.o
|
spu.o status.o svdrp.o thread.o timers.o tools.o transfer.o vdr.o videodir.o
|
||||||
|
|
||||||
OSDFONT = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1
|
FIXFONT_ISO8859_1 = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1
|
||||||
FIXFONT = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1
|
OSDFONT_ISO8859_1 = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1
|
||||||
|
SMLFONT_ISO8859_1 = -adobe-helvetica-medium-r-normal--18-*-100-100-p-*-iso8859-1
|
||||||
|
|
||||||
ifndef NO_KBD
|
ifndef NO_KBD
|
||||||
DEFINES += -DREMOTE_KBD
|
DEFINES += -DREMOTE_KBD
|
||||||
@ -64,7 +65,7 @@ DEFINES += -DVFAT
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
all: vdr
|
all: vdr
|
||||||
font: genfontfile fontfix.c fontosd.c
|
font: genfontfile fontfix.c fontosd.c fontsml.c
|
||||||
@echo "font files created."
|
@echo "font files created."
|
||||||
|
|
||||||
# Implicit rules:
|
# Implicit rules:
|
||||||
@ -89,9 +90,11 @@ vdr: $(OBJS) $(DTVLIB)
|
|||||||
# The font files:
|
# The font files:
|
||||||
|
|
||||||
fontfix.c:
|
fontfix.c:
|
||||||
./genfontfile "cFont::tPixelData FontFix" "$(FIXFONT)" > $@
|
./genfontfile "cFont::tPixelData FontFix_iso8859_1" "$(FIXFONT_ISO8859_1)" > $@
|
||||||
fontosd.c:
|
fontosd.c:
|
||||||
./genfontfile "cFont::tPixelData FontOsd" "$(OSDFONT)" > $@
|
./genfontfile "cFont::tPixelData FontOsd_iso8859_1" "$(OSDFONT_ISO8859_1)" > $@
|
||||||
|
fontsml.c:
|
||||||
|
./genfontfile "cFont::tPixelData FontSml_iso8859_1" "$(SMLFONT_ISO8859_1)" > $@
|
||||||
|
|
||||||
# The font file generator:
|
# The font file generator:
|
||||||
|
|
||||||
@ -145,6 +148,6 @@ clean:
|
|||||||
-rm -rf include
|
-rm -rf include
|
||||||
-rm -rf srcdoc
|
-rm -rf srcdoc
|
||||||
fontclean:
|
fontclean:
|
||||||
-rm -f fontfix.c fontosd.c
|
-rm -f fontfix.c fontosd.c fontsml.c
|
||||||
CLEAN: clean fontclean
|
CLEAN: clean fontclean
|
||||||
|
|
||||||
|
74
font.c
74
font.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: font.c 1.2 2000/11/18 15:16:08 kls Exp $
|
* $Id: font.c 1.3 2003/10/24 12:51:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
@ -12,24 +12,32 @@
|
|||||||
|
|
||||||
#include "fontfix.c"
|
#include "fontfix.c"
|
||||||
#include "fontosd.c"
|
#include "fontosd.c"
|
||||||
|
#include "fontsml.c"
|
||||||
|
|
||||||
cFont::cFont(eDvbFont Font)
|
static void *FontData[eDvbCodeSize][eDvbFontSize] = {
|
||||||
|
{ FontOsd_iso8859_1, FontFix_iso8859_1, FontSml_iso8859_1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *FontCode[eDvbCodeSize] = {
|
||||||
|
"iso8859-1",
|
||||||
|
};
|
||||||
|
|
||||||
|
eDvbCode cFont::code = code_iso8859_1;
|
||||||
|
cFont *cFont::fonts[eDvbFontSize] = { NULL };
|
||||||
|
|
||||||
|
cFont::cFont(void *Data)
|
||||||
{
|
{
|
||||||
|
SetData(Data);
|
||||||
#define FONTINDEX(Name)\
|
|
||||||
case font##Name: for (int i = 0; i < NUMCHARS; i++)\
|
|
||||||
data[i] = (tCharData *)&Font##Name[i < 32 ? 0 : i - 32];\
|
|
||||||
break;
|
|
||||||
|
|
||||||
switch (Font) {
|
|
||||||
default:
|
|
||||||
FONTINDEX(Osd);
|
|
||||||
FONTINDEX(Fix);
|
|
||||||
// TODO others...
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int cFont::Width(const char *s)
|
void cFont::SetData(void *Data)
|
||||||
|
{
|
||||||
|
int h = ((tCharData *)Data)->height;
|
||||||
|
for (int i = 0; i < NUMCHARS; i++)
|
||||||
|
data[i] = (tCharData *)&((tPixelData *)Data)[(i < 32 ? 0 : i - 32) * (h + 2)];
|
||||||
|
}
|
||||||
|
|
||||||
|
int cFont::Width(const char *s) const
|
||||||
{
|
{
|
||||||
int w = 0;
|
int w = 0;
|
||||||
while (s && *s)
|
while (s && *s)
|
||||||
@ -37,7 +45,7 @@ int cFont::Width(const char *s)
|
|||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cFont::Height(const char *s)
|
int cFont::Height(const char *s) const
|
||||||
{
|
{
|
||||||
int h = 0;
|
int h = 0;
|
||||||
if (s && *s)
|
if (s && *s)
|
||||||
@ -45,3 +53,37 @@ int cFont::Height(const char *s)
|
|||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cFont::SetCode(const char *Code)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < eDvbCodeSize; i++) {
|
||||||
|
if (strcmp(Code, FontCode[i]) == 0) {
|
||||||
|
SetCode(eDvbCode(i));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cFont::SetCode(eDvbCode Code)
|
||||||
|
{
|
||||||
|
if (code != Code) {
|
||||||
|
code = Code;
|
||||||
|
for (int i = 0; i < eDvbFontSize; i++) {
|
||||||
|
if (fonts[i])
|
||||||
|
fonts[i]->SetData(FontData[code][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void cFont::SetFont(eDvbFont Font, void *Data)
|
||||||
|
{
|
||||||
|
delete fonts[Font];
|
||||||
|
fonts[Font] = new cFont(Data ? Data : FontData[code][Font]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const cFont *cFont::GetFont(eDvbFont Font)
|
||||||
|
{
|
||||||
|
if (!fonts[Font])
|
||||||
|
SetFont(Font);
|
||||||
|
return fonts[Font];
|
||||||
|
}
|
||||||
|
34
font.h
34
font.h
@ -4,19 +4,24 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: font.h 1.2 2000/11/18 14:51:45 kls Exp $
|
* $Id: font.h 1.3 2003/10/24 12:52:46 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __FONT_H
|
#ifndef __FONT_H
|
||||||
#define __FONT_H
|
#define __FONT_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
enum eDvbFont {
|
enum eDvbFont {
|
||||||
fontOsd,
|
fontOsd,
|
||||||
fontFix,
|
fontFix,
|
||||||
/* TODO as soon as we have the font files...
|
fontSml
|
||||||
fontTtxSmall,
|
#define eDvbFontSize (fontSml + 1)
|
||||||
fontTtxLarge,
|
};
|
||||||
*/
|
|
||||||
|
enum eDvbCode {
|
||||||
|
code_iso8859_1,
|
||||||
|
#define eDvbCodeSize (code_iso8859_1 + 1)
|
||||||
};
|
};
|
||||||
|
|
||||||
class cFont {
|
class cFont {
|
||||||
@ -28,14 +33,21 @@ public:
|
|||||||
tPixelData lines[1];
|
tPixelData lines[1];
|
||||||
};
|
};
|
||||||
private:
|
private:
|
||||||
|
static eDvbCode code;
|
||||||
|
static cFont *fonts[];
|
||||||
const tCharData *data[NUMCHARS];
|
const tCharData *data[NUMCHARS];
|
||||||
public:
|
public:
|
||||||
cFont(eDvbFont Font);
|
cFont(void *Data);
|
||||||
int Width(unsigned char c) { return data[c]->width; }
|
void SetData(void *Data);
|
||||||
int Width(const char *s);
|
int Width(unsigned char c) const { return data[c]->width; }
|
||||||
int Height(unsigned char c) { return data[c]->height; }
|
int Width(const char *s) const;
|
||||||
int Height(const char *s);
|
int Height(unsigned char c) const { return data[c]->height; }
|
||||||
const tCharData *CharData(unsigned char c) { return data[c]; }
|
int Height(const char *s) const;
|
||||||
|
const tCharData *CharData(unsigned char c) const { return data[c]; }
|
||||||
|
static bool SetCode(const char *Code);
|
||||||
|
static void SetCode(eDvbCode Code);
|
||||||
|
static void SetFont(eDvbFont Font, void *Data = NULL);
|
||||||
|
static const cFont *GetFont(eDvbFont Font);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__FONT_H
|
#endif //__FONT_H
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cFont::tPixelData FontFix[][28] = {
|
cFont::tPixelData FontFix_iso8859_1[][28] = {
|
||||||
{ // 32
|
{ // 32
|
||||||
15, 26,
|
15, 26,
|
||||||
0x00000000, // ...............
|
0x00000000, // ...............
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cFont::tPixelData FontOsd[][29] = {
|
cFont::tPixelData FontOsd_iso8859_1[][29] = {
|
||||||
{ // 32
|
{ // 32
|
||||||
6, 27,
|
6, 27,
|
||||||
0x00000000, // ......
|
0x00000000, // ......
|
||||||
|
25
i18n.c
25
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.134 2003/09/11 13:51:56 kls Exp $
|
* $Id: i18n.c 1.135 2003/10/24 12:45:39 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -88,6 +88,24 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Magyar",
|
"Magyar",
|
||||||
"Català",
|
"Català",
|
||||||
},
|
},
|
||||||
|
// The character set needed for this language (this MUST be the second phrase!):
|
||||||
|
{ "iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
"iso8859-1",
|
||||||
|
},
|
||||||
// Menu titles:
|
// Menu titles:
|
||||||
{ "VDR",
|
{ "VDR",
|
||||||
"VDR",
|
"VDR",
|
||||||
@ -3824,3 +3842,8 @@ const char * const * I18nLanguages(void)
|
|||||||
{
|
{
|
||||||
return &Phrases[0][0];
|
return &Phrases[0][0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * const * I18nCharSets(void)
|
||||||
|
{
|
||||||
|
return &Phrases[1][0];
|
||||||
|
}
|
||||||
|
3
i18n.h
3
i18n.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.h 1.6 2003/05/16 12:48:52 kls Exp $
|
* $Id: i18n.h 1.7 2003/10/19 15:02:05 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __I18N_H
|
#ifndef __I18N_H
|
||||||
@ -21,6 +21,7 @@ void I18nRegister(const tI18nPhrase * const Phrases, const char *Plugin);
|
|||||||
const char *I18nTranslate(const char *s, const char *Plugin = NULL);
|
const char *I18nTranslate(const char *s, const char *Plugin = NULL);
|
||||||
|
|
||||||
const char * const * I18nLanguages(void);
|
const char * const * I18nLanguages(void);
|
||||||
|
const char * const * I18nCharSets(void);
|
||||||
|
|
||||||
#ifdef PLUGIN_NAME_I18N
|
#ifdef PLUGIN_NAME_I18N
|
||||||
#define tr(s) I18nTranslate(s, PLUGIN_NAME_I18N)
|
#define tr(s) I18nTranslate(s, PLUGIN_NAME_I18N)
|
||||||
|
4
menu.c
4
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.273 2003/10/03 14:36:20 kls Exp $
|
* $Id: menu.c 1.274 2003/10/19 15:13:05 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -1985,6 +1985,7 @@ private:
|
|||||||
virtual void Set(void);
|
virtual void Set(void);
|
||||||
public:
|
public:
|
||||||
cMenuSetupOSD(void) { Set(); }
|
cMenuSetupOSD(void) { Set(); }
|
||||||
|
virtual ~cMenuSetupOSD() { cFont::SetCode(I18nCharSets()[Setup.OSDLanguage]); }
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2011,6 +2012,7 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key)
|
|||||||
if (data.OSDLanguage != osdLanguage) {
|
if (data.OSDLanguage != osdLanguage) {
|
||||||
int OriginalOSDLanguage = Setup.OSDLanguage;
|
int OriginalOSDLanguage = Setup.OSDLanguage;
|
||||||
Setup.OSDLanguage = data.OSDLanguage;
|
Setup.OSDLanguage = data.OSDLanguage;
|
||||||
|
cFont::SetCode(I18nCharSets()[Setup.OSDLanguage]);
|
||||||
Set();
|
Set();
|
||||||
Display();
|
Display();
|
||||||
Setup.OSDLanguage = OriginalOSDLanguage;
|
Setup.OSDLanguage = OriginalOSDLanguage;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 1.10 2003/08/24 11:38:27 kls Exp $
|
* $Id: osdbase.c 1.11 2003/10/19 14:32:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -131,7 +131,6 @@ cBitmap::cBitmap(int Width, int Height, int Bpp, bool ClearWithBackground)
|
|||||||
|
|
||||||
cBitmap::~cBitmap()
|
cBitmap::~cBitmap()
|
||||||
{
|
{
|
||||||
delete font;
|
|
||||||
free(bitmap);
|
free(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,8 +138,7 @@ eDvbFont cBitmap::SetFont(eDvbFont Font)
|
|||||||
{
|
{
|
||||||
eDvbFont oldFont = fontType;
|
eDvbFont oldFont = fontType;
|
||||||
if (fontType != Font || !font) {
|
if (fontType != Font || !font) {
|
||||||
delete font;
|
font = cFont::GetFont(Font);
|
||||||
font = new cFont(Font);
|
|
||||||
fontType = Font;
|
fontType = Font;
|
||||||
}
|
}
|
||||||
return oldFont;
|
return oldFont;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.h 1.6 2002/09/08 14:12:41 kls Exp $
|
* $Id: osdbase.h 1.7 2003/10/19 14:32:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSDBASE_H
|
#ifndef __OSDBASE_H
|
||||||
@ -73,7 +73,7 @@ public:
|
|||||||
|
|
||||||
class cBitmap : public cPalette {
|
class cBitmap : public cPalette {
|
||||||
private:
|
private:
|
||||||
cFont *font;
|
const cFont *font;
|
||||||
eDvbFont fontType;
|
eDvbFont fontType;
|
||||||
char *bitmap;
|
char *bitmap;
|
||||||
bool clearWithBackground;
|
bool clearWithBackground;
|
||||||
|
4
vdr.c
4
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/vdr
|
* The project's page is at http://www.cadsoft.de/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.169 2003/09/14 09:36:54 kls Exp $
|
* $Id: vdr.c 1.170 2003/10/19 15:14:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -358,6 +358,8 @@ int main(int argc, char *argv[])
|
|||||||
))
|
))
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
|
cFont::SetCode(I18nCharSets()[Setup.OSDLanguage]);
|
||||||
|
|
||||||
// DVB interfaces:
|
// DVB interfaces:
|
||||||
|
|
||||||
cDvbDevice::Initialize();
|
cDvbDevice::Initialize();
|
||||||
|
Loading…
Reference in New Issue
Block a user