Updated for vdr-1.3.21.

Minor modification for DEBUG mode.
Added preliminary support for themes and some GUI tweaks.
Added horizontal offset setup option.
This commit is contained in:
Rolf Ahrenberg 2005-02-24 04:20:00 +02:00
parent 825755281f
commit ca954757db
15 changed files with 686 additions and 450 deletions

View File

@ -130,3 +130,10 @@ VDR Plugin 'femon' Revision History
2005-01-24: Version 0.8.1
- Added Estonian translations (Thanks to Arthur Konovalov).
2005-02-24: Version 0.8.5
- Updated for vdr-1.3.21.
- Minor modification for DEBUG mode.
- Added preliminary support for themes and some GUI tweaks.
- Added horizontal offset setup option.

View File

@ -48,6 +48,10 @@ ifdef NTSC_SYSTEM
DEFINES += -DNTSC_SYSTEM
endif
ifdef DEBUG
DEFINES += -DDEBUG
endif
### The object files (add further files here):
OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o

50
femon.c
View File

@ -12,7 +12,7 @@
#include "femonosd.h"
#include "femon.h"
#if VDRVERSNUM && VDRVERSNUM < 10319
#if VDRVERSNUM && VDRVERSNUM < 10321
#error "You don't exist! Go away!"
#endif
@ -53,6 +53,11 @@ bool cPluginFemon::Start(void)
return true;
}
void cPluginFemon::Stop(void)
{
// Stop the background activities.
}
void cPluginFemon::Housekeeping(void)
{
// Perform any cleanup or other regular tasks.
@ -72,6 +77,8 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value);
else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value);
else if (!strcasecmp(Name, "OSDHeight")) femonConfig.osdheight = atoi(Value);
else if (!strcasecmp(Name, "OSDOffset")) femonConfig.osdoffset = atoi(Value);
else if (!strcasecmp(Name, "Theme")) femonConfig.theme = atoi(Value);
else if (!strcasecmp(Name, "ShowCASystem")) femonConfig.showcasystem = atoi(Value);
else if (!strcasecmp(Name, "RedLimit")) femonConfig.redlimit = atoi(Value);
else if (!strcasecmp(Name, "GreenLimit")) femonConfig.greenlimit = atoi(Value);
@ -80,17 +87,22 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "CalcInterval")) femonConfig.calcinterval = atoi(Value);
else
return false;
if (femonConfig.displaymode < 0 || femonConfig.displaymode >= modeMaxNumber) femonConfig.displaymode = 0;
if (femonConfig.displaymode < 0 || femonConfig.displaymode >= eFemonModeMaxNumber) femonConfig.displaymode = 0;
return true;
}
cMenuFemonSetup::cMenuFemonSetup(void)
{
dispmodes[modeBasic] = tr("basic");
dispmodes[modeTransponder] = tr("transponder");
dispmodes[modeStream] = tr("stream");
dispmodes[modeAC3] = tr("AC-3");
dispmodes[eFemonModeBasic] = tr("basic");
dispmodes[eFemonModeTransponder] = tr("transponder");
dispmodes[eFemonModeStream] = tr("stream");
dispmodes[eFemonModeAC3] = tr("AC-3");
themes[eFemonThemeClassic] = tr("Classic");
themes[eFemonThemeElchi] = tr("Elchi");
themes[eFemonThemeDeepBlue] = tr("DeepBlue");
Setup();
}
@ -99,18 +111,20 @@ void cMenuFemonSetup::Setup(void)
int current = Current();
Clear();
Add(new cMenuEditBoolItem( tr("Hide Mainmenu Entry"), &femonConfig.hidemenu, tr("no"), tr("yes")));
Add(new cMenuEditBoolItem( tr("Use Syslog Output"), &femonConfig.syslogoutput, tr("no"), tr("yes")));
Add(new cMenuEditStraItem( tr("Default Display Mode"), &femonConfig.displaymode, modeMaxNumber, dispmodes));
Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top")));
Add(new cMenuEditIntItem( tr("Height"), &femonConfig.osdheight, 400, 500));
Add(new cMenuEditBoolItem( tr("Show CA System"), &femonConfig.showcasystem, tr("no"), tr("yes")));
Add(new cMenuEditIntItem( tr("Red Limit [%]"), &femonConfig.redlimit, 1, 50));
Add(new cMenuEditIntItem( tr("Green Limit [%]"), &femonConfig.greenlimit, 51, 100));
Add(new cMenuEditIntItem( tr("OSD Update Interval [0.1s]"), &femonConfig.updateinterval, 1, 100));
Add(new cMenuEditBoolItem( tr("Analyze Stream"), &femonConfig.analyzestream, tr("no"), tr("yes")));
Add(new cMenuEditBoolItem( tr("Hide main menu entry"), &femonConfig.hidemenu, tr("no"), tr("yes")));
Add(new cMenuEditBoolItem( tr("Use syslog output"), &femonConfig.syslogoutput, tr("no"), tr("yes")));
Add(new cMenuEditStraItem( tr("Default display mode"), &femonConfig.displaymode, eFemonModeMaxNumber, dispmodes));
Add(new cMenuEditStraItem( tr("Theme"), &femonConfig.theme, eFemonThemeMaxNumber,themes));
Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top")));
Add(new cMenuEditIntItem( tr("Height"), &femonConfig.osdheight, 400, 500));
Add(new cMenuEditIntItem( tr("Horizontal offset"), &femonConfig.osdoffset, -50, 50));
Add(new cMenuEditBoolItem( tr("Show CA system"), &femonConfig.showcasystem, tr("no"), tr("yes")));
Add(new cMenuEditIntItem( tr("Red limit [%]"), &femonConfig.redlimit, 1, 50));
Add(new cMenuEditIntItem( tr("Green limit [%]"), &femonConfig.greenlimit, 51, 100));
Add(new cMenuEditIntItem( tr("OSD update interval [0.1s]"), &femonConfig.updateinterval, 1, 100));
Add(new cMenuEditBoolItem( tr("Analyze stream"), &femonConfig.analyzestream, tr("no"), tr("yes")));
if (femonConfig.analyzestream)
Add(new cMenuEditIntItem(tr("Calculation Interval [0.1s]"), &femonConfig.calcinterval, 1, 100));
Add(new cMenuEditIntItem(tr("Calculation interval [0.1s]"), &femonConfig.calcinterval, 1, 100));
SetCurrent(Get(current));
Display();
@ -121,8 +135,10 @@ void cMenuFemonSetup::Store(void)
SetupStore("HideMenu", femonConfig.hidemenu);
SetupStore("SyslogOutput", femonConfig.syslogoutput);
SetupStore("DisplayMode", femonConfig.displaymode);
SetupStore("Theme", femonConfig.theme);
SetupStore("Position", femonConfig.position);
SetupStore("OSDHeight", femonConfig.osdheight);
SetupStore("OSDOffset", femonConfig.osdoffset);
SetupStore("ShowCASystem", femonConfig.showcasystem);
SetupStore("RedLimit", femonConfig.redlimit);
SetupStore("GreenLimit", femonConfig.greenlimit);

