diff options
author | Tobias Grimm <tobias@e-tobi.loc> | 2008-12-13 11:02:42 +0100 |
---|---|---|
committer | Tobias Grimm <tobias@e-tobi.loc> | 2008-12-13 11:02:42 +0100 |
commit | e2bcda13cdbcaa85f8b7462977b946b095c8b24a (patch) | |
tree | 6ab1d92cd0a324481b2259d910e68bba707c1f2e | |
parent | e5d1aacca2020e63dbaf320ba8b1de61746ad410 (diff) | |
download | vdr-plugin-ttxtsubs-0.0.5pre2.tar.gz vdr-plugin-ttxtsubs-0.0.5pre2.tar.bz2 |
- New featuresv0.0.5pre2
- Text colours can be set and row spacing can be adjusted.
(The usual semitransparent "background" colour appearently
doesn't work with the ElchiAIO patch, don't know why.)
Thanks to Rolf Ahrenberg for the patch!
- ttxtsubs menus can now be translated to different languages.
Thanks to Rolf Ahrenberg for the patch!
English, Finnish and Swedish now included, others are welcome!
- Bugs fixed:
- Information for channels with no teletext at all is now cached
too, making channel switches to such channels faster.
- Note:
- The VDR 1.2.x patch "VDR.patch" is the same as in ttxtsubs 0.0.4b,
and the 0.0.4 and 0.0.3d patch should work equally well - there is
no need to repatch if you previously used any of those.
-rw-r--r-- | HISTORY | 19 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | VDR.patch | 80 | ||||
-rw-r--r-- | siinfo.c | 2 | ||||
-rw-r--r-- | ttxtsubs.c | 81 | ||||
-rw-r--r-- | ttxtsubsdisplay.c | 41 | ||||
-rw-r--r-- | ttxtsubsglobals.h | 9 | ||||
-rw-r--r-- | ttxtsubsi18n.c | 715 | ||||
-rw-r--r-- | ttxtsubsi18n.h | 17 |
9 files changed, 903 insertions, 65 deletions
@@ -1,6 +1,25 @@ VDR Plugin 'ttxtsubs' Revision History -------------------------------------- +2004-03-02: Version 0.0.5pre2 + +- New features + - Text colours can be set and row spacing can be adjusted. + (The usual semitransparent "background" colour appearently + doesn't work with the ElchiAIO patch, don't know why.) + Thanks to Rolf Ahrenberg for the patch! + - ttxtsubs menus can now be translated to different languages. + Thanks to Rolf Ahrenberg for the patch! + English, Finnish and Swedish now included, others are welcome! +- Bugs fixed: + - Information for channels with no teletext at all is now cached + too, making channel switches to such channels faster. + +- Note: + - The VDR 1.2.x patch "VDR.patch" is the same as in ttxtsubs 0.0.4b, + and the 0.0.4 and 0.0.3d patch should work equally well - there is + no need to repatch if you previously used any of those. + 2004-03-01: Version 0.0.5pre1 - New features: @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile,v 1.19 2004/03/01 04:41:13 ragge Exp ragge $ +# $Id: Makefile,v 1.21 2004/03/02 01:08:45 ragge Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. @@ -48,7 +48,7 @@ DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' ### The object files (add further files here): OBJS = $(PLUGIN).o ttxtsubsdisplayer.o ttxtsubsdisplay.o teletext.o siinfo.o \ - ttxtsubsfilter.o ttxtsubsrecorder.o ttxtsubsreceiver.o + ttxtsubsfilter.o ttxtsubsrecorder.o ttxtsubsreceiver.o ttxtsubsi18n.o SOURCEFILES = *.c *.h [A-Z]???* @@ -1,7 +1,7 @@ -diff -upr ./DIST/vdr-1.2.5/Makefile ./Makefile ---- ./DIST/vdr-1.2.5/Makefile 2003-08-09 13:09:45.000000000 +0200 -+++ ./Makefile 2003-09-26 01:49:20.000000000 +0200 -@@ -37,7 +37,8 @@ OBJS = audio.o channels.o ci.o config.o +diff -upr ./DIST/vdr-1.2.1/Makefile ./Makefile +--- ./DIST/vdr-1.2.1/Makefile 2003-01-06 13:28:09.000000000 +0100 ++++ ./Makefile 2003-07-16 05:39:36.000000000 +0200 +@@ -36,7 +36,8 @@ OBJS = audio.o channels.o ci.o config.o dvbplayer.o dvbspu.o eit.o eitscan.o font.o i18n.o interface.o keys.o\ lirc.o menu.o menuitems.o osdbase.o osd.o player.o plugin.o rcu.o\ receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sources.o\ @@ -11,9 +11,9 @@ diff -upr ./DIST/vdr-1.2.5/Makefile ./Makefile OSDFONT = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1 FIXFONT = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1 -diff -upr ./DIST/vdr-1.2.5/dvbplayer.c ./dvbplayer.c ---- ./DIST/vdr-1.2.5/dvbplayer.c 2003-05-24 11:04:26.000000000 +0200 -+++ ./dvbplayer.c 2003-09-26 01:49:20.000000000 +0200 +diff -upr ./DIST/vdr-1.2.1/dvbplayer.c ./dvbplayer.c +--- ./DIST/vdr-1.2.1/dvbplayer.c 2003-05-24 11:04:26.000000000 +0200 ++++ ./dvbplayer.c 2003-07-16 05:39:36.000000000 +0200 @@ -14,6 +14,7 @@ #include "ringbuffer.h" #include "thread.h" @@ -88,31 +88,31 @@ diff -upr ./DIST/vdr-1.2.5/dvbplayer.c ./dvbplayer.c if (p) { int w = PlayVideo(p, pc); if (w > 0) { -diff -upr ./DIST/vdr-1.2.5/menu.c ./menu.c ---- ./DIST/vdr-1.2.5/menu.c 2003-09-14 12:49:28.000000000 +0200 -+++ ./menu.c 2003-09-26 01:50:59.000000000 +0200 -@@ -3014,8 +3014,18 @@ cRecordControl::cRecordControl(cDevice * - isyslog("record %s", fileName); - if (MakeDirs(fileName, true)) { - const cChannel *ch = timer->Channel(); +diff -upr ./DIST/vdr-1.2.1/menu.c ./menu.c +--- ./DIST/vdr-1.2.1/menu.c 2003-06-07 14:31:57.000000000 +0200 ++++ ./menu.c 2003-07-16 05:39:36.000000000 +0200 +@@ -2969,8 +2969,18 @@ cRecordControl::cRecordControl(cDevice * + + cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName); + const cChannel *ch = timer->Channel(); +#ifdef VDRTTXTSUBSHOOKS -+ cTtxtSubsRecorderBase *subsRecorder = cVDRTtxtsubsHookListener::Hook() -+ ->NewTtxtSubsRecorder(device, ch); -+ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2(), subsRecorder); ++ cTtxtSubsRecorderBase *subsRecorder = cVDRTtxtsubsHookListener::Hook() ++ ->NewTtxtSubsRecorder(device, ch); ++ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2(), subsRecorder); +#else - recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); + recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); +#endif - if (device->AttachReceiver(recorder)) { + if (device->AttachReceiver(recorder)) { +#ifdef VDRTTXTSUBSHOOKS -+ if(subsRecorder) -+ subsRecorder->DeviceAttach(); ++ if(subsRecorder) ++ subsRecorder->DeviceAttach(); +#endif - Recording.WriteSummary(); - cStatus::MsgRecording(device, Recording.Name()); - if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() -diff -upr ./DIST/vdr-1.2.5/menu.h ./menu.h ---- ./DIST/vdr-1.2.5/menu.h 2003-08-03 11:37:18.000000000 +0200 -+++ ./menu.h 2003-09-26 01:49:20.000000000 +0200 + Recording.WriteSummary(); + cStatus::MsgRecording(device, Recording.Name()); + if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() +diff -upr ./DIST/vdr-1.2.1/menu.h ./menu.h +--- ./DIST/vdr-1.2.1/menu.h 2003-05-24 18:35:52.000000000 +0200 ++++ ./menu.h 2003-07-16 05:39:36.000000000 +0200 @@ -14,6 +14,7 @@ #include "device.h" #include "osd.h" @@ -121,9 +121,9 @@ diff -upr ./DIST/vdr-1.2.5/menu.h ./menu.h #include "recorder.h" #include "recording.h" -diff -upr ./DIST/vdr-1.2.5/osd.c ./osd.c ---- ./DIST/vdr-1.2.5/osd.c 2003-06-04 18:13:00.000000000 +0200 -+++ ./osd.c 2003-09-26 01:49:20.000000000 +0200 +diff -upr ./DIST/vdr-1.2.1/osd.c ./osd.c +--- ./DIST/vdr-1.2.1/osd.c 2003-06-04 18:13:00.000000000 +0200 ++++ ./osd.c 2003-07-16 05:43:06.000000000 +0200 @@ -12,6 +12,7 @@ #include "device.h" #include "i18n.h" @@ -153,9 +153,9 @@ diff -upr ./DIST/vdr-1.2.5/osd.c ./osd.c } void cOsd::Clear(void) -diff -upr ./DIST/vdr-1.2.5/recorder.c ./recorder.c ---- ./DIST/vdr-1.2.5/recorder.c 2003-08-02 15:01:19.000000000 +0200 -+++ ./recorder.c 2003-09-26 01:52:35.000000000 +0200 +diff -upr ./DIST/vdr-1.2.1/recorder.c ./recorder.c +--- ./DIST/vdr-1.2.1/recorder.c 2003-05-16 15:33:04.000000000 +0200 ++++ ./recorder.c 2003-07-16 05:39:36.000000000 +0200 @@ -10,6 +10,8 @@ #include <stdarg.h> #include <stdio.h> @@ -184,10 +184,10 @@ diff -upr ./DIST/vdr-1.2.5/recorder.c ./recorder.c +#ifdef VDRTTXTSUBSHOOKS + ttxtSubsRecorder = tsr; +#endif + isyslog("record %s", FileName); - // Make sure the disk is up and running: - -@@ -55,6 +64,10 @@ cRecorder::cRecorder(const char *FileNam + // Create directories if necessary: +@@ -61,6 +70,10 @@ cRecorder::cRecorder(const char *FileNam cRecorder::~cRecorder() { Detach(); @@ -198,7 +198,7 @@ diff -upr ./DIST/vdr-1.2.5/recorder.c ./recorder.c delete index; delete fileName; delete remux; -@@ -129,6 +142,19 @@ void cRecorder::Action(void) +@@ -135,6 +148,19 @@ void cRecorder::Action(void) break; } fileSize += Result; @@ -218,9 +218,9 @@ diff -upr ./DIST/vdr-1.2.5/recorder.c ./recorder.c } else break; -diff -upr ./DIST/vdr-1.2.5/recorder.h ./recorder.h ---- ./DIST/vdr-1.2.5/recorder.h 2002-06-08 11:35:03.000000000 +0200 -+++ ./recorder.h 2003-09-26 01:49:20.000000000 +0200 +diff -upr ./DIST/vdr-1.2.1/recorder.h ./recorder.h +--- ./DIST/vdr-1.2.1/recorder.h 2002-06-08 11:35:03.000000000 +0200 ++++ ./recorder.h 2003-07-16 05:39:36.000000000 +0200 @@ -15,6 +15,7 @@ #include "remux.h" #include "ringbuffer.h" @@ -553,7 +553,7 @@ int GetTtxtInfo(int card_no, int channel, uint16_t sid, uint16_t vpid, struct tt FreeSects(patsects); } - if(foundinfo) { + if(foundinfo || (ret == 0 && retry == 2)) { struct ttxtinfo info2; DupTtxtInfo(info, &info2); gCache[channel] = info2; @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: ttxtsubs.c,v 1.22 2004/03/01 04:36:32 ragge Exp $ + * $Id: ttxtsubs.c,v 1.23 2004/03/02 01:08:45 ragge Exp $ */ #include <vdr/plugin.h> @@ -15,11 +15,12 @@ #include "ttxtsubsglobals.h" #include "ttxtsubsdisplayer.h" #include "ttxtsubsrecorder.h" +#include "ttxtsubsi18n.h" #include "utils.h" #include "siinfo.h" #include "ttxtsubs.h" -static const char *VERSION = "0.0.5pre1"; +static const char *VERSION = "0.0.5pre2"; static const char *DESCRIPTION = "Teletext subtitles"; cTtxtsubsConf globals; @@ -38,7 +39,7 @@ char *gLanguages[][2] = { "por","", //Portuguese "fre","fra", //French "nor","", //Norwegian - "fin","", //Finnish + "fin","suo", //Finnish "pol","", //Polish "spa","esl", //Spanish "gre","ell", //Greek @@ -46,6 +47,9 @@ char *gLanguages[][2] = { "ron","rum", //Romanian "hun","", //Hungarian "cat","", //Catalanian +#if VDRVERSNUM >= 10300 + "rus","", //Russian +#endif // Not in translations! "dan","" //Danish }; @@ -67,6 +71,10 @@ const char *gLanguageNames[] = { "Romaneste", "Magyar", "Catalā", +#if VDRVERSNUM >= 10300 + "ĀãááÚØŲ", +#endif + // Not in translations! "Dansk" }; int gNumLanguages = sizeof(gLanguages) / sizeof(gLanguages[0]); @@ -78,7 +86,7 @@ public: // -- cPlugin virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } + virtual const char *Description(void) { return tr(DESCRIPTION); } virtual const char *CommandLineHelp(void); virtual bool ProcessArgs(int argc, char *argv[]); virtual bool Start(void); @@ -181,6 +189,8 @@ bool cPluginTtxtsubs::Start(void) { // Start any background activities the plugin shall perform. + RegisterI18n(Phrases); + if(!memcmp(globals.mLanguages[0][0], "unk", 3)) { // no language found in setup if(strlen(mOldLanguage)) { @@ -283,6 +293,9 @@ bool cPluginTtxtsubs::SetupParse(const char *Name, const char *Value) else if(!strcasecmp(Name, "BottomLB")) globals.mBottomLB = atoi(Value); else if(!strcasecmp(Name, "BottomAdj")) globals.mBottomAdj = atoi(Value); else if(!strcasecmp(Name, "FrenchSpecial")) globals.mFrenchSpecial = atoi(Value); + else if(!strcasecmp(Name, "LineSpacing")) globals.mLineSpacing = atoi(Value); + else if(!strcasecmp(Name, "FgColor")) globals.mFgColor = atoi(Value); + else if(!strcasecmp(Name, "BgColor")) globals.mBgColor = atoi(Value); else if(!strcasecmp(Name, "Languages")) parseLanguages(Value); else if(!strcasecmp(Name, "HearingImpaireds")) parseHIs(Value); // Handle old settings @@ -470,6 +483,10 @@ void cMenuSetupTtxtsubsLanguages::Store(void) fprintf(stderr, "cMenuSetupTtxtsubsLanguages::Store\n"); } +const char * mainMenuAlts[4] = {NULL, NULL, NULL, NULL}; +const char * textPosAlts[4]; +const char * textColors[12]; + cMenuSetupTtxtsubs::cMenuSetupTtxtsubs(cPluginTtxtsubs *ttxtsubs, int doStore) : mTtxtsubs(ttxtsubs), @@ -478,10 +495,33 @@ cMenuSetupTtxtsubs::cMenuSetupTtxtsubs(cPluginTtxtsubs *ttxtsubs, int doStore) { //static char *mainMenuAlts[] = {"off", "Display on/off", "4:3/Letterbox", "This menu"}; // can't get it to store changes in file - static char *mainMenuAlts[] = {"off", "Display on/off", "4:3/Letterbox"}; - static int numMainMenuAlts = sizeof(mainMenuAlts) / sizeof(mainMenuAlts[0]); - static char *textPosAlts[] = {"Left", "Center", "Right"}; - static int numTextPosAlts = sizeof(textPosAlts) / sizeof(textPosAlts[0]); + if(mainMenuAlts[0] == NULL) { + mainMenuAlts[0] = tr("off"); + mainMenuAlts[1] = tr("Display on/off"); + mainMenuAlts[2] = tr("4:3/Letterbox"); + mainMenuAlts[3] = NULL; + + textPosAlts[0] = tr("Left"); + textPosAlts[1] = tr("Center"); + textPosAlts[2] = tr("Right"); + textPosAlts[3] = NULL; + + textColors[0] = tr("Black"); + textColors[1] = tr("White"); + textColors[2] = tr("Red"); + textColors[3] = tr("Green"); + textColors[4] = tr("Yellow"); + textColors[5] = tr("Magenta"); + textColors[6] = tr("Blue"); + textColors[7] = tr("Cyan"); + textColors[8] = tr("Grey"); + textColors[9] = tr("Transparent"); + textColors[10] = tr("Background"); + textColors[11] = NULL; + } + const int numTextPosAlts = sizeof(textPosAlts) / sizeof(textPosAlts[0]) - 1; + const int numMainMenuAlts = sizeof(mainMenuAlts) / sizeof(mainMenuAlts[0]) - 1; + const int numTextColors = sizeof(textColors) / sizeof(textColors[0]) - 1; mSavedFrenchSpecial = mConf.mFrenchSpecial; @@ -512,6 +552,16 @@ cMenuSetupTtxtsubs::cMenuSetupTtxtsubs(cPluginTtxtsubs *ttxtsubs, int doStore) &mConf.mBottomLB, tr("4:3/Anamorph"), tr("Letterbox"))); Add(new cMenuEditIntItem(tr("Text Vertical Adjust"), &mConf.mBottomAdj, -100, 45)); + Add(new cMenuEditIntItem( tr("Line Spacing Adjust"), + &mConf.mLineSpacing, -25, 25)); + if(mConf.mFgColor < 0 || mConf.mFgColor >= numTextColors) + mConf.mFgColor = 1; // menu item segfaults if out of range + Add(new cMenuEditStraItem(tr("Text Color"), &mConf.mFgColor, + numTextColors, textColors)); + if(mConf.mBgColor < 0 || mConf.mBgColor >= numTextColors) + mConf.mBgColor = 0; // menu item segfaults if out of range + Add(new cMenuEditStraItem(tr("Background Color"), &mConf.mBgColor, + numTextColors, textColors)); Add(new cMenuEditBoolItem(tr("Workaround for some French chns"), &mConf.mFrenchSpecial, tr("no"), tr("yes"))); @@ -523,16 +573,16 @@ cMenuSetupTtxtsubs::cMenuSetupTtxtsubs(cPluginTtxtsubs *ttxtsubs, int doStore) item->SetColor(clrCyan); Add(item); - sprintf(str, "Language %d", n + 1); + sprintf(str, "%s %d", tr("Language"), n + 1); if(mLanguageNo[n] >= 0) { - Add(new cMenuEditStraItem(tr(str), &mLanguageNo[n], gNumLanguages, gLanguageNames)); + Add(new cMenuEditStraItem(str, &mLanguageNo[n], gNumLanguages, gLanguageNames)); } else { - Add(new cMenuEditStrItem(tr(str), mConf.mLanguages[n][0], 4, allowedc)); - Add(new cMenuEditStrItem(tr(str), mConf.mLanguages[n][1], 4, allowedc)); + Add(new cMenuEditStrItem(str, mConf.mLanguages[n][0], 4, allowedc)); + Add(new cMenuEditStrItem(str, mConf.mLanguages[n][1], 4, allowedc)); } - sprintf(str, "Language %d Hearing Impaired", n + 1); - Add(new cMenuEditBoolItem(tr(str), &(mConf.mHearingImpaireds[n][0]), + sprintf(str, "%s %d %s", tr("Language"), n + 1, tr("Hearing Impaired")); + Add(new cMenuEditBoolItem(str, &(mConf.mHearingImpaireds[n][0]), tr("no"), tr("yes"))); } @@ -572,6 +622,9 @@ void cMenuSetupTtxtsubs::Store(void) SetupStore("BottomAdj", mConf.mBottomAdj); SetupStore("FrenchSpecial", mConf.mFrenchSpecial); SetupStore("MainMenuEntry", mConf.mMainMenuEntry); + SetupStore("LineSpacing", mConf.mLineSpacing); + SetupStore("FgColor", mConf.mFgColor); + SetupStore("BgColor", mConf.mBgColor); char lstr[MAXLANGUAGES*2*4 + 1]; char histr[MAXLANGUAGES*2 + 1]; diff --git a/ttxtsubsdisplay.c b/ttxtsubsdisplay.c index cfb7e88..5bc302b 100644 --- a/ttxtsubsdisplay.c +++ b/ttxtsubsdisplay.c @@ -22,6 +22,11 @@ enum { finished }; +// extra colours +enum eMyDvbColor { + myClrGrey = 0xFF808080 +}; + // -------------------- @@ -336,6 +341,26 @@ enum { TEXTX = 15 }; +static eDvbColor +getcolor(int color) +{ + switch (color) + { + case 0: return clrBlack; + case 1: return clrWhite; + case 2: return clrRed; + case 3: return clrGreen; + case 4: return clrYellow; + case 5: return clrMagenta; + case 6: return clrBlue; + case 7: return clrCyan; + case 8: return (eDvbColor) myClrGrey; + case 9: return clrTransparent; + default: return clrBackground; + } + return clrBackground; +} + void cTtxtSubsDisplay::ShowOSD(void) { int i, y; @@ -388,7 +413,7 @@ void cTtxtSubsDisplay::ShowOSD(void) strcpy(buf[3], "1234567890123456789012345678901234567890"); #endif - y = bottom - SCREENTOP - ROWH - (ROWINCR * (rowcount-1)); + y = bottom - SCREENTOP - ROWH - ((ROWINCR + globals.lineSpacing()) * (rowcount-1)); for(i = 0; i < rowcount; i++) { tWindowHandle wind; int w = 0; @@ -399,8 +424,8 @@ void cTtxtSubsDisplay::ShowOSD(void) //wind = mOsd->Create(0, y, 4, ROWH, 2); //mOsd->Fill(0, y, 4, y + ROWH, clrWhite, wind); //mOsd->Fill(0, y, 4, y + ROWH, clrBackground, wind); - wind = mOsd->Create(0, 575, 4, 1, 2); - mOsd->Fill(0, 574, 4, 575, clrWhite, wind); + wind = mOsd->Create(0, 575, 4, 1, 2, false); + mOsd->Fill(0, 574, 4, 575, getcolor(globals.fgColor()), wind); mOsd->Fill(0, 574, 4, 575, clrTransparent, wind); doneWidthWorkaround = 1; } @@ -418,12 +443,12 @@ void cTtxtSubsDisplay::ShowOSD(void) break; } - wind = mOsd->Create(left, y, w, ROWH, 2); - mOsd->Fill(left, y, left + w, y + ROWH, clrWhite, wind); // needed for dxr3s... - mOsd->Fill(left, y, left + w, y + ROWH, clrBackground, wind); - mOsd->Text(left + TEXTX, y + TEXTY, buf[i], clrWhite, clrBackground, wind); + wind = mOsd->Create(left, y, w, ROWH, 2, false); + mOsd->Fill(left, y, left + w, y + ROWH, getcolor(globals.fgColor()), wind); // needed for dxr3s... + mOsd->Fill(left, y, left + w, y + ROWH, getcolor(globals.bgColor()), wind); + mOsd->Text(left + TEXTX, y + TEXTY, buf[i], getcolor(globals.fgColor()), getcolor(globals.bgColor()), wind); - y += ROWINCR; + y += (ROWINCR + globals.lineSpacing()); } mOsd->Flush(); diff --git a/ttxtsubsglobals.h b/ttxtsubsglobals.h index 09bae9d..cee1bd7 100644 --- a/ttxtsubsglobals.h +++ b/ttxtsubsglobals.h @@ -18,6 +18,9 @@ class cTtxtsubsConf { mBottomLB = 0; mBottomAdj = 0; mFrenchSpecial = 0; + mLineSpacing = 0; + mFgColor = 1; + mBgColor = 10; memset(mLanguages, 0, sizeof(mLanguages)); memset(mHearingImpaireds, 0, sizeof(mHearingImpaireds)); } @@ -30,6 +33,9 @@ class cTtxtsubsConf { int bottomLB(void) {return mBottomLB;} int bottomAdj(void) {return mBottomAdj;} int frenchSpecial(void) {return mFrenchSpecial;} + int lineSpacing(void) {return mLineSpacing;} + int fgColor(void) {return mFgColor;} + int bgColor(void) {return mBgColor;} char (*languages(void))[MAXLANGUAGES][2][4] {return &mLanguages;} int (*hearingImpaireds(void))[MAXLANGUAGES][2] {return &mHearingImpaireds;} @@ -43,6 +49,9 @@ class cTtxtsubsConf { int mBottomLB; int mBottomAdj; int mFrenchSpecial; + int mLineSpacing; + int mFgColor; + int mBgColor; char mLanguages[MAXLANGUAGES][2][4]; int mHearingImpaireds[MAXLANGUAGES][2]; }; diff --git a/ttxtsubsi18n.c b/ttxtsubsi18n.c new file mode 100644 index 0000000..6507a5b --- /dev/null +++ b/ttxtsubsi18n.c @@ -0,0 +1,715 @@ +/* + * ttxtsubsi18n.c: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + * $Id: ttxtsubsi18n.c,v 1.1 2004/03/02 01:08:45 ragge Exp $ + */ + +#include "ttxtsubsi18n.h" +#include <stdio.h> + +const tI18nPhrase Phrases[] = +{ + { "Teletext subtitles", // English + "", // Deutsch + "", // Slovenian + "", // Italian + "", // Dutch + "", // Portuguese + "", // French + "", // Norwegian + "Tekstitys (Teksti-TV)", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Textning (Text-TV)", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalanian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Hide teletext subtitles", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Piilota tekstitys (Teksti-TV)", + "", // TODO + "", // TODO + "", // TODO + "Göm textning (Text-TV)", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Display teletext subtitles", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Näytä tekstitys (Teksti-TV)", + "", // TODO + "", // TODO + "", // TODO + "Visa textning (Text-TV)", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Position Teletext Subtitles for 4:3/Anamorph", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "4:3/Anamorfinen tekstitys (Teksti-TV)", + "", // TODO + "", // TODO + "", // TODO + "Textning för 4:3/anamorf (Text-TV)", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Position Teletext Subtitles for Letterbox", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Letterbox tekstitys (Teksti-TV)", + "", // TODO + "", // TODO + "", // TODO + "Textning för brevlådeformat (Text-TV)", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Display Subtitles", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Näytä tekstitykset", + "", // TODO + "", // TODO + "", // TODO + "Visa textning", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Record Subtitles", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Tallenna tekstitykset", + "", // TODO + "", // TODO + "", // TODO + "Spela in textning", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Main Menu Alternative", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Päävalikon toiminnot", + "", // TODO + "", // TODO + "", // TODO + "Huvudmenyalternativ", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Display on/off", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "aktivointi", + "", // TODO + "", // TODO + "", // TODO + "Visa textning på/av", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "4:3/Letterbox", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "kuvasuhde", + "", // TODO + "", // TODO + "", // TODO + "4:3/brevlådeformat", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Text Horizontal Position", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Vaakatasaus", + "", // TODO + "", // TODO + "", // TODO + "Horisontell position", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Left", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "vasen", + "", // TODO + "", // TODO + "", // TODO + "vänster", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Center", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "keskitä", + "", // TODO + "", // TODO + "", // TODO + "centrerad", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Right", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "oikea", + "", // TODO + "", // TODO + "", // TODO + "höger", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Text Vertical Position", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Pystytasaus", + "", // TODO + "", // TODO + "", // TODO + "Vertikal positon", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "4:3/Anamorph", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "4:3/anamorfinen", + "", // TODO + "", // TODO + "", // TODO + "4:3/anamorf", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Letterbox", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "letterbox", + "", // TODO + "", // TODO + "", // TODO + "brevlådeformat", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Text Vertical Adjust", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Pystytasauksen hienosäätö", + "", // TODO + "", // TODO + "", // TODO + "Vertikal justering", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Line Spacing Adjust", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Rivivälin hienosäätö", + "", // TODO + "", // TODO + "", // TODO + "Radavstånd", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Workaround for some French chns", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Ranskalainen silmänkääntötemppu", + "", // TODO + "", // TODO + "", // TODO + "Fix för vissa franska kanaler", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Language", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Tekstityskieli", + "", // TODO + "", // TODO + "", // TODO + "Språk", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Hearing Impaired", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "kuulorajoitteisille", + "", // TODO + "", // TODO + "", // TODO + "Nedsatt hörsel", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Text Color", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Kirjasimen väri", + "", // TODO + "", // TODO + "", // TODO + "Färg på text", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Background Color", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "Taustaväri", + "", // TODO + "", // TODO + "", // TODO + "Färg på bakgrund", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Black", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "musta", + "", // TODO + "", // TODO + "", // TODO + "svart", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "White", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "valkoinen", + "", // TODO + "", // TODO + "", // TODO + "vit", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Red", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "punainen", + "", // TODO + "", // TODO + "", // TODO + "röd", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Green", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "vihreä", + "", // TODO + "", // TODO + "", // TODO + "grön", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Yellow", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "keltainen", + "", // TODO + "", // TODO + "", // TODO + "gul", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Magenta", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "magenta", + "", // TODO + "", // TODO + "", // TODO + "magenta", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Blue", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "sininen", + "", // TODO + "", // TODO + "", // TODO + "blå", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Cyan", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "syaani", + "", // TODO + "", // TODO + "", // TODO + "cyan", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Grey", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "harmaa", + "", // TODO + "", // TODO + "", // TODO + "grå", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Transparent", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "läpinäkyvä", + "", // TODO + "", // TODO + "", // TODO + "transparent", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { "Background", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "tausta", + "", // TODO + "", // TODO + "", // TODO + "bakgrund", + "", // TODO + "", // TODO + "", // TODO +#if VDRVERSNUM >= 10300 + "", // TODO +#endif + }, + { NULL } +}; diff --git a/ttxtsubsi18n.h b/ttxtsubsi18n.h new file mode 100644 index 0000000..bc3f02b --- /dev/null +++ b/ttxtsubsi18n.h @@ -0,0 +1,17 @@ +/* + * ttxtsubsi18n.h: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + * $Id: ttxtsubsi18n.h,v 1.1 2004/03/02 01:08:45 ragge Exp $ + */ + +#ifndef __TTXTSUBS_I18N_H +#define __TTXTSUBS_I18N_H + +#include <vdr/i18n.h> + + +extern const tI18nPhrase Phrases[]; + +#endif //__TTXTSUBS_I18N_H |