From b9b9ace9a8d2d1c0beda1dc0a2ebc6be9b47c305 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 10 Jun 2007 18:00:00 +0200 Subject: =?UTF-8?q?Version=201.5.3=20-=20Fixed=20some=20spelling=20errors?= =?UTF-8?q?=20in=20'newplugin'=20(thanks=20to=20Ville=20Skytt=C3=A4).=20-?= =?UTF-8?q?=20Fixed=20a=20busy=20loop=20in=20fast=20forward=20if=20the=20n?= =?UTF-8?q?ext=20video=20data=20file=20is=20missing=20=20=20(thanks=20to?= =?UTF-8?q?=20Reinhard=20Nissl).=20-=20Fixed=20handling=20frequencies=20in?= =?UTF-8?q?=20NitFilter::Process()=20(thanks=20to=20Anssi=20Hannula).=20-?= =?UTF-8?q?=20Fixed=20a=20race=20condition=20with=20signal=20handlers=20at?= =?UTF-8?q?=20program=20exit=20(thanks=20to=20Udo=20=20=20Richter).=20-=20?= =?UTF-8?q?Non-primary=20devices=20in=20Transfer=20mode=20are=20now=20also?= =?UTF-8?q?=20used=20for=20recording=20(thanks=20=20=20to=20Anssi=20Hannul?= =?UTF-8?q?a).=20-=20Fixed=20handling=20ChannelUp/Down=20keys=20if=20there?= =?UTF-8?q?=20is=20currently=20a=20replay=20running=20=20=20(thanks=20to?= =?UTF-8?q?=20Marco=20Schl=C3=BC=C3=9Fler).=20-=20The=20new=20SVDRP=20comm?= =?UTF-8?q?and=20REMO=20can=20be=20used=20to=20turn=20VDR's=20remote=20con?= =?UTF-8?q?trol=20off=20and=20=20=20on=20in=20case=20other=20programs=20ne?= =?UTF-8?q?ed=20to=20be=20controlled=20(based=20on=20patches=20from=20Krzy?= =?UTF-8?q?sztof=20=20=20Parma=20and=20Helmut=20Auer).=20-=20Increased=20t?= =?UTF-8?q?he=20maximum=20number=20of=20CA=20system=20ids=20to=20cope=20wi?= =?UTF-8?q?th=20the=20AlphaCrypt=20=20=20CAM's=20version=203.11=20firmware?= =?UTF-8?q?.=20-=20Fixed=20getting=20the=20code=20setting=20from=20the=20l?= =?UTF-8?q?ocale=20(thanks=20to=20Matthias=20Schwarzott).=20-=20Implemente?= =?UTF-8?q?d=20support=20for=20Freetype=20fonts=20(based=20on=20a=20patch?= =?UTF-8?q?=20from=20Alexander=20Riedel).=20=20=20The=20font=20names=20and?= =?UTF-8?q?=20sizes=20can=20be=20adjusted=20in=20the=20"Setup/OSD"=20menu.?= =?UTF-8?q?=20=20=20Note=20that=20VDR=20now=20requires=20freetype=20fonts?= =?UTF-8?q?=20to=20be=20installed=20in=20=20=20/usr/share/fonts/truetype.?= =?UTF-8?q?=20-=20If=20the=20OSD=20device=20in=20use=20has=20at=20least=20?= =?UTF-8?q?8bpp=20bitmap=20depth=20and=20this=20is=20also=20=20=20used=20b?= =?UTF-8?q?y=20the=20current=20skin,=20Freetype=20fonts=20are=20displayed?= =?UTF-8?q?=20"anti-aliased".=20=20=20The=20new=20setup=20parameter=20"OSD?= =?UTF-8?q?/Anti-alias"=20can=20be=20used=20to=20turn=20this=20off.=20-=20?= =?UTF-8?q?The=20new=20function=20cOsd::SetAntiAliasGranularity()=20can=20?= =?UTF-8?q?be=20used=20to=20help=20the=20OSD=20=20=20in=20managing=20the?= =?UTF-8?q?=20available=20color=20palette=20entries=20when=20doing=20anti-?= =?UTF-8?q?aliasing.=20=20=20Skins=20that=20use=208bpp=20bitmaps=20can=20c?= =?UTF-8?q?all=20this=20function=20with=20the=20maximum=20number=20=20=20o?= =?UTF-8?q?f=20colors=20used,=20and=20the=20maximum=20number=20of=20color?= =?UTF-8?q?=20combinations.=20The=20OSD=20will=20=20=20then=20evenly=20spl?= =?UTF-8?q?it=20the=20available=20palette=20entries=20between=20the=20vari?= =?UTF-8?q?ous=20colors=20=20=20combinations,=20so=20that=20fonts=20can=20?= =?UTF-8?q?be=20"anti-aliased".=20By=20default=20a=20total=20of=20=20=2010?= =?UTF-8?q?=20colors=20and=2010=20combinations=20is=20assumed.=20-=20The?= =?UTF-8?q?=20pixel=20fonts=20have=20been=20completely=20removed=20from=20?= =?UTF-8?q?the=20VDR=20source.=20-=20VDR=20is=20now=20"UTF-8=20aware".=20I?= =?UTF-8?q?t=20handles=20strings=20according=20to=20the=20character=20=20?= =?UTF-8?q?=20encoding=20used=20on=20the=20user's=20system.=20All=20intern?= =?UTF-8?q?ationalization=20strings=20and=20=20=20incoming=20SI=20data=20a?= =?UTF-8?q?re=20converted=20to=20the=20system=20encoding.=20-=20Plugins=20?= =?UTF-8?q?that=20handle=20strings=20need=20to=20be=20aware=20that=20on=20?= =?UTF-8?q?systems=20with=20UTF-8=20=20=20encoding=20a=20"character=20symb?= =?UTF-8?q?ol"=20may=20consist=20of=20more=20than=20a=20single=20byte=20in?= =?UTF-8?q?=20=20=20memory.=20The=20functions=20and=20macros=20named=20Utf?= =?UTF-8?q?8...()=20can=20be=20used=20to=20handle=20=20=20strings=20withou?= =?UTF-8?q?t=20needing=20to=20care=20about=20the=20underlying=20character?= =?UTF-8?q?=20encoding=20=20=20(see=20tools.h=20for=20details).=20-=20Even?= =?UTF-8?q?=20though=20the=20weekdays=20of=20repeating=20timers=20are=20pr?= =?UTF-8?q?esented=20to=20the=20user=20as=20UTF-8=20=20=20characters=20in?= =?UTF-8?q?=20the=20OSD,=20the=20timers.conf=20file=20and=20the=20SVDRP=20?= =?UTF-8?q?timer=20commands=20still=20=20=20use=20single=20byte=20characte?= =?UTF-8?q?rs=20("MTWTFSS")=20to=20make=20sure=20this=20information=20is?= =?UTF-8?q?=20handled=20=20=20correctly=20between=20systems=20with=20diffe?= =?UTF-8?q?rent=20character=20encodings.=20-=20Added=20a=20missing=20i18n?= =?UTF-8?q?=20string=20for=20"CAM"=20in=20the=20Turkish=20OSD=20texts.=20-?= =?UTF-8?q?=20Improved=20editing=20strings=20that=20are=20too=20long=20to?= =?UTF-8?q?=20fit=20into=20the=20editable=20area.=20-=20Changes=20to=20the?= =?UTF-8?q?=20OSD=20settings=20in=20the=20"Setup/OSD"=20menu=20now=20immed?= =?UTF-8?q?iately=20take=20effect=20=20=20when=20the=20"Ok"=20key=20is=20p?= =?UTF-8?q?ressed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i18n.c | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 201 insertions(+), 14 deletions(-) (limited to 'i18n.c') diff --git a/i18n.c b/i18n.c index 533810b..88832d7 100644 --- a/i18n.c +++ b/i18n.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.293 2007/03/11 10:05:36 kls Exp $ + * $Id: i18n.c 1.294 2007/06/09 08:44:54 kls Exp $ * * Translations provided by: * @@ -3138,6 +3138,7 @@ const tI18nPhrase Phrases[] = { "CAM", "CAM", "CAM", + "CAM", }, { "Recording", "Aufnahme", @@ -3554,6 +3555,167 @@ const tI18nPhrase Phrases[] = { "v¾dy", "hep", }, + { "Setup.OSD$Anti-alias", + "Kantenglättung", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$OSD font name", + "OSD Schriftart", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$Small font name", + "Kleine Schriftart", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$Fixed font name", + "Festbreiten-Schriftart", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$OSD font size (pixel)", + "OSD Schriftgröße (pixel)", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$Small font size (pixel)", + "Kleine Schriftgröße (pixel)", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, + { "Setup.OSD$Fixed font size (pixel)", + "Festbreiten-Schriftgröße (pixel)", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, { "Setup.OSD$Channel info position", "Kanalinfo-Position", "Pozicija informacije o kanalu", @@ -5021,7 +5183,7 @@ const tI18nPhrase Phrases[] = { " 0\t-.#~,/_@1\taãâbc2\tdef3\tghiî4\tjkl5\tmno6\tpqrsº7\ttþuv8\twxyz9", " 0\t-.#~,/_@1\taábc2\tdeéf3\tghií4\tjkl5\tmnoóöõ6\tpqrs7\ttuúüûv8\twxyz9", "",//TODO - "",//TODO + " 0\t-.#~,/_@1\tabcÐÑÒÓ2\tdefÔÕñÖ×3\tghiØÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9", "",//TODO " 0\t-.#~,/_@1\tabcäå2\tdef3\tghi4\tjkl5\tmnoõö6\tpqrsð7\ttuvü8\twxyzþ9", " 0\t-.#~,/_@1\tabcæå2\tdef3\tghi4\tjkl5\tmnoø6\tpqrs7\ttuv8\twxyz9", @@ -6603,25 +6765,33 @@ const tI18nPhrase Phrases[] = { class cI18nEntry : public cListObject { private: const tI18nPhrase *phrases; + tI18nPhrase *converted; const char *plugin; public: cI18nEntry(const tI18nPhrase * const Phrases, const char *Plugin); + virtual ~cI18nEntry(); const tI18nPhrase *Phrases(void) { return phrases; } + tI18nPhrase **Converted(void) { return &converted; } const char *Plugin(void) { return plugin; } }; cI18nEntry::cI18nEntry(const tI18nPhrase * const Phrases, const char *Plugin) { phrases = Phrases; + converted = NULL; plugin = Plugin; } +cI18nEntry::~cI18nEntry() +{ + delete converted; +} + // --- cI18nList ------------------------------------------------------------- class cI18nList : public cList { public: cI18nEntry *Get(const char *Plugin); - const tI18nPhrase *GetPhrases(const char *Plugin); }; cI18nEntry *cI18nList::Get(const char *Plugin) @@ -6635,16 +6805,28 @@ cI18nEntry *cI18nList::Get(const char *Plugin) return NULL; } -const tI18nPhrase *cI18nList::GetPhrases(const char *Plugin) -{ - cI18nEntry *p = Get(Plugin); - return p ? p->Phrases() : NULL; -} - cI18nList I18nList; // --- +static tI18nPhrase *Converted = NULL; + +static const char *ConvertPhrase(const tI18nPhrase *Original, tI18nPhrase **Converted, int NrPhrase, int NrLanguage) +{ + if (!*Converted) { + int NumPhrases = 0; + for (const tI18nPhrase *p = Original; **p; p++) + NumPhrases++; + *Converted = new tI18nPhrase[NumPhrases + 1]; + memset(*Converted, 0, sizeof(tI18nPhrase) * (NumPhrases + 1)); + } + if (!(*Converted)[NrPhrase][NrLanguage]) { + cCharSetConv csc(Phrases[1][NrLanguage], cCharSetConv::SystemCharacterTable()); + (*Converted)[NrPhrase][NrLanguage] = strdup(csc.Convert(Original[NrPhrase][NrLanguage])); + } + return (*Converted)[NrPhrase][NrLanguage]; +} + void I18nRegister(const tI18nPhrase * const Phrases, const char *Plugin) { cI18nEntry *p = I18nList.Get(Plugin); @@ -6657,13 +6839,14 @@ void I18nRegister(const tI18nPhrase * const Phrases, const char *Plugin) const char *I18nTranslate(const char *s, const char *Plugin) { if (Setup.OSDLanguage) { - const tI18nPhrase *p = Plugin ? I18nList.GetPhrases(Plugin) : Phrases; - if (!p) - p = Phrases; + cI18nEntry *e = Plugin ? I18nList.Get(Plugin) : NULL; + const tI18nPhrase *OriginalPhrases = e ? e->Phrases() : Phrases; + tI18nPhrase **ConvertedPhrases = e ? e->Converted() : &Converted; + const tI18nPhrase *p = OriginalPhrases; for (int i = ((p == Phrases) ? 1 : 2); i--; ) { for (; **p; p++) { if (strcmp(s, **p) == 0) { - const char *t = (*p)[Setup.OSDLanguage]; + const char *t = ConvertPhrase(OriginalPhrases, ConvertedPhrases, p - OriginalPhrases, Setup.OSDLanguage); if (t && *t) return t; } @@ -6678,7 +6861,11 @@ const char *I18nTranslate(const char *s, const char *Plugin) const char * const * I18nLanguages(void) { - return &Phrases[0][0]; + if (!Converted || !(Converted)[0][0]) { + for (int i = 0; i < I18nNumLanguages; i++) + ConvertPhrase(Phrases, &Converted, 0, i); + } + return &Converted[0][0]; } const char * const * I18nCharSets(void) -- cgit v1.2.3