View File

@ -11,7 +11,7 @@
#include <vdr/plugin.h>
static const char *VERSION = "0.8.1";
static const char *VERSION = "0.8.5";
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
static const char *MAINMENUENTRY = "Signal Information";
@ -27,6 +27,7 @@ public:
virtual bool ProcessArgs(int argc, char *argv[]);
virtual bool Initialize(void);
virtual bool Start(void);
virtual void Stop(void);
virtual void Housekeeping(void);
virtual const char *MainMenuEntry(void) { return (femonConfig.hidemenu ? NULL : tr(MAINMENUENTRY)); }
virtual cOsdObject *MainMenuAction(void);
@ -36,7 +37,8 @@ public:
class cMenuFemonSetup : public cMenuSetupPage {
private:
const char *dispmodes[modeMaxNumber];
const char *dispmodes[eFemonModeMaxNumber];
const char *themes[eFemonThemeMaxNumber];
virtual void Setup(void);
protected:
virtual eOSState ProcessKey(eKeys Key);

View File

@ -14,6 +14,7 @@ cFemonConfig::cFemonConfig(void)
{
hidemenu = 0;
displaymode = 0;
theme = 0;
position = 1;
redlimit = 33;
greenlimit = 66;
@ -27,4 +28,43 @@ cFemonConfig::cFemonConfig(void)
#else
osdheight = 480;
#endif
osdoffset = 0;
}
const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
{
{
// eFemonThemeClassic
0x7F000000, // clrBackground
0xFFFCFCFC, // clrTitleBackground
0xFF000000, // clrTitleText
0xFFFCC024, // clrActiveText
0xFFFCFCFC, // clrInactiveText
0xFFFC1414, // clrRed
0xFFFCC024, // clrYellow
0xFF24FC24, // clrGreen
},
{
// eFemonThemeElchi
0xC8000066, // clrBackground
0xC833AAEE, // clrTitleBackground
0xFF000000, // clrTitleText
0xFFCCBB22, // clrActiveText
0xFFFFFFFF, // clrInactiveText
0xFFFF0000, // clrRed
0xFFFFEE00, // clrYellow
0xFF33CC33, // clrGreen
},
{
// eFemonThemeDeepBlue
0xC80C0C0C, // clrBackground
0xC832557A, // clrTitleBackground
0xFF000000, // clrTitleText
0xFFCE7B00, // clrActiveText
0xFF9A9A9A, // clrInactiveText
0xFF992900, // clrRed
0xFFCE7B00, // clrYellow
0xFF336600, // clrGreen
},
};

View File

@ -10,18 +10,19 @@
#define __FEMONCFG_H
#ifdef DEBUG
#define debug(x) (x);
#define Dprintf(x...) printf(x);
#else
#define debug(x) ;
#define Dprintf(x...) ;
#endif
enum dispModes {
modeBasic,
modeTransponder,
modeStream,
modeAC3,
modeMaxNumber
};
enum eFemonModes
{
eFemonModeBasic,
eFemonModeTransponder,
eFemonModeStream,
eFemonModeAC3,
eFemonModeMaxNumber
};
struct cFemonConfig
{
@ -29,6 +30,7 @@ public:
cFemonConfig(void);
int hidemenu;
int displaymode;
int theme;
int position;
int redlimit;
int greenlimit;
@ -38,8 +40,31 @@ public:
int syslogoutput;
int showcasystem;
int osdheight;
int osdoffset;
};
extern cFemonConfig femonConfig;
enum eFemonThemes
{
eFemonThemeClassic,
eFemonThemeElchi,
eFemonThemeDeepBlue,
eFemonThemeMaxNumber
};
struct cFemonTheme
{
int clrBackground;
int clrTitleBackground;
int clrTitleText;
int clrActiveText;
int clrInactiveText;
int clrRed;
int clrYellow;
int clrGreen;
};
extern const cFemonTheme femonTheme[eFemonThemeMaxNumber];
#endif // __FEMONCFG_H

View File

@ -93,7 +93,28 @@ const tI18nPhrase Phrases[] = {
"Kõrgus", // Eesti
"", // Dansk
},
{ "Default Display Mode", // English
{ "Horizontal offset", // English
"", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Português
"", // Français
"", // Norsk
"Vaakakeskitys", // suomi
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Català
"", // ÀãááÚØÙ (Russian)
"", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
},
{ "Default display mode", // English
"Standard Anzeigemodus", // Deutsch
"", // Slovenski
"Modo di visualizzazione standard", // Italiano
@ -177,7 +198,91 @@ const tI18nPhrase Phrases[] = {
"striim", // Eesti
"", // Dansk
},
{ "Hide Mainmenu Entry", // English
{ "Theme", // English
"Thema", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Português
"", // Français
"", // Norsk
"Teema", // suomi
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Català
"", // ÀãááÚØÙ (Russian)
"", // Hrvatski (Croatian)
"Teema", // Eesti
"", // Dansk
},
{ "Classic", // English
"Klassischer", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Português
"", // Français
"", // Norsk
"Klassinen", // suomi
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Català
"", // ÀãááÚØÙ (Russian)
"", // Hrvatski (Croatian)
"Klassikaline", // Eesti
"", // Dansk
},
{ "Elchi", // English
"Elchi", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Português
"", // Français
"", // Norsk
"Elchi", // suomi
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Català
"", // ÀãááÚØÙ (Russian)
"", // Hrvatski (Croatian)
"Elchi", // Eesti
"", // Dansk
},
{ "DeepBlue", // English
"DeepBlue", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Português
"", // Français
"", // Norsk
"DeepBlue", // suomi
"", // Polski
"", // Español
"", // ÅëëçíéêÜ (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Català
"", // ÀãááÚØÙ (Russian)
"", // Hrvatski (Croatian)
"DeepBlue", // Eesti
"", // Dansk
},
{ "Hide main menu entry", // English
"Hauptmenüeintrag verstecken", // Deutsch
"", // Slovenski
"Nascondi voce menù", // Italiano
@ -198,7 +303,7 @@ const tI18nPhrase Phrases[] = {
"Peida valik peamenüüs", // Eesti
"", // Dansk
},
{ "OSD Update Interval [0.1s]", // English
{ "OSD update interval [0.1s]", // English
"OSD Updateintervall [0.1s]", // Deutsch
"", // Slovenski
"Intervallo di aggiornamento [0.1s]", // Italiano
@ -219,7 +324,7 @@ const tI18nPhrase Phrases[] = {
"Uuendusintervall [0,1s]", // Eesti
"", // Dansk
},
{ "Analyze Stream", // English
{ "Analyze stream", // English
"Stream analysieren", // Deutsch
"", // Slovenski
"", // Italiano
@ -240,7 +345,7 @@ const tI18nPhrase Phrases[] = {
"Striimi analüüs", // Eesti
"", // Dansk
},
{ "Calculation Interval [0.1s]", // English
{ "Calculation interval [0.1s]", // English
"Berechnungsintervall [0.1s]", // Deutsch
"", // Slovenski
"Intervallo di calcolo [0.1s]", // Italiano
@ -261,7 +366,7 @@ const tI18nPhrase Phrases[] = {
"Kalkulatsiooni intervall [0,1s]", // Eesti
"", // Dansk
},
{ "Red Limit [%]", // English
{ "Red limit [%]", // English
"Grenze Rot [%]", // Deutsch
"", // Slovenski
"Limite rosso [%]", // Italiano
@ -282,7 +387,7 @@ const tI18nPhrase Phrases[] = {
"Punase limiit [%]", // Eesti
"", // Dansk
},
{ "Green Limit [%]", // English
{ "Green limit [%]", // English
"Grenze Grün [%]", // Deutsch
"", // Slovenski
"Limite verde [%]", // Italiano
@ -387,7 +492,7 @@ const tI18nPhrase Phrases[] = {
"Terrestiaalkaart", // Eesti
"", // Dansk
},
{ "Use Syslog Output", // English
{ "Use syslog output", // English
"Benutze syslog Ausgabe", // Deutsch
"", // Slovenski
"Registra su syslog", // Italiano
@ -408,111 +513,6 @@ const tI18nPhrase Phrases[] = {
"Kirjuta süsteemilogisse", // Eesti
"", // Dansk
},
{ "LOCK", // English
"LOCK", // Deutsch
"LOCK", // Slovenski
"LOCK", // Italiano
"LOCK", // Nederlands
"LOCK", // Português
"LOCK", // Français
"LOCK", // Norsk
"LOCK", // suomi
"LOCK", // Polski
"LOCK", // Español
"LOCK", // ÅëëçíéêÜ (Greek)
"LOCK", // Svenska
"LOCK", // Romaneste
"LOCK", // Magyar
"LOCK", // Català
"·°Å²°Â", // ÀãááÚØÙ (Russian)
"LOCK", // Hrvatski (Croatian)
"LOCK", // Eesti
"LOCK", // Dansk
},
{ "SIGNAL", // English
"SIGNAL", // Deutsch
"SIGNAL", // Slovenski
"SIGNAL", // Italiano
"SIGNAL", // Nederlands
"SIGNAL", // Português
"SIGNAL", // Français
"SIGNAL", // Norsk
"SIGNAL", // suomi
"SIGNAL", // Polski
"SIGNAL", // Español
"SIGNAL", // ÅëëçíéêÜ (Greek)
"SIGNAL", // Svenska
"SIGNAL", // Romaneste
"SIGNAL", // Magyar
"SIGNAL", // Català
"Á¸³½°»", // ÀãááÚØÙ (Russian)
"SIGNAL", // Hrvatski (Croatian)
"SIGNAL", // Eesti
"SIGNAL", // Dansk
},
{ "CARRIER", // English
"CARRIER", // Deutsch
"CARRIER", // Slovenski
"CARRIER", // Italiano
"CARRIER", // Nederlands
"CARRIER", // Português
"CARRIER", // Français
"CARRIER", // Norsk
"CARRIER", // suomi
"CARRIER", // Polski
"CARRIER", // Español
"CARRIER", // ÅëëçíéêÜ (Greek)
"CARRIER", // Svenska
"CARRIER", // Romaneste
"CARRIER", // Magyar
"CARRIER", // Català
"½µÁÃÉ°Ï", // ÀãááÚØÙ (Russian)
"CARRIER", // Hrvatski (Croatian)
"CARRIER", // Eesti
"CARRIER", // Dansk
},
{ "VITERBI", // English
"VITERBI", // Deutsch
"VITERBI", // Slovenski
"VITERBI", // Italiano
"VITERBI", // Nederlands
"VITERBI", // Português
"VITERBI", // Français
"VITERBI", // Norsk
"VITERBI", // suomi
"VITERBI", // Polski
"VITERBI", // Español
"VITERBI", // ÅëëçíéêÜ
"VITERBI", // Svenska
"VITERBI", // Romaneste
"VITERBI", // Magyar
"VITERBI", // Català
"²¸ÂµÀ±¸", // ÀãááÚØÙ (Russian)
"VITERBI", // Hrvatski (Croatian)
"VITERBI", // Eesti
"VITERBI", // Dansk
},
{ "SYNC", // English
"SYNC", // Deutsch
"SYNC", // Slovenski
"SYNC", // Italiano
"SYNC", // Nederlands
"SYNC", // Português
"SYNC", // Français
"SYNC", // Norsk
"SYNC", // suomi
"SYNC", // Polski
"SYNC", // Español
"SYNC", // ÅëëçíéêÜ (Greek)
"SYNC", // Svenska
"SYNC", // Romaneste
"SYNC", // Magyar
"SYNC", // Català
"Á¸½ÅÀ", // ÀãááÚØÙ (Russian)
"SYNC", // Hrvatski (Croatian)
"SYNC", // Eesti
"SYNC", // Dansk
},
{ "Audio", // English
"Audio", // Deutsch
"Audio", // Slovenski
@ -1773,7 +1773,7 @@ const tI18nPhrase Phrases[] = {
"SR", // Eesti
"", // Dansk
},
{ "Show CA System", // English
{ "Show CA system", // English
"CA System anzeigen", // Deutsch
"", // Slovenski
"", // Italiano

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,7 @@ private:
static cBitmap bmStereo, bmMonoLeft, bmMonoRight, bmDD, bmDD20, bmDD51;
static cBitmap bmZero, bmDevice, bmPAL, bmNTSC, bmOne, bmTwo, bmThree, bmFour, bmFive;
static cBitmap bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3;
static cBitmap bmLock, bmSignal, bmCarrier, bmViterbi, bmSync;
void DrawStatusWindow(void);
void DrawInfoWindow(void);

View File

@ -20,11 +20,11 @@
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
:cReceiver(Ca, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
{
debug(printf("cFemonReceiver::cFemonReceiver()\n"));
Dprintf("%s()\n", __PRETTY_FUNCTION__);
m_Active = false;
m_VideoPid = Vpid;
m_AudioPid = Apid[0];
m_AC3Pid = Dpid[0];
m_AC3Pid = Dpid[0];
m_VideoValid = false;
m_VideoPacketCount = 0;
m_VideoHorizontalSize = 0;
@ -58,7 +58,7 @@ cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
cFemonReceiver::~cFemonReceiver(void)
{
debug(printf("cFemonReceiver::~cFemonReceiver()\n"));
Dprintf("%s()\n", __PRETTY_FUNCTION__);
Detach();
if (m_Active) {
m_Active = false;
@ -69,7 +69,6 @@ cFemonReceiver::~cFemonReceiver(void)
/* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count)
{
debug(printf("cFemonReceiver::GetVideoInfo()\n"));
uint8_t *headr;
int found = 0;
int c = 0;
@ -162,7 +161,6 @@ static unsigned int samplerates[4] =
/* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count)
{
debug(printf("cFemonReceiver::GetAudioInfo()\n"));
uint8_t *headr;
int found = 0;
int c = 0;
@ -254,7 +252,7 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
void cFemonReceiver::Activate(bool On)
{
debug(printf("cFemonReceiver::Activate()\n"));
Dprintf("%s(%d)\n", __PRETTY_FUNCTION__, On);
if (On) {
if (!m_Active)
Start();
@ -267,7 +265,6 @@ void cFemonReceiver::Activate(bool On)
void cFemonReceiver::Receive(uchar *Data, int Length)
{
debug(printf("cFemonReceiver::Receive()\n"));
// TS packet length: TS_SIZE
if (Length == TS_SIZE) {
int pid = ((Data[1] & 0x1f) << 8) | (Data[2]);
@ -310,7 +307,7 @@ void cFemonReceiver::Receive(uchar *Data, int Length)
void cFemonReceiver::Action(void)
{
debug(printf("cFemonReceiver::Action()\n"));
Dprintf("%s()\n", __PRETTY_FUNCTION__);
cTimeMs t;
m_Active = true;
while (m_Active) {

24
symbols/carrier.xpm Normal file
View File

@ -0,0 +1,24 @@
/* XPM */
static char * carrier_xpm[] = {
"96 19 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++............................................................................................++",
"++............................................................................................++",
"++...........+++++.......+++++.....++++++++....++++++++....+++...++++++++...++++++++..........++",
"++..........+++++++......+++++.....+++++++++...+++++++++...+++...++++++++...+++++++++.........++",
"++..........+++.++++.....+++++.....+++...+++...+++...+++...+++...+++........+++...+++.........++",
"++.........+++...++.....+++.+++....+++...+++...+++...+++...+++...+++........+++...+++.........++",
"++.........+++..........+++.+++....++++++++....++++++++....+++...+++++++....++++++++..........++",
"++.........+++..........+++.+++....+++++++.....+++++++.....+++...+++++++....+++++++...........++",
"++.........+++.........+++...+++...+++..+++....+++..+++....+++...+++........+++..+++..........++",
"++.........+++...++....+++++++++...+++..+++....+++..+++....+++...+++........+++..+++..........++",
"++..........+++.++++...+++++++++...+++...+++...+++...+++...+++...+++........+++...+++.........++",
"++..........+++++++...+++.....+++..+++...+++...+++...+++...+++...++++++++...+++...+++.........++",
"++...........+++++....+++.....+++..+++....+++..+++....+++..+++...++++++++...+++....+++........++",
"++............................................................................................++",
"++............................................................................................++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

24
symbols/lock.xpm Normal file
View File

@ -0,0 +1,24 @@
/* XPM */
static char * lock_xpm[] = {
"96 19 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++............................................................................................++",
"++............................................................................................++",
"++........................+++........+++++........+++++.....+++....+++........................++",
"++........................+++.......++++++++.....+++++++....+++...+++.........................++",
"++........................+++.......+++..+++.....+++.++++...+++..+++..........................++",
"++........................+++......+++....+++...+++...++....+++.+++...........................++",
"++........................+++......+++....+++...+++.........+++++++...........................++",
"++........................+++......+++....+++...+++.........++++.+++..........................++",
"++........................+++......+++....+++...+++.........+++..+++..........................++",
"++........................+++......+++....+++...+++...++....+++...+++.........................++",
"++........................+++.......+++..+++.....+++.++++...+++...+++.........................++",
"++........................+++++++...++++++++.....+++++++....+++....+++........................++",
"++........................+++++++.....++++........+++++.....+++.....+++.......................++",
"++............................................................................................++",
"++............................................................................................++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

24
symbols/signal.xpm Normal file
View File

@ -0,0 +1,24 @@
/* XPM */
static char * signal_xpm[] = {
"96 19 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++............................................................................................++",
"++............................................................................................++",
"++.................+++++....+++......+++++.....+++....+++.....+++++.....+++...................++",
"++...............++++++++...+++....++++++++....++++...+++.....+++++.....+++...................++",
"++...............+++..+++...+++....+++..++++...+++++..+++.....+++++.....+++...................++",
"++...............+++........+++...+++....++....+++++..+++....+++.+++....+++...................++",
"++...............++++++.....+++...+++..........++++++.+++....+++.+++....+++...................++",
"++................++++++....+++...+++..+++++...+++.++.+++....+++.+++....+++...................++",
"++..................+++++...+++...+++..+++++...+++.++++++...+++...+++...+++...................++",
"++...............+++..+++...+++...+++....+++...+++..+++++...+++++++++...+++...................++",
"++...............+++..+++...+++....+++...+++...+++..+++++...+++++++++...+++...................++",
"++................++++++....+++....+++++++++...+++...++++..+++.....+++..+++++++...............++",
"++.................++++.....+++......+++++.....+++....+++..+++.....+++..+++++++...............++",
"++............................................................................................++",
"++............................................................................................++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

24
symbols/sync.xpm Normal file
View File

@ -0,0 +1,24 @@
/* XPM */
static char * sync_xpm[] = {
"96 19 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++............................................................................................++",
"++............................................................................................++",
"++.........................+++++...+++.....+++..+++....+++.....+++++..........................++",
"++.......................++++++++...+++...+++...++++...+++....+++++++.........................++",
"++.......................+++..+++....+++.+++....+++++..+++....+++.++++........................++",
"++.......................+++.........+++.+++....+++++..+++...+++...++.........................++",
"++.......................++++++.......+++++.....++++++.+++...+++..............................++",
"++........................++++++......+++++.....+++.++.+++...+++..............................++",
"++..........................+++++......+++......+++.++++++...+++..............................++",
"++.......................+++..+++......+++......+++..+++++...+++...++.........................++",
"++.......................+++..+++......+++......+++..+++++....+++.++++........................++",
"++........................++++++.......+++......+++...++++....+++++++.........................++",
"++.........................++++........+++......+++....+++.....+++++..........................++",
"++............................................................................................++",
"++............................................................................................++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

24
symbols/viterbi.xpm Normal file
View File

@ -0,0 +1,24 @@
/* XPM */
static char * viterbi_xpm[] = {
"96 19 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++............................................................................................++",
"++............................................................................................++",
"++............+++.....+++..+++...+++++++++..++++++++...++++++++....++++++++....+++............++",
"++.............++.....++...+++...+++++++++..++++++++...+++++++++...+++++++++...+++............++",
"++.............+++...+++...+++......+++.....+++........+++...+++...+++...+++...+++............++",
"++.............+++...+++...+++......+++.....+++........+++...+++...+++...+++...+++............++",
"++..............++...++....+++......+++.....+++++++....++++++++....++++++++....+++............++",
"++..............+++.+++....+++......+++.....+++++++....+++++++.....++++++++....+++............++",
"++..............+++.+++....+++......+++.....+++........+++..+++....+++...+++...+++............++",
"++...............++.++.....+++......+++.....+++........+++..+++....+++...+++...+++............++",
"++...............+++++.....+++......+++.....+++........+++...+++...+++...+++...+++............++",
"++...............+++++.....+++......+++.....++++++++...+++...+++...+++++++++...+++............++",
"++................+++......+++......+++.....++++++++...+++....+++..++++++++....+++............++",
"++............................................................................................++",
"++............................................................................................++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};