From e73252dc58ecd5a27c6d8af94028f311f23687ab Mon Sep 17 00:00:00 2001 From: andreas 'randy' weinberger Date: Sun, 21 Feb 2010 19:56:01 +0100 Subject: initial git upload, based on graphlcd-0.1.5 --- COPYING | 281 ++++ HISTORY | 455 +++++ Makefile | 105 ++ README | 231 +++ compat.h | 18 + display.c | 1953 ++++++++++++++++++++++ display.h | 152 ++ global.h | 33 + graphlcd/fonts.conf | 1 + graphlcd/fonts.conf.large | 4 + graphlcd/fonts.conf.medium | 4 + graphlcd/fonts.conf.small | 4 + graphlcd/fonts.conf.tiny | 4 + graphlcd/fonts.conf.ttf | 4 + graphlcd/fonts/Vera.ttf | Bin 0 -> 65932 bytes graphlcd/fonts/VeraBd.ttf | Bin 0 -> 58716 bytes graphlcd/fonts/f12b.fnt | Bin 0 -> 2576 bytes graphlcd/fonts/f12bn.fnt | Bin 0 -> 2576 bytes graphlcd/fonts/f17b.fnt | Bin 0 -> 3801 bytes graphlcd/fonts/f17bn.fnt | Bin 0 -> 8968 bytes graphlcd/fonts/f5n.fnt | Bin 0 -> 1456 bytes graphlcd/fonts/f8b.fnt | Bin 0 -> 1936 bytes graphlcd/fonts/f8n.fnt | Bin 0 -> 1936 bytes graphlcd/fonts/sym11.fnt | Bin 0 -> 484 bytes graphlcd/fonts/sym7.fnt | Bin 0 -> 340 bytes graphlcd/fonts/verdana-018.fnt | Bin 0 -> 8968 bytes graphlcd/fonts/verdanab-009.fnt | Bin 0 -> 3216 bytes graphlcd/fonts/verdanab-013.fnt | Bin 0 -> 6441 bytes graphlcd/logonames.alias | 1 + graphlcd/logonames.alias.1.2 | 301 ++++ graphlcd/logonames.alias.1.3 | 383 +++++ graphlcd/logos/1-2-3 TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/123SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/13TH STREET_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/13TH STREET_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/2M MAROC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/3NET_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/3NET_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/3SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/3SAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/40 TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/AB MOTEURS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/AB MOTEURS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/AB1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/AB1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ACTION_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ADO FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ADO FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/AL JAZEERA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/AL JAZEERA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ALGERIE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ALGERIE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ALOUETTE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ALOUETTE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ANIMAL PLANET_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ANIMAL PLANET_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ANIMAUX_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ANTENNE BAYERN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ANTENNE BAYERN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ANTENNE BAYERN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ARTE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ARTE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ATVPLUS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ATVPLUS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/AXN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/AXN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/B5 AKTUELL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/B5 AKTUELL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/B5 AKTUELL_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAHN TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BAHN TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAHN TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAYERISCHES FERNSEHEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BAYERISCHES FERNSEHEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAYERISCHES FERNSEHEN_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BAYERISCHES FERNSEHEN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAYERN1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BAYERN1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BAYERN4 KLASSIK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BAYERN4 KLASSIK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BBC PRIME_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BBC PRIME_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BBC WORLD_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BBC WORLD_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BBC WORLD_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BBC WORLD_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BEATE-UHSE.TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BEATE-UHSE.TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BEATE-UHSE.TV_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BEUR TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BEUR TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BEUR TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BIBEL TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BIBEL TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BIBEL TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BLOOMBERG TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BLOOMBERG TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BR-ALPHA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BR-ALPHA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BR-ALPHA_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BR-ALPHA_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BR-ALPHA_v3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BTV4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BTV4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BTV4_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BTV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BTV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BVN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/BVN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/BVN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CADENA DIAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CADENA DIAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL 24 HORAS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CANAL 24 HORAS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL CANARIAS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CANAL CANARIAS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL CANARIAS_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL CLUB_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CANAL CLUB_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL CLUB_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL+ ...30_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CANAL+_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CARTOON NETWORK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CARTOON NETWORK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CFN RFC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CFN RFC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CHERIE FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CHERIE FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CHRONOS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CHRONOS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CINE BOX_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CLASSICA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CLASSICA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CLUB TELEACHAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CLUB TELEACHAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CLUB TELEACHAT_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CNBC EUROPE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CNBC EUROPE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CNBC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CNBC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CNN INT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CNN INT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CNN+_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/CONTACT FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/CONTACT FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DAS ERSTE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DAS ERSTE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DAS ERSTE_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DAS VIERTE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DEUTSCHLANDFUNK KOELN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DEUTSCHLANDFUNK KOELN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DEUTSCHLANDFUNK KOELN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DEUTSCHLANDRADIO BERLIN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DEUTSCHLANDRADIO BERLIN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DEUTSCHLANDRADIO BERLIN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DISCOVERY CHANNEL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISCOVERY CHANNEL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DISCOVERY CHANNEL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISNEY CHANNEL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISNEY CHANNEL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DISNEY CHANNEL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISNEY PLAYHOUSE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISNEY TOON +1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DISNEY TOON_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DSF_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DSF_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/DW-TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/DW-TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/E ENTERTAINMENT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS EXTRA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS EXTRA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EINS EXTRA_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS EXTRA_v3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS FESTIVAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS FESTIVAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EINS FESTIVAL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS MUXX_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EINS MUXX_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EINS MUXX_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ERF RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ERF RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ESC1-EGYPT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ESPN CLASSIC SPORT_l.glcd | Bin 0 -> 432 bytes graphlcd/logos/ETB SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ETB SAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EURONEWS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EURONEWS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EUROPE 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EUROPE 2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EUROSPORT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EUROSPORT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/EXTRA 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/EXTREME SPORTS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FAB_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FAB_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FAB_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FASHION TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FASHION TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FASHION TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FESTIVAL 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FESTIVAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FM4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FM4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FOX KIDS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FOX KIDS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FOX KIDS_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FOX KIDS_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FOX NEWS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FOX_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FRANCE2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FRANCE2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FRANCE3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FRANCE3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FRANCE5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FRANCE5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FRANKEN SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FRANKEN SAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FREE-X TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FREE-X TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/FRITZ_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/FRITZ_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/GAMES TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/GOLDSTAR TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/GOLDSTAR TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/GOLDSTAR TV_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/GOLDSTAR TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/GUTE LAUNE TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HALLMARK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HARMONY FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HARMONY FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HARMONY FM_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HEIMATKANAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HEIMATKANAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HEIMATKANAL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HESSEN FERNSEHEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HESSEN FERNSEHEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HESSEN FERNSEHEN_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HISTOIRE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HISTORY CHANNEL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HIT CHANNEL 1025_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HIT CHANNEL 1025_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HITRADIO FFH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HITRADIO FFH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HOERZU DIGITAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HOERZU DIGITAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HOLLYWOOD CINEMA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HOLLYWOOD CINEMA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR CHRONOS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HR KLASSIK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HR KLASSIK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR KLASSIK_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR SKYLINE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HR SKYLINE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR SKYLINE_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HR1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HR2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HR2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HSE24_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HSE24_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/HSE24_v2_m.glcd | Bin 0 -> 123 bytes graphlcd/logos/HUNDERT6 RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/HUNDERT6 RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/JUMP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/JUMP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/JUNIOR_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/JUNIOR_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/JUNIOR_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/K TOON_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/K TOON_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/K TOON_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/K-TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/K-TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/K-TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KABEL 1 AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KABEL 1 AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KABEL 1 SCHWEIZ_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KABEL 1 SCHWEIZ_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KABEL 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KABEL 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KIKA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KIKA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KINK FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KINK FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KINOWELT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KRIMICO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KRIMICO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/KTO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/KTO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/L1MBURG_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/L1MBURG_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LASTMINUTE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/LASTMINUTE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LASTMINUTE_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LCI_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LCP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/LIBERTY TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/LIBERTY TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LIBERTY TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/LIVE 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MATCH TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MAXIMA FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MAXIMA FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FERNSEHEN SA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR FERNSEHEN SA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FERNSEHEN S_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR FERNSEHEN S_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FERNSEHEN TH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR FERNSEHEN TH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FERNSEHEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR FERNSEHEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FIGARO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR FIGARO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR FIGARO_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MDR INFO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MDR INFO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MEDIA TROPICAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MEDIA TROPICAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MGM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MGM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MOTORS TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MOTORS TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MOTORS TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV 2 POP CHANNEL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV 2 POP CHANNEL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV BASE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV BASE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV CENTRAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV CENTRAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV CENTRAL_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV DANCE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV F_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV HITS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MTV HITS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/MTV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/MULTIVISION_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/N-TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/N-TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/N-TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/N24_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/N24_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/N24_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NASN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NATIONAL GEOGRAPHIC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NBC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NBC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR FERNSEHEN HH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR FERNSEHEN HH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR FERNSEHEN MV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR FERNSEHEN MV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR FERNSEHEN NDS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR FERNSEHEN NDS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR FERNSEHEN SH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR FERNSEHEN SH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR FERNSEHEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR FERNSEHEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR INFO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR INFO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NDR KULTUR_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NDR KULTUR_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NED1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NED1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NED2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NED2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NED3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NED3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NET5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NET5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NEUN LIVE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NEUN LIVE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NEUN LIVE_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NICKELODEON_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NICKELODEON_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NICK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NORDWEST RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NORDWEST RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NORDWEST RADIO_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/NRJ_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/NRJ_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/OESTERREICH 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/OESTERREICH 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/OESTERREICH 3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/OESTERREICH 3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ONTV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ONTV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ONTV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ONYX TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ONYX TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 BURGENLAND_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 BURGENLAND_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 KAERNTEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 KAERNTEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 NIEDEROESTERREICH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 NIEDEROESTERREICH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 OBEROESTERREICH_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 OBEROESTERREICH_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 SALZBURG_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 SALZBURG_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 STEIERMARK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 STEIERMARK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 TIROL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 TIROL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 VORARLBERG_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 VORARLBERG_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2 WIEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2 WIEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF 2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ORF2 RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ORF2 RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/OTTO SHOP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/OTTO SHOP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PHOENIX_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PHOENIX_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PHOENIX_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PHOENIX_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PLANET RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PLANET RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PLANET_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PLANET_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PLAYBOY TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PLAYBOY_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PLAYHOUSE DISNEY_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PLUS 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT PORTAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT PORTAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT1_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT2_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT3_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE DIREKT4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE DIREKT4_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE EROTIK 1_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE EROTIK 2_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE EROTIK 3_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK 4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE EROTIK 4_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE EROTIK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE KRIMI_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE KRIMI_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE NOSTALGIE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE NOSTALGIE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE NOSTALGIE_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SERIE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SERIE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE SERIE_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SPORT1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SPORT1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE SPORT1_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SPORT2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE SPORT2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE SPORT2_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE START_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE START_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE START_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE1_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE2_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE3_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE4_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE5_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE6_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE6_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE6_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE7_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PREMIERE7_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PREMIERE7_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PRO SIEBEN AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PRO SIEBEN AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PRO SIEBEN SCHWEIZ_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PRO SIEBEN SCHWEIZ_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PRO SIEBEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PRO SIEBEN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/PRO SIEBEN_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PULS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/PULS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/QVC GERMANY_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/QVC GERMANY_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO 10 GOLD_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RADIO 10 GOLD_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO 538_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RADIO 538_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO MARIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RADIO MARIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO MARIA_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO MULTIKULTI_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RADIO MULTIKULTI_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RADIO MULTIKULTI_v2_m.glcd | Bin 0 -> 128 bytes graphlcd/logos/RADIOEINS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RADIOEINS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RAI 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 1_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RAI 2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 2_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RAI 3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAI 3_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAZE TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RAZE TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RAZE TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RBB BERLIN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RBB BERLIN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RBB BRANDENBURG_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RBB BRANDENBURG_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REALMADRID_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REALMADRID_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-CD-v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-CD-v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-CD_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-CD_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-DVD-v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-DVD_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-DVD_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-FILE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-FILE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-IMAGE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-IMAGE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-MUSIC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-MUSIC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/REPLAY-VDR_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/REPLAY-VDR_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RFM-TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RHEIN MAIN TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RHEIN MAIN TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RHEIN MAIN TV_v2_m.glcd | Bin 0 -> 158 bytes graphlcd/logos/RIRE ET CHANSONS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RIRE ET CHANSONS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ROCK ANTENNE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ROCK ANTENNE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ROCK ANTENNE_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RSR COULEUR 3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RSR COULEUR 3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTBF SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTBF SAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL 2 AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL 2 AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL 2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL 2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL AUSTRIA_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL SHOP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL SHOP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL SHOP_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL TELE LETZEBURG_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL TELE LETZEBURG_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL TELE LETZEBURG_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL TELEVISION_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL TELEVISION_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL4_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL4_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTL5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTL5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/RTM-MAROC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTP INT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/RTP INT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SAILING CHANNEL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SAT1 AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SAT1 AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SAT1 AUSTRIA_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SAT1 SCHWEIZ_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SAT1 SCHWEIZ_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SAT1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SAT1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SBS6_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SBS6_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SILVERLINE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SKY RADIO NL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SKY RADIO NL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SONNENKLAR TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SONNENKLAR TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SONNENKLAR TV_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SPIEGEL TV XXP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SPUTNIK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SPUTNIK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SPUTNIK_v2_l.glcd | Bin 0 -> 352 bytes graphlcd/logos/SPUTNIK_v2_m.glcd | Bin 0 -> 123 bytes graphlcd/logos/SR 1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SR 1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SR FERNSEHEN SW_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SR FERNSEHEN SW_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SR FERNSEHEN SW_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/STUDIO UNIVERSAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/STUDIO UNIVERSAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUEDWEST FS BW_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUEDWEST FS BW_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUEDWEST FS BW_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUEDWEST FS RP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUEDWEST FS RP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUEDWEST FS RP_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUNSHINE LIVE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUNSHINE LIVE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUNSHINE LIVE_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUPER RTL AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUPER RTL AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUPER RTL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SUPER RTL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SUPER RTL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SWR2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/SWR2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/SWR2_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/Sat1 SCHWEIZ_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TANGO TV_l.glcd | Bin 0 -> 352 bytes graphlcd/logos/TANGO TV_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TELE 5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TELE 5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TELE 5_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TMF_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TMF_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TRACE TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TRW AM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TRW AM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV 5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV BERLIN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV BERLIN_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV BERLIN_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV BERLIN_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV BERLIN_v3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV GALICIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV GUSTO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV TRAVEL SHOP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV TRAVEL SHOP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV TRAVEL SHOP_v2_m.glcd | Bin 0 -> 164 bytes graphlcd/logos/TV5 EUROPE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV5 EUROPE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV6_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TV6_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TV7_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TVC INT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TVC INT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TVE INT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TVE INT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TW1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/TW1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/TW1_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/V8_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/V8_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VERONICA RADIO_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VERONICA RADIO_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VH1 CLASSIC_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VH1 CLASSIC_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VH1_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VH1_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VIBRATION_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VIBRATION_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VIVA PLUS_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VIVA PLUS_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VIVA PLUS_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VIVA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VIVA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VOLTAGE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VOLTAGE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VOX AUSTRIA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VOX AUSTRIA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VOX_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/VOX_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/VOX_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WDR3_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WDR3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WDR5_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WDR5_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WDR_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WDR_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WDR_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WDR_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WDR_v3_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/WEIN TV_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WETTER FERNSEHEN_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WISHLINE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/WISHLINE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/X-ZONE_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/X-ZONE_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/XXL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/XXL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/XXP_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/XXP_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/XXP_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/YAM FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/YAM FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/YORIN FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/YORIN FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/YOU FM_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/YOU FM_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF DOKU-KIKA_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF DOKU-KIKA_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF DOKUKANAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF DOKUKANAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF DOKUKANAL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF DOKUKANAL_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF INFO-3SAT_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF INFO-3SAT_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF INFOKANAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF INFOKANAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF INFOKANAL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF INFOKANAL_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF THEATERKANAL_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF THEATERKANAL_v2_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF THEATERKANAL_v2_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF_THEATERKANAL_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZDF_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZDF_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/ZIK_l.glcd | Bin 0 -> 392 bytes graphlcd/logos/ZIK_m.glcd | Bin 0 -> 153 bytes graphlcd/logos/animated/REPLAY-CD_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/REPLAY-DVD_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/REPLAY-FILE_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/REPLAY-IMAGE_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/REPLAY-MUSIC_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/REPLAY-VDR_l.glcd | Bin 0 -> 12302 bytes graphlcd/logos/animated/REPLAY-VDR_m.glcd | Bin 0 -> 4654 bytes graphlcd/logos/animated/REPLAY-VDR_v2_l.glcd | Bin 0 -> 782 bytes graphlcd/logos/animated/SAT1_l.glcd | Bin 0 -> 1550 bytes i18n.c | 970 +++++++++++ i18n.h | 20 + layout.c | 166 ++ layout.h | 54 + logo.c | 35 + logo.h | 44 + logolist.c | 175 ++ logolist.h | 65 + menu.c | 104 ++ menu.h | 46 + plugin.c | 246 +++ setup.c | 93 ++ setup.h | 67 + state.c | 830 +++++++++ state.h | 134 ++ strfct.c | 91 + strfct.h | 40 + widgets.c | 95 ++ widgets.h | 61 + 765 files changed, 7270 insertions(+) create mode 100644 COPYING create mode 100644 HISTORY create mode 100644 Makefile create mode 100644 README create mode 100644 compat.h create mode 100644 display.c create mode 100644 display.h create mode 100644 global.h create mode 120000 graphlcd/fonts.conf create mode 100644 graphlcd/fonts.conf.large create mode 100644 graphlcd/fonts.conf.medium create mode 100644 graphlcd/fonts.conf.small create mode 100644 graphlcd/fonts.conf.tiny create mode 100644 graphlcd/fonts.conf.ttf create mode 100644 graphlcd/fonts/Vera.ttf create mode 100644 graphlcd/fonts/VeraBd.ttf create mode 100644 graphlcd/fonts/f12b.fnt create mode 100644 graphlcd/fonts/f12bn.fnt create mode 100644 graphlcd/fonts/f17b.fnt create mode 100644 graphlcd/fonts/f17bn.fnt create mode 100644 graphlcd/fonts/f5n.fnt create mode 100644 graphlcd/fonts/f8b.fnt create mode 100644 graphlcd/fonts/f8n.fnt create mode 100644 graphlcd/fonts/sym11.fnt create mode 100644 graphlcd/fonts/sym7.fnt create mode 100644 graphlcd/fonts/verdana-018.fnt create mode 100644 graphlcd/fonts/verdanab-009.fnt create mode 100644 graphlcd/fonts/verdanab-013.fnt create mode 120000 graphlcd/logonames.alias create mode 100644 graphlcd/logonames.alias.1.2 create mode 100644 graphlcd/logonames.alias.1.3 create mode 100644 graphlcd/logos/1-2-3 TV_l.glcd create mode 100644 graphlcd/logos/123SAT_l.glcd create mode 100644 graphlcd/logos/13TH STREET_l.glcd create mode 100644 graphlcd/logos/13TH STREET_m.glcd create mode 100644 graphlcd/logos/2M MAROC_m.glcd create mode 100644 graphlcd/logos/3NET_l.glcd create mode 100644 graphlcd/logos/3NET_m.glcd create mode 100644 graphlcd/logos/3SAT_l.glcd create mode 100644 graphlcd/logos/3SAT_m.glcd create mode 100644 graphlcd/logos/40 TV_m.glcd create mode 100644 graphlcd/logos/AB MOTEURS_l.glcd create mode 100644 graphlcd/logos/AB MOTEURS_m.glcd create mode 100644 graphlcd/logos/AB1_l.glcd create mode 100644 graphlcd/logos/AB1_m.glcd create mode 100644 graphlcd/logos/ACTION_m.glcd create mode 100644 graphlcd/logos/ADO FM_l.glcd create mode 100644 graphlcd/logos/ADO FM_m.glcd create mode 100644 graphlcd/logos/AL JAZEERA_l.glcd create mode 100644 graphlcd/logos/AL JAZEERA_m.glcd create mode 100644 graphlcd/logos/ALGERIE_l.glcd create mode 100644 graphlcd/logos/ALGERIE_m.glcd create mode 100644 graphlcd/logos/ALOUETTE_l.glcd create mode 100644 graphlcd/logos/ALOUETTE_m.glcd create mode 100644 graphlcd/logos/ANIMAL PLANET_l.glcd create mode 100644 graphlcd/logos/ANIMAL PLANET_m.glcd create mode 100644 graphlcd/logos/ANIMAUX_l.glcd create mode 100644 graphlcd/logos/ANTENNE BAYERN_l.glcd create mode 100644 graphlcd/logos/ANTENNE BAYERN_m.glcd create mode 100644 graphlcd/logos/ANTENNE BAYERN_v2_m.glcd create mode 100644 graphlcd/logos/ARTE_l.glcd create mode 100644 graphlcd/logos/ARTE_m.glcd create mode 100644 graphlcd/logos/ATVPLUS_l.glcd create mode 100644 graphlcd/logos/ATVPLUS_m.glcd create mode 100644 graphlcd/logos/AXN_l.glcd create mode 100644 graphlcd/logos/AXN_m.glcd create mode 100644 graphlcd/logos/B5 AKTUELL_l.glcd create mode 100644 graphlcd/logos/B5 AKTUELL_m.glcd create mode 100644 graphlcd/logos/B5 AKTUELL_v2_m.glcd create mode 100644 graphlcd/logos/BAHN TV_l.glcd create mode 100644 graphlcd/logos/BAHN TV_m.glcd create mode 100644 graphlcd/logos/BAHN TV_v2_m.glcd create mode 100644 graphlcd/logos/BAYERISCHES FERNSEHEN_l.glcd create mode 100644 graphlcd/logos/BAYERISCHES FERNSEHEN_m.glcd create mode 100644 graphlcd/logos/BAYERISCHES FERNSEHEN_v2_l.glcd create mode 100644 graphlcd/logos/BAYERISCHES FERNSEHEN_v2_m.glcd create mode 100644 graphlcd/logos/BAYERN1_l.glcd create mode 100644 graphlcd/logos/BAYERN1_m.glcd create mode 100644 graphlcd/logos/BAYERN4 KLASSIK_l.glcd create mode 100644 graphlcd/logos/BAYERN4 KLASSIK_m.glcd create mode 100644 graphlcd/logos/BBC PRIME_l.glcd create mode 100644 graphlcd/logos/BBC PRIME_m.glcd create mode 100644 graphlcd/logos/BBC WORLD_l.glcd create mode 100644 graphlcd/logos/BBC WORLD_m.glcd create mode 100644 graphlcd/logos/BBC WORLD_v2_l.glcd create mode 100644 graphlcd/logos/BBC WORLD_v2_m.glcd create mode 100644 graphlcd/logos/BEATE-UHSE.TV_l.glcd create mode 100644 graphlcd/logos/BEATE-UHSE.TV_m.glcd create mode 100644 graphlcd/logos/BEATE-UHSE.TV_v2_l.glcd create mode 100644 graphlcd/logos/BEUR TV_l.glcd create mode 100644 graphlcd/logos/BEUR TV_m.glcd create mode 100644 graphlcd/logos/BEUR TV_v2_m.glcd create mode 100644 graphlcd/logos/BIBEL TV_l.glcd create mode 100644 graphlcd/logos/BIBEL TV_m.glcd create mode 100644 graphlcd/logos/BIBEL TV_v2_m.glcd create mode 100644 graphlcd/logos/BLOOMBERG TV_l.glcd create mode 100644 graphlcd/logos/BLOOMBERG TV_m.glcd create mode 100644 graphlcd/logos/BR-ALPHA_l.glcd create mode 100644 graphlcd/logos/BR-ALPHA_m.glcd create mode 100644 graphlcd/logos/BR-ALPHA_v2_l.glcd create mode 100644 graphlcd/logos/BR-ALPHA_v2_m.glcd create mode 100644 graphlcd/logos/BR-ALPHA_v3_m.glcd create mode 100644 graphlcd/logos/BTV4_l.glcd create mode 100644 graphlcd/logos/BTV4_m.glcd create mode 100644 graphlcd/logos/BTV4_v2_l.glcd create mode 100644 graphlcd/logos/BTV_l.glcd create mode 100644 graphlcd/logos/BTV_m.glcd create mode 100644 graphlcd/logos/BVN_l.glcd create mode 100644 graphlcd/logos/BVN_m.glcd create mode 100644 graphlcd/logos/BVN_v2_m.glcd create mode 100644 graphlcd/logos/CADENA DIAL_l.glcd create mode 100644 graphlcd/logos/CADENA DIAL_m.glcd create mode 100644 graphlcd/logos/CANAL 24 HORAS_l.glcd create mode 100644 graphlcd/logos/CANAL 24 HORAS_m.glcd create mode 100644 graphlcd/logos/CANAL CANARIAS_l.glcd create mode 100644 graphlcd/logos/CANAL CANARIAS_m.glcd create mode 100644 graphlcd/logos/CANAL CANARIAS_v2_m.glcd create mode 100644 graphlcd/logos/CANAL CLUB_l.glcd create mode 100644 graphlcd/logos/CANAL CLUB_m.glcd create mode 100644 graphlcd/logos/CANAL CLUB_v2_m.glcd create mode 100644 graphlcd/logos/CANAL+ ...30_m.glcd create mode 100644 graphlcd/logos/CANAL+_m.glcd create mode 100644 graphlcd/logos/CARTOON NETWORK_l.glcd create mode 100644 graphlcd/logos/CARTOON NETWORK_m.glcd create mode 100644 graphlcd/logos/CFN RFC_l.glcd create mode 100644 graphlcd/logos/CFN RFC_m.glcd create mode 100644 graphlcd/logos/CHERIE FM_l.glcd create mode 100644 graphlcd/logos/CHERIE FM_m.glcd create mode 100644 graphlcd/logos/CHRONOS_l.glcd create mode 100644 graphlcd/logos/CHRONOS_m.glcd create mode 100644 graphlcd/logos/CINE BOX_m.glcd create mode 100644 graphlcd/logos/CLASSICA_l.glcd create mode 100644 graphlcd/logos/CLASSICA_m.glcd create mode 100644 graphlcd/logos/CLUB TELEACHAT_l.glcd create mode 100644 graphlcd/logos/CLUB TELEACHAT_m.glcd create mode 100644 graphlcd/logos/CLUB TELEACHAT_v2_m.glcd create mode 100644 graphlcd/logos/CNBC EUROPE_l.glcd create mode 100644 graphlcd/logos/CNBC EUROPE_m.glcd create mode 100644 graphlcd/logos/CNBC_l.glcd create mode 100644 graphlcd/logos/CNBC_m.glcd create mode 100644 graphlcd/logos/CNN INT_l.glcd create mode 100644 graphlcd/logos/CNN INT_m.glcd create mode 100644 graphlcd/logos/CNN+_m.glcd create mode 100644 graphlcd/logos/CONTACT FM_l.glcd create mode 100644 graphlcd/logos/CONTACT FM_m.glcd create mode 100644 graphlcd/logos/DAS ERSTE_l.glcd create mode 100644 graphlcd/logos/DAS ERSTE_m.glcd create mode 100644 graphlcd/logos/DAS ERSTE_v2_l.glcd create mode 100644 graphlcd/logos/DAS VIERTE_l.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDFUNK KOELN_l.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDFUNK KOELN_m.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDFUNK KOELN_v2_m.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDRADIO BERLIN_l.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDRADIO BERLIN_m.glcd create mode 100644 graphlcd/logos/DEUTSCHLANDRADIO BERLIN_v2_m.glcd create mode 100644 graphlcd/logos/DISCOVERY CHANNEL_l.glcd create mode 100644 graphlcd/logos/DISCOVERY CHANNEL_m.glcd create mode 100644 graphlcd/logos/DISCOVERY CHANNEL_v2_l.glcd create mode 100644 graphlcd/logos/DISNEY CHANNEL_l.glcd create mode 100644 graphlcd/logos/DISNEY CHANNEL_m.glcd create mode 100644 graphlcd/logos/DISNEY CHANNEL_v2_l.glcd create mode 100644 graphlcd/logos/DISNEY PLAYHOUSE_l.glcd create mode 100644 graphlcd/logos/DISNEY TOON +1_l.glcd create mode 100644 graphlcd/logos/DISNEY TOON_l.glcd create mode 100644 graphlcd/logos/DSF_l.glcd create mode 100644 graphlcd/logos/DSF_m.glcd create mode 100644 graphlcd/logos/DW-TV_l.glcd create mode 100644 graphlcd/logos/DW-TV_m.glcd create mode 100644 graphlcd/logos/E ENTERTAINMENT_l.glcd create mode 100644 graphlcd/logos/EINS EXTRA_l.glcd create mode 100644 graphlcd/logos/EINS EXTRA_m.glcd create mode 100644 graphlcd/logos/EINS EXTRA_v2_l.glcd create mode 100644 graphlcd/logos/EINS EXTRA_v3_l.glcd create mode 100644 graphlcd/logos/EINS FESTIVAL_l.glcd create mode 100644 graphlcd/logos/EINS FESTIVAL_m.glcd create mode 100644 graphlcd/logos/EINS FESTIVAL_v2_l.glcd create mode 100644 graphlcd/logos/EINS MUXX_l.glcd create mode 100644 graphlcd/logos/EINS MUXX_m.glcd create mode 100644 graphlcd/logos/EINS MUXX_v2_l.glcd create mode 100644 graphlcd/logos/ERF RADIO_l.glcd create mode 100644 graphlcd/logos/ERF RADIO_m.glcd create mode 100644 graphlcd/logos/ESC1-EGYPT_l.glcd create mode 100644 graphlcd/logos/ESPN CLASSIC SPORT_l.glcd create mode 100644 graphlcd/logos/ETB SAT_l.glcd create mode 100644 graphlcd/logos/ETB SAT_m.glcd create mode 100644 graphlcd/logos/EURONEWS_l.glcd create mode 100644 graphlcd/logos/EURONEWS_m.glcd create mode 100644 graphlcd/logos/EUROPE 2_l.glcd create mode 100644 graphlcd/logos/EUROPE 2_m.glcd create mode 100644 graphlcd/logos/EUROSPORT_l.glcd create mode 100644 graphlcd/logos/EUROSPORT_m.glcd create mode 100644 graphlcd/logos/EXTRA 1_l.glcd create mode 100644 graphlcd/logos/EXTREME SPORTS_l.glcd create mode 100644 graphlcd/logos/FAB_l.glcd create mode 100644 graphlcd/logos/FAB_m.glcd create mode 100644 graphlcd/logos/FAB_v2_m.glcd create mode 100644 graphlcd/logos/FASHION TV_l.glcd create mode 100644 graphlcd/logos/FASHION TV_m.glcd create mode 100644 graphlcd/logos/FASHION TV_v2_m.glcd create mode 100644 graphlcd/logos/FESTIVAL 1_l.glcd create mode 100644 graphlcd/logos/FESTIVAL_m.glcd create mode 100644 graphlcd/logos/FM4_l.glcd create mode 100644 graphlcd/logos/FM4_m.glcd create mode 100644 graphlcd/logos/FOX KIDS_l.glcd create mode 100644 graphlcd/logos/FOX KIDS_m.glcd create mode 100644 graphlcd/logos/FOX KIDS_v2_l.glcd create mode 100644 graphlcd/logos/FOX KIDS_v2_m.glcd create mode 100644 graphlcd/logos/FOX NEWS_m.glcd create mode 100644 graphlcd/logos/FOX_m.glcd create mode 100644 graphlcd/logos/FRANCE2_l.glcd create mode 100644 graphlcd/logos/FRANCE2_m.glcd create mode 100644 graphlcd/logos/FRANCE3_l.glcd create mode 100644 graphlcd/logos/FRANCE3_m.glcd create mode 100644 graphlcd/logos/FRANCE5_l.glcd create mode 100644 graphlcd/logos/FRANCE5_m.glcd create mode 100644 graphlcd/logos/FRANKEN SAT_l.glcd create mode 100644 graphlcd/logos/FRANKEN SAT_m.glcd create mode 100644 graphlcd/logos/FREE-X TV_l.glcd create mode 100644 graphlcd/logos/FREE-X TV_m.glcd create mode 100644 graphlcd/logos/FRITZ_l.glcd create mode 100644 graphlcd/logos/FRITZ_m.glcd create mode 100644 graphlcd/logos/GAMES TV_l.glcd create mode 100644 graphlcd/logos/GOLDSTAR TV_l.glcd create mode 100644 graphlcd/logos/GOLDSTAR TV_m.glcd create mode 100644 graphlcd/logos/GOLDSTAR TV_v2_l.glcd create mode 100644 graphlcd/logos/GOLDSTAR TV_v2_m.glcd create mode 100644 graphlcd/logos/GUTE LAUNE TV_l.glcd create mode 100644 graphlcd/logos/HALLMARK_l.glcd create mode 100644 graphlcd/logos/HARMONY FM_l.glcd create mode 100644 graphlcd/logos/HARMONY FM_m.glcd create mode 100644 graphlcd/logos/HARMONY FM_v2_m.glcd create mode 100644 graphlcd/logos/HEIMATKANAL_l.glcd create mode 100644 graphlcd/logos/HEIMATKANAL_m.glcd create mode 100644 graphlcd/logos/HEIMATKANAL_v2_l.glcd create mode 100644 graphlcd/logos/HESSEN FERNSEHEN_l.glcd create mode 100644 graphlcd/logos/HESSEN FERNSEHEN_m.glcd create mode 100644 graphlcd/logos/HESSEN FERNSEHEN_v2_l.glcd create mode 100644 graphlcd/logos/HISTOIRE_m.glcd create mode 100644 graphlcd/logos/HISTORY CHANNEL_l.glcd create mode 100644 graphlcd/logos/HIT CHANNEL 1025_l.glcd create mode 100644 graphlcd/logos/HIT CHANNEL 1025_m.glcd create mode 100644 graphlcd/logos/HITRADIO FFH_l.glcd create mode 100644 graphlcd/logos/HITRADIO FFH_m.glcd create mode 100644 graphlcd/logos/HOERZU DIGITAL_l.glcd create mode 100644 graphlcd/logos/HOERZU DIGITAL_m.glcd create mode 100644 graphlcd/logos/HOLLYWOOD CINEMA_l.glcd create mode 100644 graphlcd/logos/HOLLYWOOD CINEMA_m.glcd create mode 100644 graphlcd/logos/HR CHRONOS_l.glcd create mode 100644 graphlcd/logos/HR KLASSIK_l.glcd create mode 100644 graphlcd/logos/HR KLASSIK_m.glcd create mode 100644 graphlcd/logos/HR KLASSIK_v2_m.glcd create mode 100644 graphlcd/logos/HR SKYLINE_l.glcd create mode 100644 graphlcd/logos/HR SKYLINE_m.glcd create mode 100644 graphlcd/logos/HR SKYLINE_v2_m.glcd create mode 100644 graphlcd/logos/HR1_l.glcd create mode 100644 graphlcd/logos/HR1_m.glcd create mode 100644 graphlcd/logos/HR2_l.glcd create mode 100644 graphlcd/logos/HR2_m.glcd create mode 100644 graphlcd/logos/HSE24_l.glcd create mode 100644 graphlcd/logos/HSE24_m.glcd create mode 100644 graphlcd/logos/HSE24_v2_m.glcd create mode 100644 graphlcd/logos/HUNDERT6 RADIO_l.glcd create mode 100644 graphlcd/logos/HUNDERT6 RADIO_m.glcd create mode 100644 graphlcd/logos/JUMP_l.glcd create mode 100644 graphlcd/logos/JUMP_m.glcd create mode 100644 graphlcd/logos/JUNIOR_l.glcd create mode 100644 graphlcd/logos/JUNIOR_m.glcd create mode 100644 graphlcd/logos/JUNIOR_v2_l.glcd create mode 100644 graphlcd/logos/K TOON_l.glcd create mode 100644 graphlcd/logos/K TOON_m.glcd create mode 100644 graphlcd/logos/K TOON_v2_m.glcd create mode 100644 graphlcd/logos/K-TV_l.glcd create mode 100644 graphlcd/logos/K-TV_m.glcd create mode 100644 graphlcd/logos/K-TV_v2_m.glcd create mode 100644 graphlcd/logos/KABEL 1 AUSTRIA_l.glcd create mode 100644 graphlcd/logos/KABEL 1 AUSTRIA_m.glcd create mode 100644 graphlcd/logos/KABEL 1 SCHWEIZ_l.glcd create mode 100644 graphlcd/logos/KABEL 1 SCHWEIZ_m.glcd create mode 100644 graphlcd/logos/KABEL 1_l.glcd create mode 100644 graphlcd/logos/KABEL 1_m.glcd create mode 100644 graphlcd/logos/KIKA_l.glcd create mode 100644 graphlcd/logos/KIKA_m.glcd create mode 100644 graphlcd/logos/KINK FM_l.glcd create mode 100644 graphlcd/logos/KINK FM_m.glcd create mode 100644 graphlcd/logos/KINOWELT_l.glcd create mode 100644 graphlcd/logos/KRIMICO_l.glcd create mode 100644 graphlcd/logos/KRIMICO_m.glcd create mode 100644 graphlcd/logos/KTO_l.glcd create mode 100644 graphlcd/logos/KTO_m.glcd create mode 100644 graphlcd/logos/L1MBURG_l.glcd create mode 100644 graphlcd/logos/L1MBURG_m.glcd create mode 100644 graphlcd/logos/LASTMINUTE_l.glcd create mode 100644 graphlcd/logos/LASTMINUTE_m.glcd create mode 100644 graphlcd/logos/LASTMINUTE_v2_m.glcd create mode 100644 graphlcd/logos/LCI_m.glcd create mode 100644 graphlcd/logos/LCP_l.glcd create mode 100644 graphlcd/logos/LIBERTY TV_l.glcd create mode 100644 graphlcd/logos/LIBERTY TV_m.glcd create mode 100644 graphlcd/logos/LIBERTY TV_v2_m.glcd create mode 100644 graphlcd/logos/LIVE 1_m.glcd create mode 100644 graphlcd/logos/MATCH TV_m.glcd create mode 100644 graphlcd/logos/MAXIMA FM_l.glcd create mode 100644 graphlcd/logos/MAXIMA FM_m.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN SA_l.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN SA_m.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN S_l.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN S_m.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN TH_l.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN TH_m.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN_l.glcd create mode 100644 graphlcd/logos/MDR FERNSEHEN_m.glcd create mode 100644 graphlcd/logos/MDR FIGARO_l.glcd create mode 100644 graphlcd/logos/MDR FIGARO_m.glcd create mode 100644 graphlcd/logos/MDR FIGARO_v2_m.glcd create mode 100644 graphlcd/logos/MDR INFO_l.glcd create mode 100644 graphlcd/logos/MDR INFO_m.glcd create mode 100644 graphlcd/logos/MEDIA TROPICAL_l.glcd create mode 100644 graphlcd/logos/MEDIA TROPICAL_m.glcd create mode 100644 graphlcd/logos/MGM_l.glcd create mode 100644 graphlcd/logos/MGM_m.glcd create mode 100644 graphlcd/logos/MOTORS TV_l.glcd create mode 100644 graphlcd/logos/MOTORS TV_m.glcd create mode 100644 graphlcd/logos/MOTORS TV_v2_m.glcd create mode 100644 graphlcd/logos/MTV 2 POP CHANNEL_l.glcd create mode 100644 graphlcd/logos/MTV 2 POP CHANNEL_m.glcd create mode 100644 graphlcd/logos/MTV 2_l.glcd create mode 100644 graphlcd/logos/MTV BASE_l.glcd create mode 100644 graphlcd/logos/MTV BASE_m.glcd create mode 100644 graphlcd/logos/MTV CENTRAL_l.glcd create mode 100644 graphlcd/logos/MTV CENTRAL_m.glcd create mode 100644 graphlcd/logos/MTV CENTRAL_v2_m.glcd create mode 100644 graphlcd/logos/MTV DANCE_l.glcd create mode 100644 graphlcd/logos/MTV F_l.glcd create mode 100644 graphlcd/logos/MTV HITS_l.glcd create mode 100644 graphlcd/logos/MTV HITS_m.glcd create mode 100644 graphlcd/logos/MTV_l.glcd create mode 100644 graphlcd/logos/MULTIVISION_m.glcd create mode 100644 graphlcd/logos/N-TV_l.glcd create mode 100644 graphlcd/logos/N-TV_m.glcd create mode 100644 graphlcd/logos/N-TV_v2_m.glcd create mode 100644 graphlcd/logos/N24_l.glcd create mode 100644 graphlcd/logos/N24_m.glcd create mode 100644 graphlcd/logos/N24_v2_l.glcd create mode 100644 graphlcd/logos/NASN_l.glcd create mode 100644 graphlcd/logos/NATIONAL GEOGRAPHIC_l.glcd create mode 100644 graphlcd/logos/NBC_l.glcd create mode 100644 graphlcd/logos/NBC_m.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN HH_l.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN HH_m.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN MV_l.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN MV_m.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN NDS_l.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN NDS_m.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN SH_l.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN SH_m.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN_l.glcd create mode 100644 graphlcd/logos/NDR FERNSEHEN_m.glcd create mode 100644 graphlcd/logos/NDR INFO_l.glcd create mode 100644 graphlcd/logos/NDR INFO_m.glcd create mode 100644 graphlcd/logos/NDR KULTUR_l.glcd create mode 100644 graphlcd/logos/NDR KULTUR_m.glcd create mode 100644 graphlcd/logos/NED1_l.glcd create mode 100644 graphlcd/logos/NED1_m.glcd create mode 100644 graphlcd/logos/NED2_l.glcd create mode 100644 graphlcd/logos/NED2_m.glcd create mode 100644 graphlcd/logos/NED3_l.glcd create mode 100644 graphlcd/logos/NED3_m.glcd create mode 100644 graphlcd/logos/NET5_l.glcd create mode 100644 graphlcd/logos/NET5_m.glcd create mode 100644 graphlcd/logos/NEUN LIVE_l.glcd create mode 100644 graphlcd/logos/NEUN LIVE_m.glcd create mode 100644 graphlcd/logos/NEUN LIVE_v2_m.glcd create mode 100644 graphlcd/logos/NICKELODEON_l.glcd create mode 100644 graphlcd/logos/NICKELODEON_m.glcd create mode 100644 graphlcd/logos/NICK_l.glcd create mode 100644 graphlcd/logos/NORDWEST RADIO_l.glcd create mode 100644 graphlcd/logos/NORDWEST RADIO_m.glcd create mode 100644 graphlcd/logos/NORDWEST RADIO_v2_m.glcd create mode 100644 graphlcd/logos/NRJ_l.glcd create mode 100644 graphlcd/logos/NRJ_m.glcd create mode 100644 graphlcd/logos/OESTERREICH 1_l.glcd create mode 100644 graphlcd/logos/OESTERREICH 1_m.glcd create mode 100644 graphlcd/logos/OESTERREICH 3_l.glcd create mode 100644 graphlcd/logos/OESTERREICH 3_m.glcd create mode 100644 graphlcd/logos/ONTV_l.glcd create mode 100644 graphlcd/logos/ONTV_m.glcd create mode 100644 graphlcd/logos/ONTV_v2_m.glcd create mode 100644 graphlcd/logos/ONYX TV_l.glcd create mode 100644 graphlcd/logos/ONYX TV_m.glcd create mode 100644 graphlcd/logos/ORF 1_l.glcd create mode 100644 graphlcd/logos/ORF 1_m.glcd create mode 100644 graphlcd/logos/ORF 2 BURGENLAND_l.glcd create mode 100644 graphlcd/logos/ORF 2 BURGENLAND_m.glcd create mode 100644 graphlcd/logos/ORF 2 KAERNTEN_l.glcd create mode 100644 graphlcd/logos/ORF 2 KAERNTEN_m.glcd create mode 100644 graphlcd/logos/ORF 2 NIEDEROESTERREICH_l.glcd create mode 100644 graphlcd/logos/ORF 2 NIEDEROESTERREICH_m.glcd create mode 100644 graphlcd/logos/ORF 2 OBEROESTERREICH_l.glcd create mode 100644 graphlcd/logos/ORF 2 OBEROESTERREICH_m.glcd create mode 100644 graphlcd/logos/ORF 2 SALZBURG_l.glcd create mode 100644 graphlcd/logos/ORF 2 SALZBURG_m.glcd create mode 100644 graphlcd/logos/ORF 2 STEIERMARK_l.glcd create mode 100644 graphlcd/logos/ORF 2 STEIERMARK_m.glcd create mode 100644 graphlcd/logos/ORF 2 TIROL_l.glcd create mode 100644 graphlcd/logos/ORF 2 TIROL_m.glcd create mode 100644 graphlcd/logos/ORF 2 VORARLBERG_l.glcd create mode 100644 graphlcd/logos/ORF 2 VORARLBERG_m.glcd create mode 100644 graphlcd/logos/ORF 2 WIEN_l.glcd create mode 100644 graphlcd/logos/ORF 2 WIEN_m.glcd create mode 100644 graphlcd/logos/ORF 2_l.glcd create mode 100644 graphlcd/logos/ORF 2_m.glcd create mode 100644 graphlcd/logos/ORF2 RADIO_l.glcd create mode 100644 graphlcd/logos/ORF2 RADIO_m.glcd create mode 100644 graphlcd/logos/OTTO SHOP_l.glcd create mode 100644 graphlcd/logos/OTTO SHOP_m.glcd create mode 100644 graphlcd/logos/PHOENIX_l.glcd create mode 100644 graphlcd/logos/PHOENIX_m.glcd create mode 100644 graphlcd/logos/PHOENIX_v2_l.glcd create mode 100644 graphlcd/logos/PHOENIX_v2_m.glcd create mode 100644 graphlcd/logos/PLANET RADIO_l.glcd create mode 100644 graphlcd/logos/PLANET RADIO_m.glcd create mode 100644 graphlcd/logos/PLANET_l.glcd create mode 100644 graphlcd/logos/PLANET_m.glcd create mode 100644 graphlcd/logos/PLAYBOY TV_l.glcd create mode 100644 graphlcd/logos/PLAYBOY_m.glcd create mode 100644 graphlcd/logos/PLAYHOUSE DISNEY_m.glcd create mode 100644 graphlcd/logos/PLUS 1_l.glcd create mode 100644 graphlcd/logos/PREMIERE AUSTRIA_l.glcd create mode 100644 graphlcd/logos/PREMIERE AUSTRIA_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT PORTAL_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT PORTAL_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT1_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT1_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT1_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT2_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT2_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT2_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT3_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT3_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT3_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT4_l.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT4_m.glcd create mode 100644 graphlcd/logos/PREMIERE DIREKT4_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 1_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 1_m.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 1_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 2_m.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 2_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 3_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 3_m.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 3_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 4_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 4_m.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK 4_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK_l.glcd create mode 100644 graphlcd/logos/PREMIERE EROTIK_m.glcd create mode 100644 graphlcd/logos/PREMIERE KRIMI_l.glcd create mode 100644 graphlcd/logos/PREMIERE KRIMI_m.glcd create mode 100644 graphlcd/logos/PREMIERE NOSTALGIE_l.glcd create mode 100644 graphlcd/logos/PREMIERE NOSTALGIE_m.glcd create mode 100644 graphlcd/logos/PREMIERE NOSTALGIE_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE SERIE_l.glcd create mode 100644 graphlcd/logos/PREMIERE SERIE_m.glcd create mode 100644 graphlcd/logos/PREMIERE SERIE_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT1_l.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT1_m.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT1_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT2_l.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT2_m.glcd create mode 100644 graphlcd/logos/PREMIERE SPORT2_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE START_l.glcd create mode 100644 graphlcd/logos/PREMIERE START_m.glcd create mode 100644 graphlcd/logos/PREMIERE START_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE1_l.glcd create mode 100644 graphlcd/logos/PREMIERE1_m.glcd create mode 100644 graphlcd/logos/PREMIERE1_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE2_l.glcd create mode 100644 graphlcd/logos/PREMIERE2_m.glcd create mode 100644 graphlcd/logos/PREMIERE2_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE3_l.glcd create mode 100644 graphlcd/logos/PREMIERE3_m.glcd create mode 100644 graphlcd/logos/PREMIERE3_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE4_l.glcd create mode 100644 graphlcd/logos/PREMIERE4_m.glcd create mode 100644 graphlcd/logos/PREMIERE4_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE5_l.glcd create mode 100644 graphlcd/logos/PREMIERE5_m.glcd create mode 100644 graphlcd/logos/PREMIERE5_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE6_l.glcd create mode 100644 graphlcd/logos/PREMIERE6_m.glcd create mode 100644 graphlcd/logos/PREMIERE6_v2_l.glcd create mode 100644 graphlcd/logos/PREMIERE7_l.glcd create mode 100644 graphlcd/logos/PREMIERE7_m.glcd create mode 100644 graphlcd/logos/PREMIERE7_v2_l.glcd create mode 100644 graphlcd/logos/PRO SIEBEN AUSTRIA_l.glcd create mode 100644 graphlcd/logos/PRO SIEBEN AUSTRIA_m.glcd create mode 100644 graphlcd/logos/PRO SIEBEN SCHWEIZ_l.glcd create mode 100644 graphlcd/logos/PRO SIEBEN SCHWEIZ_m.glcd create mode 100644 graphlcd/logos/PRO SIEBEN_l.glcd create mode 100644 graphlcd/logos/PRO SIEBEN_m.glcd create mode 100644 graphlcd/logos/PRO SIEBEN_v2_l.glcd create mode 100644 graphlcd/logos/PULS_l.glcd create mode 100644 graphlcd/logos/PULS_m.glcd create mode 100644 graphlcd/logos/QVC GERMANY_l.glcd create mode 100644 graphlcd/logos/QVC GERMANY_m.glcd create mode 100644 graphlcd/logos/RADIO 10 GOLD_l.glcd create mode 100644 graphlcd/logos/RADIO 10 GOLD_m.glcd create mode 100644 graphlcd/logos/RADIO 538_l.glcd create mode 100644 graphlcd/logos/RADIO 538_m.glcd create mode 100644 graphlcd/logos/RADIO MARIA_l.glcd create mode 100644 graphlcd/logos/RADIO MARIA_m.glcd create mode 100644 graphlcd/logos/RADIO MARIA_v2_m.glcd create mode 100644 graphlcd/logos/RADIO MULTIKULTI_l.glcd create mode 100644 graphlcd/logos/RADIO MULTIKULTI_m.glcd create mode 100644 graphlcd/logos/RADIO MULTIKULTI_v2_m.glcd create mode 100644 graphlcd/logos/RADIOEINS_l.glcd create mode 100644 graphlcd/logos/RADIOEINS_m.glcd create mode 100644 graphlcd/logos/RAI 1_l.glcd create mode 100644 graphlcd/logos/RAI 1_m.glcd create mode 100644 graphlcd/logos/RAI 1_v2_m.glcd create mode 100644 graphlcd/logos/RAI 2_l.glcd create mode 100644 graphlcd/logos/RAI 2_m.glcd create mode 100644 graphlcd/logos/RAI 2_v2_m.glcd create mode 100644 graphlcd/logos/RAI 3_l.glcd create mode 100644 graphlcd/logos/RAI 3_m.glcd create mode 100644 graphlcd/logos/RAI 3_v2_m.glcd create mode 100644 graphlcd/logos/RAZE TV_l.glcd create mode 100644 graphlcd/logos/RAZE TV_m.glcd create mode 100644 graphlcd/logos/RAZE TV_v2_m.glcd create mode 100644 graphlcd/logos/RBB BERLIN_l.glcd create mode 100644 graphlcd/logos/RBB BERLIN_m.glcd create mode 100644 graphlcd/logos/RBB BRANDENBURG_l.glcd create mode 100644 graphlcd/logos/RBB BRANDENBURG_m.glcd create mode 100644 graphlcd/logos/REALMADRID_l.glcd create mode 100644 graphlcd/logos/REALMADRID_m.glcd create mode 100644 graphlcd/logos/REPLAY-CD-v2_l.glcd create mode 100644 graphlcd/logos/REPLAY-CD-v2_m.glcd create mode 100644 graphlcd/logos/REPLAY-CD_l.glcd create mode 100644 graphlcd/logos/REPLAY-CD_m.glcd create mode 100644 graphlcd/logos/REPLAY-DVD-v2_l.glcd create mode 100644 graphlcd/logos/REPLAY-DVD_l.glcd create mode 100644 graphlcd/logos/REPLAY-DVD_m.glcd create mode 100644 graphlcd/logos/REPLAY-FILE_l.glcd create mode 100644 graphlcd/logos/REPLAY-FILE_m.glcd create mode 100644 graphlcd/logos/REPLAY-IMAGE_l.glcd create mode 100644 graphlcd/logos/REPLAY-IMAGE_m.glcd create mode 100644 graphlcd/logos/REPLAY-MUSIC_l.glcd create mode 100644 graphlcd/logos/REPLAY-MUSIC_m.glcd create mode 100644 graphlcd/logos/REPLAY-VDR_l.glcd create mode 100644 graphlcd/logos/REPLAY-VDR_m.glcd create mode 100644 graphlcd/logos/RFM-TV_m.glcd create mode 100644 graphlcd/logos/RHEIN MAIN TV_l.glcd create mode 100644 graphlcd/logos/RHEIN MAIN TV_m.glcd create mode 100644 graphlcd/logos/RHEIN MAIN TV_v2_m.glcd create mode 100644 graphlcd/logos/RIRE ET CHANSONS_l.glcd create mode 100644 graphlcd/logos/RIRE ET CHANSONS_m.glcd create mode 100644 graphlcd/logos/ROCK ANTENNE_l.glcd create mode 100644 graphlcd/logos/ROCK ANTENNE_m.glcd create mode 100644 graphlcd/logos/ROCK ANTENNE_v2_m.glcd create mode 100644 graphlcd/logos/RSR COULEUR 3_l.glcd create mode 100644 graphlcd/logos/RSR COULEUR 3_m.glcd create mode 100644 graphlcd/logos/RTBF SAT_l.glcd create mode 100644 graphlcd/logos/RTBF SAT_m.glcd create mode 100644 graphlcd/logos/RTL 2 AUSTRIA_l.glcd create mode 100644 graphlcd/logos/RTL 2 AUSTRIA_m.glcd create mode 100644 graphlcd/logos/RTL 2_l.glcd create mode 100644 graphlcd/logos/RTL 2_m.glcd create mode 100644 graphlcd/logos/RTL AUSTRIA_l.glcd create mode 100644 graphlcd/logos/RTL AUSTRIA_m.glcd create mode 100644 graphlcd/logos/RTL AUSTRIA_v2_m.glcd create mode 100644 graphlcd/logos/RTL FM_l.glcd create mode 100644 graphlcd/logos/RTL FM_m.glcd create mode 100644 graphlcd/logos/RTL RADIO_l.glcd create mode 100644 graphlcd/logos/RTL RADIO_m.glcd create mode 100644 graphlcd/logos/RTL SHOP_l.glcd create mode 100644 graphlcd/logos/RTL SHOP_m.glcd create mode 100644 graphlcd/logos/RTL SHOP_v2_m.glcd create mode 100644 graphlcd/logos/RTL TELE LETZEBURG_l.glcd create mode 100644 graphlcd/logos/RTL TELE LETZEBURG_m.glcd create mode 100644 graphlcd/logos/RTL TELE LETZEBURG_v2_l.glcd create mode 100644 graphlcd/logos/RTL TELEVISION_l.glcd create mode 100644 graphlcd/logos/RTL TELEVISION_m.glcd create mode 100644 graphlcd/logos/RTL4_l.glcd create mode 100644 graphlcd/logos/RTL4_m.glcd create mode 100644 graphlcd/logos/RTL5_l.glcd create mode 100644 graphlcd/logos/RTL5_m.glcd create mode 100644 graphlcd/logos/RTM-MAROC_l.glcd create mode 100644 graphlcd/logos/RTP INT_l.glcd create mode 100644 graphlcd/logos/RTP INT_m.glcd create mode 100644 graphlcd/logos/SAILING CHANNEL_l.glcd create mode 100644 graphlcd/logos/SAT1 AUSTRIA_l.glcd create mode 100644 graphlcd/logos/SAT1 AUSTRIA_m.glcd create mode 100644 graphlcd/logos/SAT1 AUSTRIA_v2_m.glcd create mode 100644 graphlcd/logos/SAT1 SCHWEIZ_l.glcd create mode 100644 graphlcd/logos/SAT1 SCHWEIZ_m.glcd create mode 100644 graphlcd/logos/SAT1_l.glcd create mode 100644 graphlcd/logos/SAT1_m.glcd create mode 100644 graphlcd/logos/SBS6_l.glcd create mode 100644 graphlcd/logos/SBS6_m.glcd create mode 100644 graphlcd/logos/SILVERLINE_l.glcd create mode 100644 graphlcd/logos/SKY RADIO NL_l.glcd create mode 100644 graphlcd/logos/SKY RADIO NL_m.glcd create mode 100644 graphlcd/logos/SONNENKLAR TV_l.glcd create mode 100644 graphlcd/logos/SONNENKLAR TV_m.glcd create mode 100644 graphlcd/logos/SONNENKLAR TV_v2_m.glcd create mode 100644 graphlcd/logos/SPIEGEL TV XXP_l.glcd create mode 100644 graphlcd/logos/SPUTNIK_l.glcd create mode 100644 graphlcd/logos/SPUTNIK_m.glcd create mode 100644 graphlcd/logos/SPUTNIK_v2_l.glcd create mode 100644 graphlcd/logos/SPUTNIK_v2_m.glcd create mode 100644 graphlcd/logos/SR 1_l.glcd create mode 100644 graphlcd/logos/SR 1_m.glcd create mode 100644 graphlcd/logos/SR FERNSEHEN SW_l.glcd create mode 100644 graphlcd/logos/SR FERNSEHEN SW_m.glcd create mode 100644 graphlcd/logos/SR FERNSEHEN SW_v2_m.glcd create mode 100644 graphlcd/logos/STUDIO UNIVERSAL_l.glcd create mode 100644 graphlcd/logos/STUDIO UNIVERSAL_m.glcd create mode 100644 graphlcd/logos/SUEDWEST FS BW_l.glcd create mode 100644 graphlcd/logos/SUEDWEST FS BW_m.glcd create mode 100644 graphlcd/logos/SUEDWEST FS BW_v2_l.glcd create mode 100644 graphlcd/logos/SUEDWEST FS RP_l.glcd create mode 100644 graphlcd/logos/SUEDWEST FS RP_m.glcd create mode 100644 graphlcd/logos/SUEDWEST FS RP_v2_l.glcd create mode 100644 graphlcd/logos/SUNSHINE LIVE_l.glcd create mode 100644 graphlcd/logos/SUNSHINE LIVE_m.glcd create mode 100644 graphlcd/logos/SUNSHINE LIVE_v2_m.glcd create mode 100644 graphlcd/logos/SUPER RTL AUSTRIA_l.glcd create mode 100644 graphlcd/logos/SUPER RTL AUSTRIA_m.glcd create mode 100644 graphlcd/logos/SUPER RTL_l.glcd create mode 100644 graphlcd/logos/SUPER RTL_m.glcd create mode 100644 graphlcd/logos/SUPER RTL_v2_l.glcd create mode 100644 graphlcd/logos/SWR2_l.glcd create mode 100644 graphlcd/logos/SWR2_m.glcd create mode 100644 graphlcd/logos/SWR2_v2_m.glcd create mode 100644 graphlcd/logos/Sat1 SCHWEIZ_v2_m.glcd create mode 100644 graphlcd/logos/TANGO TV_l.glcd create mode 100644 graphlcd/logos/TANGO TV_m.glcd create mode 100644 graphlcd/logos/TELE 5_l.glcd create mode 100644 graphlcd/logos/TELE 5_m.glcd create mode 100644 graphlcd/logos/TELE 5_v2_m.glcd create mode 100644 graphlcd/logos/TMF_l.glcd create mode 100644 graphlcd/logos/TMF_m.glcd create mode 100644 graphlcd/logos/TRACE TV_l.glcd create mode 100644 graphlcd/logos/TRW AM_l.glcd create mode 100644 graphlcd/logos/TRW AM_m.glcd create mode 100644 graphlcd/logos/TV 5_l.glcd create mode 100644 graphlcd/logos/TV BERLIN_l.glcd create mode 100644 graphlcd/logos/TV BERLIN_m.glcd create mode 100644 graphlcd/logos/TV BERLIN_v2_l.glcd create mode 100644 graphlcd/logos/TV BERLIN_v2_m.glcd create mode 100644 graphlcd/logos/TV BERLIN_v3_m.glcd create mode 100644 graphlcd/logos/TV GALICIA_m.glcd create mode 100644 graphlcd/logos/TV GUSTO_l.glcd create mode 100644 graphlcd/logos/TV TRAVEL SHOP_l.glcd create mode 100644 graphlcd/logos/TV TRAVEL SHOP_m.glcd create mode 100644 graphlcd/logos/TV TRAVEL SHOP_v2_m.glcd create mode 100644 graphlcd/logos/TV5 EUROPE_l.glcd create mode 100644 graphlcd/logos/TV5 EUROPE_m.glcd create mode 100644 graphlcd/logos/TV6_l.glcd create mode 100644 graphlcd/logos/TV6_m.glcd create mode 100644 graphlcd/logos/TV7_l.glcd create mode 100644 graphlcd/logos/TVC INT_l.glcd create mode 100644 graphlcd/logos/TVC INT_m.glcd create mode 100644 graphlcd/logos/TVE INT_l.glcd create mode 100644 graphlcd/logos/TVE INT_m.glcd create mode 100644 graphlcd/logos/TW1_l.glcd create mode 100644 graphlcd/logos/TW1_m.glcd create mode 100644 graphlcd/logos/TW1_v2_m.glcd create mode 100644 graphlcd/logos/V8_l.glcd create mode 100644 graphlcd/logos/V8_m.glcd create mode 100644 graphlcd/logos/VERONICA RADIO_l.glcd create mode 100644 graphlcd/logos/VERONICA RADIO_m.glcd create mode 100644 graphlcd/logos/VH1 CLASSIC_l.glcd create mode 100644 graphlcd/logos/VH1 CLASSIC_m.glcd create mode 100644 graphlcd/logos/VH1_l.glcd create mode 100644 graphlcd/logos/VH1_m.glcd create mode 100644 graphlcd/logos/VIBRATION_l.glcd create mode 100644 graphlcd/logos/VIBRATION_m.glcd create mode 100644 graphlcd/logos/VIVA PLUS_l.glcd create mode 100644 graphlcd/logos/VIVA PLUS_m.glcd create mode 100644 graphlcd/logos/VIVA PLUS_v2_m.glcd create mode 100644 graphlcd/logos/VIVA_l.glcd create mode 100644 graphlcd/logos/VIVA_m.glcd create mode 100644 graphlcd/logos/VOLTAGE_l.glcd create mode 100644 graphlcd/logos/VOLTAGE_m.glcd create mode 100644 graphlcd/logos/VOX AUSTRIA_l.glcd create mode 100644 graphlcd/logos/VOX AUSTRIA_m.glcd create mode 100644 graphlcd/logos/VOX_l.glcd create mode 100644 graphlcd/logos/VOX_m.glcd create mode 100644 graphlcd/logos/VOX_v2_m.glcd create mode 100644 graphlcd/logos/WDR3_l.glcd create mode 100644 graphlcd/logos/WDR3_m.glcd create mode 100644 graphlcd/logos/WDR5_l.glcd create mode 100644 graphlcd/logos/WDR5_m.glcd create mode 100644 graphlcd/logos/WDR_l.glcd create mode 100644 graphlcd/logos/WDR_m.glcd create mode 100644 graphlcd/logos/WDR_v2_l.glcd create mode 100644 graphlcd/logos/WDR_v2_m.glcd create mode 100644 graphlcd/logos/WDR_v3_m.glcd create mode 100644 graphlcd/logos/WEIN TV_l.glcd create mode 100644 graphlcd/logos/WETTER FERNSEHEN_l.glcd create mode 100644 graphlcd/logos/WISHLINE_l.glcd create mode 100644 graphlcd/logos/WISHLINE_m.glcd create mode 100644 graphlcd/logos/X-ZONE_l.glcd create mode 100644 graphlcd/logos/X-ZONE_m.glcd create mode 100644 graphlcd/logos/XXL_l.glcd create mode 100644 graphlcd/logos/XXL_m.glcd create mode 100644 graphlcd/logos/XXP_l.glcd create mode 100644 graphlcd/logos/XXP_m.glcd create mode 100644 graphlcd/logos/XXP_v2_m.glcd create mode 100644 graphlcd/logos/YAM FM_l.glcd create mode 100644 graphlcd/logos/YAM FM_m.glcd create mode 100644 graphlcd/logos/YORIN FM_l.glcd create mode 100644 graphlcd/logos/YORIN FM_m.glcd create mode 100644 graphlcd/logos/YOU FM_l.glcd create mode 100644 graphlcd/logos/YOU FM_m.glcd create mode 100644 graphlcd/logos/ZDF DOKU-KIKA_l.glcd create mode 100644 graphlcd/logos/ZDF DOKU-KIKA_m.glcd create mode 100644 graphlcd/logos/ZDF DOKUKANAL_l.glcd create mode 100644 graphlcd/logos/ZDF DOKUKANAL_m.glcd create mode 100644 graphlcd/logos/ZDF DOKUKANAL_v2_l.glcd create mode 100644 graphlcd/logos/ZDF DOKUKANAL_v2_m.glcd create mode 100644 graphlcd/logos/ZDF INFO-3SAT_l.glcd create mode 100644 graphlcd/logos/ZDF INFO-3SAT_m.glcd create mode 100644 graphlcd/logos/ZDF INFOKANAL_l.glcd create mode 100644 graphlcd/logos/ZDF INFOKANAL_m.glcd create mode 100644 graphlcd/logos/ZDF INFOKANAL_v2_l.glcd create mode 100644 graphlcd/logos/ZDF INFOKANAL_v2_m.glcd create mode 100644 graphlcd/logos/ZDF THEATERKANAL_l.glcd create mode 100644 graphlcd/logos/ZDF THEATERKANAL_v2_l.glcd create mode 100644 graphlcd/logos/ZDF THEATERKANAL_v2_m.glcd create mode 100644 graphlcd/logos/ZDF_THEATERKANAL_m.glcd create mode 100644 graphlcd/logos/ZDF_l.glcd create mode 100644 graphlcd/logos/ZDF_m.glcd create mode 100644 graphlcd/logos/ZIK_l.glcd create mode 100644 graphlcd/logos/ZIK_m.glcd create mode 100644 graphlcd/logos/animated/REPLAY-CD_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-DVD_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-FILE_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-IMAGE_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-MUSIC_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-VDR_l.glcd create mode 100644 graphlcd/logos/animated/REPLAY-VDR_m.glcd create mode 100644 graphlcd/logos/animated/REPLAY-VDR_v2_l.glcd create mode 100644 graphlcd/logos/animated/SAT1_l.glcd create mode 100644 i18n.c create mode 100644 i18n.h create mode 100644 layout.c create mode 100644 layout.h create mode 100644 logo.c create mode 100644 logo.h create mode 100644 logolist.c create mode 100644 logolist.h create mode 100644 menu.c create mode 100644 menu.h create mode 100644 plugin.c create mode 100644 setup.c create mode 100644 setup.h create mode 100644 state.c create mode 100644 state.h create mode 100644 strfct.c create mode 100644 strfct.h create mode 100644 widgets.c create mode 100644 widgets.h diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..5d18622 --- /dev/null +++ b/COPYING @@ -0,0 +1,281 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/HISTORY b/HISTORY new file mode 100644 index 0000000..374a166 --- /dev/null +++ b/HISTORY @@ -0,0 +1,455 @@ +VDR Plugin 'graphlcd' Revision History +------------------------------------- + +2007-02-25: Version 0.1.5 +- added some missing includes +- do LCD initialisation in display thread instead of during plugin initialisation to fix some issues with direct port accesses (thanks to TomJoad from vdr-portal.de) + + +2007-02-04: Version 0.1.4 +- support APIVERSION introduced with vdr 1.3.47 +- test if ChannelNumber is 0 in cGraphLCDState::SetChannel +- Added french translations (thanks to Pierre Briec) +- use cPlugin::MainThreadHook method to do periodic querying of replay status. So, patching vdr is no longer needed. +- fixed volume handling for vdr 1.4.2 and up +- now use cFont::WrapText instead of local one +- got rid of global lcd and display objects, they are local variables of the plugin class now. +- display thread should be proper canceled now +- logonames.alias for VDR 1.3 and up is the default now +- increased lineheight in some bitmap fonts to look good with new WrapText function +- extra space between menu lines when lineheight is greater than totalheight +- replaced uint64 with uint64_t +- replaced unsigned long long with uint64_t + + +2006-01-15: Version 0.1.3 +- Don't replace newlines with spaces in text items any longer. +- Rewritten cGraphLCDDisplay::WrapText(). It is much faster now. +- Increased time to wait for display task to start (thanks to Andreas + Brachold). +- Explicitly set the current channel to prevent a crash if no channel logo was + set (thanks to Andreas Brachold). +- Added support for VDR version 1.3.38 and up (thanks to Andreas Brachold). +- Added logos for cable and terrestrial channels and modified some of the old + (thanks to Stefan Hußfeldt). + + +2005-09-17: Version 0.1.2 +- split off drivers to GraphLCD base package (libglcddrivers) +- split off graphics and font handling to GraphLCD base package + (libglcdgraphics) +- split off tools to GraphLCD base package +- adopted the plugin's code to use the new driver and graphics API +- removed low level driver settings from the plugin's setup page. They + are now located in the driver lirbrary's configuration file. +- display class: grouped current state values into some structures +- using a mutex for exclusive access on current state values +- moved current vdr state structures to new class cGraphLCDState based + on old cGraphLCDStatus class. +- completely rewritten logo list implementation +- further code revising +- added channel IDs for logonames.alias.1.3 for the DVB-T channels in Berlin + and probably other areas in Germany (thanks to Andreas Brachold) +- now compiles with gcc 2.95 and 3.x +- added missing #includes +- made the plugin more thread-safe by making the global state variable + a member of the display class and correcting the initialization order. +- added possibility to switch on backlight at user activity and switch it off + at user inactivity (thanks to Andreas Brachold). Can be enabled or disabled + in setup menu. +- added additional space between progress bar and logo on small LCDs (thanks + to Andreas Brachold). +- added loopmode display in mp3 replay mode (thanks to Wolfgang Fritz). +- replaced usleep with cCondWait::SleepMs() for vdr version 1.3.14 or greater +- adapted to changes in vdr 1.3.18 +- now using verdana fonts converted by genfont as default for large displays. +- moved plugin initialisation to cPluginGraphLCD::Initialize and added a wait + for the start of the display thread to cPluginGraphLCD::Start to don't miss + first channel switch (thanks to wofritz from vdrportal.de) +- added rumanian translations (thanks to Lucian Muresan) +- Added support for Freetype2 fonts based on the patch by Lucian Muresan. +-- the fonts used by the plugin are no longer specified through symbolic + links to the font files but in a config file named fonts.conf that is + located in the graphlcd config directory (where logonames.alias is) +-- the entries in the fonts.conf file are defined in a URL like way, a prefix + gives the type of the font and a absolute or relative path gives the + font file, plus the size in case of freetype2 +-- I provided several sample fonts.conf files as a replacement for the old + symbolic links +- Fixed length of timebar in case event lasts longer. +- Added a patch for VDR 1.3.29 and up that adds a new method Tick() to the + cStatus class. This method is called from vdr's main task every second. The + patch should apply to older versions too, maybe small changes are needed. +- Now querying the replay state in the cStatus::Tick() method if available. +- Now loading config file in cPluginGraphLCD::Initialize and not in + ProcessArgs. So it is possible to view the help page without specifying + config file and display. +- Rearranged includes to prevent an compiler error regardings the swap + function. +- Added a check for EIT scanner activity in cGraphLCDState::ChannelSwitch + function to prevent showing channel logos during replay. +- Added a check for file extension in replay type identification (thanks to + Andreas Brachold). +- Added channel logos for Radio Eins (thanks to Andreas Brachold). + + + +2004-09-26: Version 0.1.1 +- fixed vdr 1.2 service id compile error +- fixed t6963 driver: added range check in Set8Pixels, now all sizes should + work +- new driver: gu256x64-3900, should support other sizes too (thanks to + Ralf Müller) +- Added, replaced and removed some channel logos (thanks to Marco Birkholz) +- Now using a channels unique channel ID (without Source, VDR-1.3) or service + ID (VDR 1.2) instead of channel names to identify the channel logo. +-- During this I have renamed almost all channel logos so it is needed to + replace your old //plugins/graphlcd/ completely. +-- There are now two logonames.alias files, one for vdr 1.2 and the other one + for vdr 1.3, you maybe have to recreate the link, p. e. + "ln -sf logonames.alias.1.3 logonames.alias" if you have a vdr 1.3 version. +- added finnish translations (thanks to Rolf Ahrenberg) +- fixed sed1520 driver: removed a unnecessary ReverseBits (thanks to Andreas + 'randy' Weinberger) +- modified gu140x32f driver +-- added possibility to choose type of wiring in setup menu (thanks to + Andreas Brachold) +- modified sed1330_2 driver +-- added support for several different types of wiring the lcd to the parallel + port, this is selectable in setup menu +-- added support for 6800 and 8080 mode for all wirings, selectable in setup + menu +- removed sed1130 driver and replaced it with sed1330_2 +- updated serdisplib support (thanks to Wolfgang Astleitner) +-- look in README.serdisplib for details +- fixed 100 percent CPU usage during volume changes if volume display is + disabled (thanks to Christoph Haubrich, Andreas Brachold) +- fixed cGraphLCDDisplay::WrapText (thanks to Lars Altenhain) +- fixed "special" ownership of logonames.alias files (thanks to Django from + vdrportal.de) + + + +2004-05-22: Version 0.1.0 +- modified hd61830 driver: +-- fixed bug in partly update +-- modified write method +- replaced sed1330 driver with roland praml's original patch +- modified sed1330 driver: +-- renamed control line names to reflect the controller's + specification a bit more +-- modified WriteCmd and WriteData +- modified sed1330_2 driver (thanks to Heinz Gressenberger and Roland Praml) +-- renamed control line names to reflect the controller's + specification a bit more +-- modified WriteCmd and WriteData +-- added possibility to change oscillator frequency through setup menu +-- added experimental support for 8080 operation mode (undef MODE6800 in + sed1330_2.c to test it) +-- commented out sleep calls, probably not needed any longer (please test this) +- added framebuffer device driver (thanks to Stephan Skrodzki) +-- README tells you how to use it +- added serdisplib driver (thanks to Wolfgang Astleitner) +-- README.serdisplib tells you how to use it +- fixed a bug in serdisplib driver that caused some flickering + (thanks to Wolfgang Astleitner) +- new GU256x64-372 driver (thanks to Andreas 'randy' Weinberger) +- fixed an error in T6963 driver's partial refresh when using auto mode +- new image driver that writes an image sequence in pbm format to /tmp +- made round rectangle type 4 looking rounder (thanks to Andreas + 'randy' Weinberger) +- text item display (programme information) now also contains title + and subtitle +- added up/down scrolling to text item display +-- fixed a bug with long texts in text items (thanks to Andreas Brachold) +- fixed cGraphLCDSetup::CopyFrom: copy of ShowMenu was wrong +- fixed cGraphLCDSetup::CopyFrom: missing ModifiyReplayString +- simplified the display of the replay string +-- more than two lines are possible if they fit on screen +- modified uSleep and nSleep when using wait method 0: now tests if + value is greater than 0 before sleeping at least one microsecond +- added scroller widget, a single scrolling text line +-- extended Text, Char and CharProp of cGraphLCDLib to support this +-- using it for program information (present title and subtitle) +-- scroll speed (time interval and pixel increment) configurable in + setup menu +- fixed DisplayProgramm for small LCD's, no overlapping program + information texts with logo or symbols (thanks to Andreas Brachold) +- fixed german translation of month march (thanks to Andreas Brachold) +- added new, replaced some and deleted some old channel logos + (thanks to Hannes Stein for collecting, sorting and renaming the logos + from Holly, Hulk, Lola, C. Born, himself and providing a new + logonames.alias) +- added a lot of splash screens for 140x32, 128x64 and 240x128 LCD's + (thanks to Hannes Stein) +- included DisplayReplay Patch from Andreas Brachold +-- scrolling ReplayMessage +-- display of a replay-dependent logo (selectable in setup menu, replay + type identification has to be enabled for this) +-- improved display of time bar and indexes according to display size +-- just showing minutes and seconds for replays shorter than one hour +-- simplified DisplayProgramm +- further code revising and cleaning: +-- using STL string instead of char array strings for font and graphlib + functions +- some compilation fixes (thanks to Tobias Grimm) +- the Makefiles now have a proper install target (thanks to Tobias Grimm) +- fixed some memory leaks in logolist.c and some of the drivers + (thanks to Andreas Brachold) +- showpic: now does a clean exit after "kill" (thanks to Andreas Brachold) +- showpic: new command line parameter -t (timing) to select low level wait + method (thanks to Christian Gmeiner) +- fixed possible overlapping of replay string and progress bar with logo + (thanks to Andreas Brachold) +- support for animated logos (thanks to Andreas Brachold) +-- extended plugin, convpic and showpic to support this +-- convpic now can read and write animations in tuxbox-aniplay-format +-- included some new animated replay logos +- now using usleep() instead of low level sleep functions from drivers/fct.h + in display.c (this reduces cpu load when gettimeofday wait method is used) +- new setup parameter "Identify replay type" that makes replay logos possible + without forced modifying of the replay's text +- revised README a little bit + + + +2004-03-06: Version 0.0.9 +- reworked driver interface: + - all drivers in one library + - static and dynamic linking of drivers possible (look for STATIC_DRIVERS + in Makefile) + - moved low level parallel port code to the new class cParallelPort + - cleaned up driver's code + - adopted plugin and showpic to this new interface +- gu140x32f updates (thanks to Andreas Brachold) + - brightness control through setup works now + - timing setup works now +- fixed cGraphLCDSetup::CopyFrom (thanks to Andreas Brachold) +- removed memory leak in GraphLCDSetup (thanks to Andreas Brachold) +- now using driver ID instead of driver name for driver creation + (thanks to Andreas Brachold) +- setup menu: only show entries that are relevant for current driver + (thanks to Andreas Brachold) +- added replay string modification, selectable in setup menu + (thanks to Andreas Brachold) +- showpic: now clearing LCD buffer before displaying image, fixes error + when displaying image sequences (thanks to Andreas Brachold) +- showpic: no double GraphLCDSetup any longer, wait settings now used + (thanks to Andreas Brachold for reporting this one) +- fixed segfault when font is not correctly loaded (Thanks to Andreas + Brachold) +- code revising and cleaning (not completed): + - extracted setup menu code from graphlcd.c to menu.c/menu.h + - extracted status monitor code from graphlcd.c to status.c/.h + - extracted logo code from graphlib.c/.h to logo.c/.h and + logolist.c/.h and using list and vector containers from STL for + storing the data + - showpic and plugin now share the same logo source code + - general: using new/delete instead of malloc/free (not completely yet) + - using STL's vector and string for storing menu entries + - general: using STL string instead of char array strings + - sleep functions from fct.c/.h and other are now part of driver library + (no double files) + - string functions from fct.c/.h are now in strfct.c/.h +- added new wait method using gettimeofday for kernel 2.6 users (thanks to + Henning 'fawkes') +- new default wait method: nanosleep_rr (same as in 0.0.7) +- updated ks0108 and sed1520 driver (thanks to Andreas Weinberger) + - drawing errors fixed + - code cleanups, adopted to new coding style + - ks0108: support for displays greater than 128x64 +- removed double ReverseBits from ks0108, sed1330 and sed1520 drivers +- new alternative sed1330 driver, supports more sizes, choose with "sed1330_2" + (modified original driver, thanks by to Heinz Gressenberger) + - please test it, maybe we can join these two +- improved volume display (thanks to Andreas Weinberger) + - now disappears correctly after approx. one second + - if muted, a symbol will be shown in symbol area and volume bar + - slightly modified display, bar has variable height now +- added RoundRectangle Method to graphic library + - both colors are possible now + - adopted display code to use this new function +- new logos for medium displays (thanks to Hannsens) +- fixed displaying wrong channel, logo, programme when a recording on primary + device starts (thanks to burki for reporting this one) + + + +2004-02-25: Version 0.0.8 +- added support for parport device +- added support for VDR version 1.3 (tested with 1.3.4) +- added display of free devices, selectable in setup menu + (thanks to Thomas Keil) +- inverted and round color buttons +- driver reset after certain setup changes +- choose the size of logos in setup (no, auto, medium, large) +- new 'compressed' mode for symbols (show only enabled symbols) +- Volume controls +- use of iopl() instead ioperm() (allows ports > 0x3ff) +- delayed update of the display in menu +- removed useless 'Good-Bye picture'. + You have to call showpic in shutdown script instead. +- display name of recording without subdirectories +- new SED1520 driver (thanks to Andreas 'randy' Weinberger). +- alias list for program names (logonames.alias) +- new SED1330 driver (thanks to Roland Praml). +- increased performance by using Set8Pixels() instead of SetPixel() + in Char() and CharProp() +- increased speed in menus (you might apply an included patch against + vdr to improve the speed even more...) +- added a cache for logos to reduce harddisk operations. +- a value of 0 for Refresh disables the complete refresh of the LCD +- added a setup option to disable the output to the LCD completely +- fixed bug displaying long SVDRP Messages (that couldn't be splitted + to more lines of text, because they didn't have any spaces) +- fixed bug with Rec icon. If multiple recordings were active and + one recordings has stopped, the Rec icon has been cleared although + the others recordings were still active. (thanks to Steffen Schoewitz + for reporting and fixing it) +- select alternative wiring for T6963 (WIRING_WINDOWS) + with setup parameter (plugin) and commandline parameter (showpic) +- improved timing of T6963 driver (thanks to Good) +- further improved timing of T6963 driver +- T6963 status check selectable in setup menu +- added auto mode support for T6963, selectable in setup menu +- added font select 8x8 support for T6963, selectable in setup menu + (thanks to Andreas 'randy' Weinberger) +- changed way of T6963 control line setting (thanks to Andreas 'randy' + Weinberger) +- changed clipping method (thanks to Andreas Brachold) +- new Noritake GU140x32f driver (thanks to Andreas Brachold). +- new classification of LCD sizes: + tiny: 0..48 + small: 49..61 + medium: 62..127 + large: 128.. +- more logos (contributed by Carsten Born and Andreas Brachold) + +- plugin development and hosting is taken over by Andreas Regel + + + +2003-06-30: Version 0.0.7 +- the file format of the logos and the pictures have been replaced + with a new format: *.GLCD +- 'Good-Bye picture' +- added some tools: + convpic: a tool to convert *.BMP + *.TIFF images to *.GLCD format. + (TIFF: uncompressed, RGB-encoded, 2-color + BMP : uncompressed, RGB-encoded, 2-color, WindowsBMP format) + showpic: a tool to show an image on the LCD. + The image must be in *.GLCD format. (use convpic to convert) + crtfont: a tool to create fonts. + (see appropriate README files for more info) +- included 'sources' for logos and fonts +- fixed problem, if logo was bigger than LCD size. +- macros in one line +- added external triggered symbols +- setup parameters are explained in the README +- the usage of different fonts are explained in the README +- now Set8Pixels() is used in Char() and CharProp() + (increases performance) +- replaced strncpy with own fct strncopy. + + + +2003-06-05: Version 0.0.6 +- fixed segfault on exit of mp3 plugin. +- added a timebar to show the progress + of the current program. +- added color buttons +- possibility to disable Date/Time bar in menus +- don't switch back to replay screen when the menu is + active and the next mp3 is going to be played. +- update values of setup entries + (for this, a patch for vdr-1.2.0 is required. + Patch vdr with vdr-1.2.0-setup_menu_patch.diff in patches subdirectory. + Attention: this patch has NOT been tested with other plugins!) +- fixed cursor position when a setup item has been changed. +- better calculation of Tabs +- use symlinks for fonts. This allows to replace the fonts easily: + small displays ( vertical size < 64 ): + f_s_l.fnt : large font + f_s_n.fnt : normal font + f_s_s.fnt : small font + f_s_sym.fnt: symbols + medium displays ( vertical size 64..127 ): + f_m_l.fnt : large font + f_m_n.fnt : normal font + f_m_s.fnt : small font + f_m_sym.fnt: symbols + large displays ( vertical size >= 128 ): + f_l_l.fnt : large font + f_l_n.fnt : normal font + f_l_s.fnt : small font + f_l_sym.fnt: symbols +- alternative font for 128x64 (ln -s f8n_alt.fnt f_m_n.fnt) + + + +2003-05-23: Version 0.0.5 +- fixed display if second card does epg scan + (thanks to Andreas 'randy' Weinberger) +- fixed position of the symbols on small lcds + (thanks to Andreas 'randy' Weinberger) +- possibility to en-/disable display of menus per setup +- fixed problem in the T6963 driver when the LCDs horizontal size + was not a multiple of 6 + (thanks to Andreas 'powARman' Regel) +- alternative wiring for T6963 (used by some Windows programs) + If You have this wiring, You must compile with: + eg: GRAPHLCD_DRIVER=T6963 GRAPHLCD_WIRING=WINDOWS make plugins + (thanks to Andreas 'powARman' Regel) +- allow to enter the port in hex (eg: vdr -P"graphlcd -p 0x278" ) + (thanks to Sascha Volkenandt) +- creates graphlcd.man in .../PLUGINS/man directory +- small changes for vdr-1.1.32 +- show different Recording Symbols to show which card is recording + currently. +- added output of Messages +- added output of Summaries + + + +2003-05-08: Version 0.0.4 +- display of menus (requires vdr >= 1.1.30) +- 'round' edges + + + +2003-04-25: Version 0.0.3 +- new KS0108 driver (thanks to Andreas 'randy' Weinberger). + You have to specify the driver during compile: + eg: make plugins GRAPHLCD_DRIVER=KS0108 +- uses different fonts & logos for smaller displays +- changed layout for 128x64 displays +- changed format of font files (=> new crtfont-0.1.2) +- removed swab(). SwabByte() uses table instead of calculating + + + +2003-04-16: Version 0.0.2 +- new T6963 driver (thanks to Andreas 'powARman' Regel). + You have to specify the driver during compile: + eg: GRAPHLCD_DRIVER=T6963 make plugins +- support for smaller displays. +- now it's customizable in the setup menu, what parts should + be displayed. The currently available parts are: + - Date/Time bar + - Channel bar + - Logo + - Symbols + - Program information +- fonts with special characters like french accents. +- port + size of LCD are customizable. + (allocate LCD buffer dynamically) +- 2 lines for long titles (in Recording mode) +- Clear OSDProgramme, if no EPG data is available. +- refresh display, when title has changed. +- do not abort, if logo file could not be read successfully. + + + +2003-01-08: Version 0.0.1 + +- Initial revision. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..60bc621 --- /dev/null +++ b/Makefile @@ -0,0 +1,105 @@ +# +# Makefile for a Video Disk Recorder plugin +# +# $Id$ + +# The official name of this plugin. +# This name will be used in the '-P...' option of VDR to load the plugin. +# By default the main source file also carries this name. +# +PLUGIN = graphlcd + +### The version number of this plugin (taken from the main source file): + +VERSION = $(shell grep 'static const char \*VERSION *=' plugin.c | awk '{ print $$6 }' | sed -e 's/[";]//g') + +### The C++ compiler and options: + +CXX ?= g++ +CXXFLAGS ?= -g -Wall -Woverloaded-virtual + +### The directory environment: + +DVBDIR = ../../../../DVB +VDRDIR = ../../.. +LIBDIR = ../../lib +TMPDIR = /tmp + +export INSTALLPREFIX = /usr/local +export INSTALLDOCDIR = $(INSTALLPREFIX)/share/doc + +### Allow user defined options to overwrite defaults: + +-include $(VDRDIR)/Make.config + +### The version number of VDR (taken from VDR's "config.h"): + +VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g') +APIVERSION = $(shell grep 'define APIVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g') +ifeq ($(strip $(APIVERSION)),) + APIVERSION = $(VDRVERSION) +endif + + +### The name of the distribution archive: + +ARCHIVE = $(PLUGIN)-$(VERSION) +PACKAGE = vdr-$(ARCHIVE) + + +### Includes and Defines (add further entries here): + +INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include -I$(INSTALLPREFIX)/include + +DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' +DEFINES += -D_GNU_SOURCE + + +### The object files (add further files here): + +OBJS = display.o i18n.o layout.o logo.o logolist.o menu.o plugin.o setup.o state.o strfct.o widgets.o + + +### Implicit rules: + +%.o: %.c + $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $< + + +# Dependencies: + +MAKEDEP = g++ -MM -MG +DEPFILE = .dependencies +$(DEPFILE): Makefile + @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ + +-include $(DEPFILE) + + +### Targets: + +all: libvdr-$(PLUGIN).so +.PHONY: all + + +libvdr-$(PLUGIN).so: $(OBJS) + $(CXX) $(CXXFLAGS) -L$(INSTALLPREFIX)/lib -shared $(OBJS) -lglcddrivers -lglcdgraphics -lstdc++ -o $@ + @cp $@ $(LIBDIR)/$@.$(APIVERSION) + +dist: clean + @-rm -rf $(TMPDIR)/$(ARCHIVE) + @mkdir $(TMPDIR)/$(ARCHIVE) + @cp -a * $(TMPDIR)/$(ARCHIVE) + @tar czf $(PACKAGE).tgz --exclude .svn --exclude *.cbp --exclude *.layout -C $(TMPDIR) $(ARCHIVE) + @-rm -rf $(TMPDIR)/$(ARCHIVE) + @echo Distribution package created as $(PACKAGE).tgz + +clean: + @-rm -f *.o $(DEPFILE) *.so *.tgz core* *~ + +install: all + @install -d $(INSTALLDOCDIR)/$(PLUGIN) + @install -m 644 README $(INSTALLDOCDIR)/$(PLUGIN) + +uninstall: + @rm -rf $(INSTALLDOCDIR)/$(PLUGIN) diff --git a/README b/README new file mode 100644 index 0000000..94df948 --- /dev/null +++ b/README @@ -0,0 +1,231 @@ +This is a "plugin" for the Video Disk Recorder (VDR). + +Written by Carsten Siebholz (c.siebholz AT t-online.de> +From 0.0.8 on maintained by Andreas 'powARman' Regel (andreas.regel AT powarman.de) + +Project's homepage: http://graphlcd.berlios.de/ + before 0.0.8: http://c.siebholz.bei.t-online.de/ + +See the file COPYING for license information. + + +Description: +------------ +graphlcd is a plugin for the Video Disc Recorder and shows information +about the current state of VDR on displays supported by the GraphLCD +driver library. + + +Installation and Configuration: +------------------------------- +1. Install and configure the GraphLCD base package. + +2. Unpack the tarball to .../VDR/PLUGINS/src directory + +3. Compile the plugin + + make plugins (from VDR's source directory) + or + make all (from the plugin's source directory) + +4. Copy the 'graphlcd' subdirecory to /plugins/ + Afterwards, the structure should look like this: + + VDR config directory (eg: /video) + | + +- plugins + | | + | +- graphlcd (contains logonames.alias) + | | | + | | +-- fonts (contains *.fnt files) + | | | + . . +-- logos (contains *.glcd files) + . . + +5. If you are using VDR 1.3 or higher, you will have to recreate the + link to logonames.alias: + + ln -sf logonames.alias.13 logonames.alias + +6. Start VDR with the plugin. + You have to specify your the path and name of the driver library's + configuration file and the name of your display in the config file + on the command line. + Possible options are: + -c CONFIG, --config=CONFIG file name and path of the configuration file + -d DISPLAY, --display=DISPLAY name of the display + + -c: Sets the file path and name of the driver library's config file. + If this parameter is not given the default '/etc/graphlcd.conf' + will be used. + -d: Sets the name of the section in the config file that specifies + the display used for the plugin's output. If this parameter is + not given, the first section will be used. + + Examples: + vdr -P 'graphlcd -c /video/graphlcd.conf -d ks0108' + vdr -P 'graphlcd -c /etc/graphlcd.conf' + + +Channel Logos +------------- +To be able to see logos for the channels, you can create a *.glcd file +in the 'logos' directory. This file can be created with the convpic +tool from the GraphLCD base package. The size of the image must be +64x48 (for the *_l.glcd files) or 40x29 (for the *_m.glcd files). +Normally, the plugin looks for a file with the name +_.glcd, where is the ID of the channel +like used by VDR itself and is a character depending of the +size of the logo. (l for large size logos and m for medium size logos). +To keep an overview over the logos it instead would be better to name +them _.glcd and use the file logonames.alias for the +relation between channel ID and channel name. + +example: ZDF_l.glcd + + +Setup Parameters: +----------------- +Plugin active: + This is something like a 'main switch' for the plugin. If it's set to NO, + the output to the LCD will be suspended. + (Possible values: 'no', 'yes') + +Show Date/Time: + Enables/disables the date/time bar. + (Possible values: 'no', 'yes', 'not in menu') + +Show Channel: + Enables/disables the channel bar. + (Possible values: 'no', 'yes') + +Show Logo: + Enables/disables the channel logo. + (Possible values: 'no', 'auto', 'medium', 'large') + +Show Symbols: + Enables/disables the symbols for teletext, dolby digital, 2-channel audio, + encryption and recordings. + (Possible values: 'no', 'yes', 'compressed') + +Show ET Symbols: + Enables/disables external triggered symbols. + graphlcd is able to show some symbols, that can be switched on and off by + external progams (like vbox). Therefore it reads a file + (/tmp/graphlcd_symbols). The format of this file is very simple: It might + have one or more lines. Each line triggers one symbol. The format of each + line is [ASCII-Char][0|1]. + example: + V1 + X0 + This example enables the symbol 'V' and disables the symbol 'X'. To get an + idea, why the symbols are represented by those ASCII-Characters, look into + sym*.fon and sym*.bmp (in ./tools/crtfont/fonts/ directory): You will see, + that the symbols are nothing more than a special font and each symbol + stands for a character. + (Possible values: 'no', 'yes') + +Show Program: + Enables/disables the time, title and subtitle of the current program. + (Possible values: 'no', 'yes') + +Show Timebar: + Enables/disables the timebar (under the start and end time of the current + program). + (Possible values: 'no', 'yes') + +Show Menu: + Enables/disables the menu. + (Possible values: 'no', 'yes') + +Show Messages: + Enables/disables displaying messages. + (Possible values: 'no', 'yes') + +Show Color Buttons: + Enables/disables the 4 colered buttons. + (Possible values: 'no', 'yes') + +Show Volume: + Enables/disables the volume bar. + (Possible values: 'no', 'yes') + +Show free cards: + enables/disables the display of the free cards as empty rectangles with one + icon for each card. + (Possible values: 'no', 'yes') + +Identify replay type: + Based on the replay's name the plugins tries to identify the type of replay, + e.g. if it is a VDR, DVD or MP3 replay. + (Possible values: 'no', 'yes') + +Modify replay string: + Enables/disables replay string modification (Identify replay type has to + be enabled for this). Based on the replay type graphlcd tries to 'improve' + the replay name string, e.g. extracts and capitalizes DVD titles. + (Possible values: 'no', 'yes') + +Show Logo on Replay: + Enables/disables the replay-dependent logo (Identify replay type has to + be enabled for this). + (Possible values: 'no', 'auto', 'medium', 'large') + +Scroll text lines: + Enables/disables the scrolling of text lines if they don't fit on screen. + (used by program information and replay text) + (Possible values: 'never', 'once', 'always') + +Scroll speed: + Sets the scroll speed in pixels per update. + (Possible values: 1 <= x <= 10) + +Scroll time interval: + Sets the time between scroller updates in milliseconds. + (Possible values: 100 <= x <= 2000) + + +Changing Fonts: +--------------- +It's very easy to change the fonts that are used by graphlcd. +The plugin uses 4 fonts: +- a large font, that is used for + the title of the current program and for + the title of the recording (during replay). +- a normal font, that is used for + the date/time bar, + the channel bar, + the starttime, endtime and the subtitle of the current program, + the times in the replay screen, + the title and the items in the menus, + the popup-messages and for + the text items like the content of a recording. +- a small font, that is only used for the text of the 4 colored buttons. +- a symbol font, that contains the symbols. + +Because smaller displays should use smaller fonts, the displays will be +classified in 3 categories. Each category should have all 4 fonts. +The name of the font files depend on the category and on the font: + small displays ( vertical size < 64 ): + f_s_l.fnt : large font + f_s_n.fnt : normal font + f_s_s.fnt : small font + f_s_sym.fnt: symbols + medium displays ( vertical size 64..127 ): + f_m_l.fnt : large font + f_m_n.fnt : normal font + f_m_s.fnt : small font + f_m_sym.fnt: symbols + large displays ( vertical size >= 128 ): + f_l_l.fnt : large font + f_l_n.fnt : normal font + f_l_s.fnt : small font + f_l_sym.fnt: symbols + +To change the fonts you only have to change the related symbolic link to +another font file. +If you use another already existing font or if you want to create a new +one by yourself does not matter. If you want to create a new one or if +you want to modify an existing font, look into /tools/crtfont in the +GraphLCD base package and read the README. + diff --git a/compat.h b/compat.h new file mode 100644 index 0000000..4041ed4 --- /dev/null +++ b/compat.h @@ -0,0 +1,18 @@ +#ifndef _GRAPHLCD_COMPAT_H_ +#define _GRAPHLCD_COMPAT_H_ + + +#if VDRVERSNUM < 10318 +#define TimeMs time_ms +#else +#define TimeMs cTimeMs::Now +#endif + +#if VDRVERSNUM >= 10318 +#define Apid1() Apid(0) +#define Apid2() Apid(1) +#define Dpid1() Dpid(0) +#define Dpid2() Dpid(1) +#endif + +#endif diff --git a/display.c b/display.c new file mode 100644 index 0000000..f82d317 --- /dev/null +++ b/display.c @@ -0,0 +1,1953 @@ +/* + * GraphLCD plugin for the Video Disk Recorder + * + * display.c - display class + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + */ + +#include +#include +#include +#include + +#include + +#include +#include + +#include "display.h" +#include "global.h" +#include "i18n.h" +#include "setup.h" +#include "state.h" +#include "strfct.h" + +#include +#include + +#include "compat.h" + +#define MAXLINES_MSG 4 +#define MAXLINES_TEXT 16 +#define FILENAME_EXTERNAL_TRIGGERED_SYMBOLS "/tmp/graphlcd_symbols" + +// tiny: 0..48 +#define MINY_T 0 +#define MAXY_T 48 + +// small: 49..61 +#define MINY_S (MAXY_T+1) +#define MAXY_S 61 + +// medium: 62..127 +#define MINY_M (MAXY_S+1) +#define MAXY_M 127 + +// large: 128.. +#define MINY_L (MAXY_M+1) +#define MAXY_L 9999 + + + +int FRAME_SPACE_X; +int FRAME_SPACE_XB; +int FRAME_SPACE_Y; +int FRAME_SPACE_YB; +int TEXT_OFFSET_X; +int TEXT_OFFSET_Y_TIME; +int TEXT_OFFSET_Y_CHANNEL; +int TEXT_OFFSET_Y_TITLE; +int SYMBOL_SPACE; +int TIMEBAR_HEIGHT; + + + +cGraphLCDDisplay::cGraphLCDDisplay() +: cThread("glcd_display"), + update(false), + active(false), + mLcd(NULL), + bitmap(NULL), + GraphLCDState(NULL) +{ + cfgDir = ""; + fontDir = ""; + logoDir = ""; + + CurrTime = time(NULL); + LastTime = CurrTime-58; + CurrTimeval.tv_sec = 0; + CurrTimeval.tv_usec = 0; + timerclear(&UpdateAt); + LastTimeCheckSym = CurrTime; + + State = Normal; + LastState = Normal; + + menuTop = 0; + menuCount = 0; + tabCount = 0; + for (int i = 0; i < kMaxTabCount; i++) + tab[i] = 0; + tabMax[0] = 0; + tabMax[1] = 66; + tabMax[2] = 100; + tabMax[3] = 100; + tabMax[4] = 100; + tabMax[5] = 100; + tabMax[6] = 100; + tabMax[7] = 100; + tabMax[8] = 100; + tabMax[9] = 100; + + showVolume = false; + + logo = NULL; + logoList = NULL; + + strcpy (szETSymbols, ""); + + nCurrentBrightness = -1; + LastTimeBrightness = 0; + bBrightnessActive = true; +} + +cGraphLCDDisplay::~cGraphLCDDisplay() +{ + active = false; + Cancel(3); + + delete GraphLCDState; + delete bitmap; + delete logoList; +} + +int cGraphLCDDisplay::Init(GLCD::cDriver * Lcd, const char * CfgDir) +{ + if (!Lcd || !CfgDir) + return 2; + mLcd = Lcd; + cfgDir = CfgDir; + fontDir = cfgDir + "/fonts"; + logoDir = cfgDir + "/logos"; + + logoList = new cGraphLCDLogoList(logoDir.c_str(), cfgDir.c_str()); + if (!logoList) + { + esyslog("graphlcd plugin: ERROR out of memory\n"); + return 1; + } + + std::string fontListFile = cfgDir + "/fonts.conf"; + if (fontList.Load(fontListFile) == false) + { + esyslog("graphlcd plugin: ERROR: Could not load %s!\n", fontListFile.c_str()); + return 1; + } + + Start(); + return 0; +} + +void cGraphLCDDisplay::Tick(void) +{ + if (GraphLCDState) + GraphLCDState->Tick(); +} + +void cGraphLCDDisplay::Action(void) +{ + if (mLcd->Init() != 0) + { + esyslog("graphlcd plugin: ERROR: Failed initializing display\n"); + return; + } + + bitmap = new GLCD::cBitmap(mLcd->Width(), mLcd->Height()); + if (!bitmap) + { + esyslog("graphlcd plugin: ERROR creating drawing bitmap\n"); + return; + } + + largeFont = fontList.GetFont("Large Font"); + if (largeFont == NULL) + { + esyslog("graphlcd plugin: ERROR: No \"Large Font\" specified!\n"); + return; + } + normalFont = fontList.GetFont("Normal Font"); + if (normalFont == NULL) + { + esyslog("graphlcd plugin: ERROR: No \"Normal Font\" specified!\n"); + return; + } + smallFont = fontList.GetFont("Small Font"); + if (smallFont == NULL) + { + esyslog("graphlcd plugin: ERROR: No \"Small Font\" specified!\n"); + return; + } + symbols = fontList.GetFont("Symbol Font"); + if (symbols == NULL) + { + esyslog("graphlcd plugin: ERROR: No \"Symbol Font\" specified!\n"); + return; + } + + if (bitmap->Width() < 240) + { + FRAME_SPACE_X = 0; + FRAME_SPACE_XB = 1; + TEXT_OFFSET_X = 2; + } + else + { + FRAME_SPACE_X = 2; + FRAME_SPACE_XB = 2; + TEXT_OFFSET_X = 4; + } + + if (bitmap->Height() <= MAXY_T) + { + // very small display + FRAME_SPACE_Y = 0; + FRAME_SPACE_YB = 1; + TEXT_OFFSET_Y_TIME = 1; + TEXT_OFFSET_Y_CHANNEL = 1; + TEXT_OFFSET_Y_TITLE = 1; + SYMBOL_SPACE = 1; + TIMEBAR_HEIGHT = 3; + } + else if (bitmap->Height() <= MAXY_S) + { + // small display + FRAME_SPACE_Y = 0; + FRAME_SPACE_YB = 1; + TEXT_OFFSET_Y_TIME = 1; + TEXT_OFFSET_Y_CHANNEL = 3; + TEXT_OFFSET_Y_TITLE = 1; + SYMBOL_SPACE = 1; + TIMEBAR_HEIGHT = 3; + } + else if (bitmap->Height() <= MAXY_M) + { + // medium display + FRAME_SPACE_Y = 0; + FRAME_SPACE_YB = 1; + TEXT_OFFSET_Y_TIME = 1; + TEXT_OFFSET_Y_CHANNEL = 3; + TEXT_OFFSET_Y_TITLE = 3; + SYMBOL_SPACE = 1; + TIMEBAR_HEIGHT = 3; + } + else + { + // large display + FRAME_SPACE_Y = 2; + FRAME_SPACE_YB = 2; + TEXT_OFFSET_Y_TIME = 2; + TEXT_OFFSET_Y_CHANNEL = 5; + TEXT_OFFSET_Y_TITLE = 5; + SYMBOL_SPACE = 2; + TIMEBAR_HEIGHT = 5; + } + + GraphLCDState = new cGraphLCDState(this); + if (!GraphLCDState) + return; + + mLcd->Refresh(true); + active = true; + update = true; + while (active) + { + if (GraphLCDSetup.PluginActive) + { + CurrTime = time(NULL); + + if (timerisset(&UpdateAt)) + { + // timed Update enabled + if (gettimeofday(&CurrTimeval, NULL) == 0) + { + // get current time + if (CurrTimeval.tv_sec > UpdateAt.tv_sec) + { + timerclear(&UpdateAt); + update = true; + } + else if (CurrTimeval.tv_sec == UpdateAt.tv_sec && + CurrTimeval.tv_usec > UpdateAt.tv_usec) + { + timerclear(&UpdateAt); + update = true; + } + } + } + if (GraphLCDSetup.ShowVolume && !update && showVolume) + { + if (TimeMs() - GraphLCDState->GetVolumeState().lastChange > 2000) + { + update = true; + showVolume = false; + } + } + + SetBrightness(); + + switch (State) + { + case Normal: + // check and update external triggered symbols + if (GraphLCDSetup.ShowETSymbols) + { + if (CurrTime != LastTimeCheckSym) + { + update |= CheckAndUpdateSymbols(); + LastTimeCheckSym = CurrTime; + } + } + + { + std::vector::iterator it; + for (it = scroller.begin(); it != scroller.end(); it++) + { + if (it->NeedsUpdate()) + update = true; + } + } + + // update Display if animated Logo is present, and an update is necessary + if (!update && IsLogoActive() && logo->Count() > 1 && + (TimeMs() - logo->LastChange() >= logo->Delay())) + { + update = true; + } + + // update Display every minute or due to an update + if (CurrTime/60 != LastTime/60 || update) + { + timerclear(&UpdateAt); + update = false; + + bitmap->Clear(); + DisplayTime(); + DisplayLogo(); + DisplayChannel(); + DisplaySymbols(); + DisplayProgramme(); + DisplayVolume(); + DisplayMessage(); + mLcd->SetScreen(bitmap->Data(), bitmap->Width(), bitmap->Height(), bitmap->LineSize()); + mLcd->Refresh(false); + LastTime = CurrTime; + } + else + { +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + break; + + case Replay: + { + tReplayState replay = GraphLCDState->GetReplayState(); + if (replay.control) + { + { + update = false; + std::vector::iterator it; + for (it = scroller.begin(); it != scroller.end(); it++) + { + if (it->NeedsUpdate()) + update = true; + } + } + // update Display if animated Logo is present, and an update is necessary + if (!update && IsLogoActive() && logo->Count() > 1 && + TimeMs() - logo->LastChange() >= logo->Delay()) + { + update = true; + } + + // update Display every second or due to an update + if (CurrTime != LastTime || update) + { + // but only, if something has changed + if (replay.total / FRAMESPERSEC != replay.totalLast / FRAMESPERSEC || + replay.current / FRAMESPERSEC != replay.currentLast / FRAMESPERSEC || + CurrTime/60 != LastTime/60 || + update) + { + timerclear(&UpdateAt); + update = false; + bitmap->Clear(); + DisplayTime(); + DisplayLogo(); + DisplayReplay(replay); + //DisplaySymbols(); + DisplayVolume(); + DisplayMessage(); + mLcd->SetScreen(bitmap->Data(), bitmap->Width(), bitmap->Height(), bitmap->LineSize()); + mLcd->Refresh(false); + LastTime = CurrTime; + } + else + { +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + } + else + { +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + } + else + { + State = Normal; + Update(); + } + } + break; + + case Menu: + if (GraphLCDSetup.ShowMenu) + { + // update Display every minute or due to an update + if (CurrTime/60 != LastTime/60 || update) + { + timerclear(&UpdateAt); + update = false; + + bitmap->Clear(); + DisplayTime(); + DisplayMenu(); + DisplayTextItem(); + DisplayVolume(); + DisplayMessage(); + DisplayColorButtons(); + mLcd->SetScreen(bitmap->Data(), bitmap->Width(), bitmap->Height(), bitmap->LineSize()); + mLcd->Refresh(false); + LastTime = CurrTime; + } + else + { +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + } + else + { + //GraphLCDState.OsdClear(); + + State = LastState; + // activate delayed Update +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + break; + + default: + break; + } + } + else + { +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + } +} + +void cGraphLCDDisplay::SetChannel(int ChannelNumber) +{ + if (ChannelNumber == 0) + return; + + mutex.Lock(); + cChannel * ch = Channels.GetByNumber(ChannelNumber); + if (GraphLCDSetup.ShowLogo) + { + ePicType picType; + + switch (GraphLCDSetup.ShowLogo) + { + case 1: // auto + if (bitmap->Height() <= MAXY_M) + picType = ptLogoMedium; + else + picType = ptLogoLarge; + break; + case 2: // medium + picType = ptLogoMedium; + break; + case 3: // large + picType = ptLogoLarge; + break; + default: // should not happen at the moment !! + picType = ptLogoSmall; + break; + } +#if VDRVERSNUM >= 10300 + char strTmp[64]; + strcpy(strTmp, (const char *) ch->GetChannelID().ToString()); + char * strId = strstr(strTmp, "-") + 1; + logo = logoList->GetLogo(strId, picType); +#else + char strId[16]; + sprintf(strId, "%d", ch->Sid()); + logo = logoList->GetLogo(strId, picType); +#endif + if (logo) + logo->First(TimeMs()); + } + else + { + logo = NULL; + } + bBrightnessActive = true; + Update(); + mutex.Unlock(); +} + +void cGraphLCDDisplay::SetClear() +{ + mutex.Lock(); + + textItemLines.clear(); + textItemTop = 0; + tabCount = 0; + for (int i = 0; i < kMaxTabCount; i++) + tab[i] = 0; + + mutex.Unlock(); + + if (State == Menu) + { + State = LastState; + // activate delayed Update + UpdateIn(100000); + } + else + { + Update(); + } +} + +void cGraphLCDDisplay::SetOsdTitle() +{ + UpdateIn(0); // stop delayed Update + mutex.Lock(); + if (State != Menu) + { + menuTop = 0; + LastState = State; + State = Menu; + } + mutex.Unlock(); + // activate delayed Update + UpdateIn(100000); +} + +void cGraphLCDDisplay::SetOsdItem(const char * Text) +{ + int iAT, t; + std::string str; + std::string::size_type pos1, pos2; + + mutex.Lock(); + + UpdateIn(0); // stop delayed Update + str = Text; + pos1 = 0; + pos2 = str.find('\t'); + iAT = 0; + while (pos1 < str.length() && pos2 != std::string::npos) + { + iAT++; + t = std::min(normalFont->Width(str.substr(pos1), pos2 - pos1), (tabMax[iAT] * bitmap->Width()) / 100); + tab[iAT] = std::max(tab[iAT], t); + tabCount = std::max(tabCount, iAT); + pos1 = pos2 + 1; + pos2 = str.find('\t', pos1); + } + mutex.Unlock(); +} + +void cGraphLCDDisplay::SetOsdCurrentItem() +{ + UpdateIn(100000); //XXX +} + +void cGraphLCDDisplay::Replaying(bool starting, eReplayMode replayMode) +{ + if (starting) + { + if (State != Menu) + { + State = Replay; + } + else + { + LastState = Replay; + } + if (GraphLCDSetup.ReplayLogo) + { + ePicType picType; + + switch (GraphLCDSetup.ReplayLogo) + { + case 1: // auto + if (bitmap->Height() <= MAXY_M) + picType = ptLogoMedium; + else + picType = ptLogoLarge; + break; + case 2: // medium + picType = ptLogoMedium; + break; + case 3: // large + picType = ptLogoLarge; + break; + default: // should not happen at the moment !! + picType = ptLogoSmall; + break; + } + switch (replayMode) + { + default: + case eReplayNormal : + logo = logoList->GetLogo("REPLAY-VDR", picType);break; + case eReplayMusic : + logo = logoList->GetLogo("REPLAY-MUSIC", picType);break; + case eReplayDVD : + logo = logoList->GetLogo("REPLAY-DVD", picType);break; + case eReplayFile : + logo = logoList->GetLogo("REPLAY-FILE", picType);break; + case eReplayImage : + logo = logoList->GetLogo("REPLAY-IMAGE", picType);break; + case eReplayAudioCD: + logo = logoList->GetLogo("REPLAY-AUDIOCD", picType);break; + } + if (logo) + logo->First(TimeMs()); + } + else + { + logo = NULL; + } + } + else + { + if (State != Menu) + { + State = Normal; + } + else + { + LastState = Normal; + } + } + bBrightnessActive = true; + Update(); +} + +void cGraphLCDDisplay::SetOsdTextItem(const char * Text, bool Scroll) +{ + static const char * lastText = NULL; + tOsdState osd; + + osd = GraphLCDState->GetOsdState(); + mutex.Lock(); + if (Text) + { + if (osd.textItem.length() == 0) + lastText = NULL; + int maxTextLen = bitmap->Width() - 2 * FRAME_SPACE_X - 2 * TEXT_OFFSET_X; + normalFont->WrapText(maxTextLen, 0, osd.textItem, textItemLines); + textItemLines.push_back(""); + if (lastText != Text) + { + lastText = Text; + textItemTop = 0; + } + } + else + { + if (Scroll) + { + if (textItemTop > 0) + textItemTop--; + } + else + { + if (textItemTop < (int) textItemLines.size() - 2) + textItemTop++; + } + } + mutex.Unlock(); + UpdateIn(100000); +} + +void cGraphLCDDisplay::Update() +{ + update = true; +} + +void cGraphLCDDisplay::DisplayTime() +{ + static char buffer[32]; + static char month[5]; + int FrameWidth, TextLen, yPos; + struct tm tm_r; + + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + FrameWidth = std::max(bitmap->Width() - 2 * FRAME_SPACE_X, 1); + if (State == Normal || State == Replay) + { + if (IsLogoActive()) // Logo enabled & available + { + FrameWidth = std::max(FrameWidth - FRAME_SPACE_XB - logo->Width() - 2, (unsigned int) 1); + } + if (bitmap->Height() <= MAXY_M) + { + // tiny, small & medium display + if (IsSymbolsActive()) // Symbols enabled + { + FrameWidth = std::max(FrameWidth - FRAME_SPACE_XB - symbols->TotalWidth(), 1); + } + } + } + yPos = FRAME_SPACE_Y; + + // draw Rectangle + bitmap->DrawRoundRectangle(FRAME_SPACE_X, yPos, + FRAME_SPACE_X + FrameWidth - 1, + yPos + normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_TIME - 1, + GLCD::clrBlack, true, (TEXT_OFFSET_Y_TIME >= 2) ? 4 : 1); + + if (CurrTime == 0) + time(&CurrTime); + tm * tm = localtime_r(&CurrTime, &tm_r); + + strncpy(month, (char *)(tr("JanFebMarAprMayJunJulAugSepOctNovDec") + 3 * tm->tm_mon), 3); + month[3] = 0; + snprintf(buffer, sizeof(buffer), "%s %2d.%s %d:%02d", (const char *) WeekDayName(tm->tm_wday), tm->tm_mday, month, tm->tm_hour, tm->tm_min); + TextLen = normalFont->Width(buffer); + + if (TextLen > std::max(FrameWidth - 2 * TEXT_OFFSET_X, 1)) + { + snprintf(buffer, sizeof(buffer), "%d.%s %d:%02d", tm->tm_mday, month, tm->tm_hour, tm->tm_min); + TextLen = normalFont->Width(buffer); + } + + if (TextLen > std::max(FrameWidth - 2 * TEXT_OFFSET_X, 1)) + { + snprintf(buffer, sizeof(buffer), "%d.%d. %d:%02d", tm->tm_mday, tm->tm_mon+1, tm->tm_hour, tm->tm_min); + TextLen = normalFont->Width(buffer); + } + + if (TextLen > std::max(FrameWidth - 2 * TEXT_OFFSET_X, 1)) + { + snprintf(buffer, sizeof(buffer), "%d:%02d", tm->tm_hour, tm->tm_min); + TextLen = normalFont->Width(buffer); + } + + if (TextLen < std::max(FrameWidth - 2 * TEXT_OFFSET_X, 1)) + { + bitmap->DrawText(FRAME_SPACE_X + FrameWidth - TextLen - TEXT_OFFSET_X, + yPos + TEXT_OFFSET_Y_TIME, + FRAME_SPACE_X + FrameWidth - 1, + buffer, normalFont, GLCD::clrWhite); + } + else + { + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X, + yPos + TEXT_OFFSET_Y_TIME, + FRAME_SPACE_X + FrameWidth - 1, + buffer, normalFont, GLCD::clrWhite); + } + } +} + +void cGraphLCDDisplay::DisplayChannel() +{ + int FrameWidth, yPos; + tChannelState channel; + + channel = GraphLCDState->GetChannelState(); + if (GraphLCDSetup.ShowChannel) + { + FrameWidth = std::max(bitmap->Width() - 2 * FRAME_SPACE_X, 1); + if (State == Normal) + { + if (IsLogoActive()) // Logo enabled & available + { + FrameWidth = std::max(FrameWidth - FRAME_SPACE_XB - logo->Width() - 2, (unsigned int) 1); + } + if (bitmap->Height() <= MAXY_M) + { + // tiny, small & medium display + if (IsSymbolsActive()) // Symbols enabled + { + FrameWidth = std::max(FrameWidth - FRAME_SPACE_XB - symbols->TotalWidth(), 1); + } + } + } + + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + yPos = FRAME_SPACE_Y + normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + + if (bitmap->Height() >= MINY_L) + { + // align bottom border with logo + if (IsLogoActive()) // Logo enabled & available + { + yPos += std::max((unsigned int) 0, FRAME_SPACE_Y + logo->Height() + 2 - yPos - + (normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_CHANNEL)); + } + } + } + else + { + yPos = FRAME_SPACE_Y; + } + + // draw Rectangle + bitmap->DrawRoundRectangle(FRAME_SPACE_X, yPos, + FRAME_SPACE_X + FrameWidth - 1, + yPos + normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_CHANNEL - 1, + GLCD::clrBlack, true, (TEXT_OFFSET_Y_CHANNEL >= 4) ? 4 : 1); + + if (channel.strTmp.length() > 0) + { + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X, + yPos + TEXT_OFFSET_Y_CHANNEL, + FRAME_SPACE_X + FrameWidth - 1, + channel.strTmp, normalFont, GLCD::clrWhite); + } + else if (channel.str.length() > 0) + { + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X, + yPos + TEXT_OFFSET_Y_CHANNEL, + FRAME_SPACE_X + FrameWidth - 1, + channel.str, normalFont, GLCD::clrWhite); + } + } +} + +bool cGraphLCDDisplay::IsLogoActive() const +{ + if ((State==Normal && GraphLCDSetup.ShowLogo) || + (State==Replay && GraphLCDSetup.IdentifyReplayType && GraphLCDSetup.ReplayLogo)) + { + return logo != NULL; + } + return false; +} + +void cGraphLCDDisplay::DisplayLogo() +{ + int x; + int y; + + if (IsLogoActive()) + { + if (logo->Count() > 1) + { + uint64_t t = TimeMs(); + if (t - logo->LastChange() >= logo->Delay()) + { + if (!logo->Next(t)) + logo->First(t); + } + } + + x = std::max(bitmap->Width() - FRAME_SPACE_X - logo->Width() - 2, (unsigned int) 0); + y = FRAME_SPACE_Y; + + bitmap->DrawRoundRectangle(x, y, x + logo->Width() + 1, y + logo->Height() + 1, GLCD::clrBlack, false, 1); + bitmap->DrawBitmap(x + 1, y + 1, *logo->GetBitmap(), GLCD::clrBlack); + } +} + +bool cGraphLCDDisplay::IsSymbolsActive() const +{ + return GraphLCDSetup.ShowSymbols; +} + +void cGraphLCDDisplay::DisplaySymbols() +{ + int yPos = 0; + int xPos = 0; + int i; + tChannelState channel; + tVolumeState volume; + tCardState card[MAXDEVICES]; + + channel = GraphLCDState->GetChannelState(); + for (i = 0; i < MAXDEVICES; i++) + card[i] = GraphLCDState->GetCardState(i); + volume = GraphLCDState->GetVolumeState(); + + if (IsSymbolsActive()) + { + cChannel * ch = Channels.GetByNumber(channel.number); + if (ch) + { + if (bitmap->Height() <= MAXY_M) // medium display + { + yPos = FRAME_SPACE_Y; + xPos = bitmap->Width() - FRAME_SPACE_X - symbols->TotalWidth(); + + if (IsLogoActive()) + { + xPos -= FRAME_SPACE_XB + logo->Width() + 2; + } + + if (GraphLCDSetup.ShowSymbols == 1) // normal/fixed symbols + { + // new layout: + // displays rec symbols for every card and + // 2chan + dolby have their own symbols + // user triggered symbols + + int yPos2 = 0; + + // blank or 2chan or mute + if (volume.value == 0) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'M', symbols); + yPos += symbols->Height('S') + SYMBOL_SPACE; + } + else if (ch->Apid2()) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'A', symbols); + yPos += symbols->Height('A') + SYMBOL_SPACE; + } + else + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ' ', symbols); + yPos += symbols->Height(' ') + SYMBOL_SPACE; + } + + // blank or dolby + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Dpid1() ? 'D' : ' ', symbols); + yPos += symbols->Height(ch->Dpid1() ? 'D' : ' ') + SYMBOL_SPACE; + + // blank or teletext + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Tpid() ? 'T' : ' ', symbols); + yPos += symbols->Height(ch->Tpid() ? 'T' : ' ') + SYMBOL_SPACE; + + // blank or crypt + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Ca() ? 'C' : ' ', symbols); + yPos += symbols->Height(ch->Tpid() ? 'C' : ' ') + SYMBOL_SPACE; + + // show REC symbols at the right border below the logo + yPos2 = yPos; + yPos = FRAME_SPACE_Y; + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + yPos += normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + } + if (GraphLCDSetup.ShowChannel) + { + yPos += normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_CHANNEL + FRAME_SPACE_YB; + } + if (IsLogoActive()) + { + yPos = std::max((unsigned int) yPos, FRAME_SPACE_Y + logo->Height() + 2 + FRAME_SPACE_YB); + } + + yPos = std::max(yPos, yPos2); + xPos = bitmap->Width() - FRAME_SPACE_X + SYMBOL_SPACE; + for (i = LCDMAXCARDS - 1; i >= 0; i--) + { + if (card[i].recordingCount > 0) + { + xPos -= symbols->Width(49 + i) + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 49 + i, symbols); + } + } + + // show external triggered symbols + if (GraphLCDSetup.ShowETSymbols && strlen(szETSymbols) > 0) + { + for (i = strlen(szETSymbols) - 1; i >= 0; i--) + { + xPos -= symbols->Width(szETSymbols[i]) + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, szETSymbols[i], symbols); + } + } + } + else // compressed symbols + { + // old layout: + // displays only 1 rec symbol and + // a combined 2chan + dolby symbol + + // blank or teletext + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Tpid() ? 'T' : ' ', symbols); + yPos += symbols->Height(ch->Tpid() ? 'T' : ' ') + SYMBOL_SPACE; + + // blank or crypt + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Ca() ? 'C' : ' ', symbols); + yPos += symbols->Height(ch->Tpid() ? 'C' : ' ') + SYMBOL_SPACE; + + // blank, 2chan, dolby or combined symbol + if (volume.value == 0) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'M', symbols); + yPos += symbols->Height('S') + SYMBOL_SPACE; + } + else if (ch->Apid2() && ch->Dpid1()) + { + // if Apid2 and Dpid1 are set then use combined symbol + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'B', symbols); + yPos += symbols->Height('B') + SYMBOL_SPACE; + } + else if (ch->Apid2()) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'A', symbols); + yPos += symbols->Height('A') + SYMBOL_SPACE; + } + else if (ch->Dpid1()) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'D', symbols); + yPos += symbols->Height('D') + SYMBOL_SPACE; + } + else + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ' ', symbols); + yPos += symbols->Height(' ') + SYMBOL_SPACE; + } + + // blank or rec + if (cRecordControls::Active()) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, '1', symbols); + } + else + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ' ', symbols); + } + } + } + else // large display + { + yPos = FRAME_SPACE_Y; + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + yPos += normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + } + if (GraphLCDSetup.ShowChannel) + { + yPos += normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_CHANNEL + FRAME_SPACE_YB; + } + if (IsLogoActive()) + { + yPos = std::max((unsigned int) yPos, FRAME_SPACE_Y + logo->Height() + 2 + FRAME_SPACE_YB); + } + + xPos = bitmap->Width() - FRAME_SPACE_X - symbols->Width(' '); + + if (GraphLCDSetup.ShowSymbols == 1) // normal/fixed symbols + { + // blank or teletext + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Tpid() ? 'T' : ' ', symbols); + xPos -= symbols->Width(ch->Tpid() ? 'T' : ' ') + SYMBOL_SPACE; + + // blank or dolby + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Dpid1() ? 'D' : ' ', symbols); + xPos -= symbols->Width(ch->Dpid1() ? 'D' : ' ') + SYMBOL_SPACE; + + if (bitmap->Height() > MAXY_M) // with 128 pixel width only 3 symbols... + { + // blank or crypt + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ch->Ca()? 'C' : ' ', symbols); + xPos -= symbols->Width(ch->Ca() ? 'C' : ' ') + SYMBOL_SPACE; + } + + // blank or 2chan or mute + if (volume.value == 0) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'M', symbols); + xPos -= symbols->Width('S') + SYMBOL_SPACE; + } + else if (ch->Apid2()) + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'A', symbols); + xPos -= symbols->Width('A') + SYMBOL_SPACE; + } + else + { + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ' ', symbols); + xPos -= symbols->Width(' ') + SYMBOL_SPACE; + } + } + else // compressed symbols + { + // crypt + if (ch->Ca()) + { + xPos -= symbols->Width('C') + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'C', symbols); + } + + // teletext + if (ch->Tpid()) + { + xPos -= symbols->Width('T') + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'T', symbols); + } + + // dolby + if (ch->Dpid1()) + { + xPos -= symbols->Width('D') + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'D', symbols); + } + + // 2chan + if (ch->Apid2()) + { + xPos -= symbols->Width('A') + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'A', symbols); + } + + // mute + if (volume.value == 0) + { + xPos -= symbols->Width('S') + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 'M', symbols); + } + } + + // show REC symbols at the right border of the 'next line' + xPos = bitmap->Width() - FRAME_SPACE_X + SYMBOL_SPACE; + yPos += symbols->TotalHeight() + FRAME_SPACE_YB; + for (i = cDevice::NumDevices() - 1; i >= 0; i--) + { + // Just display present devices + xPos -= symbols->Width(49 + i) + SYMBOL_SPACE; + if (card[i].recordingCount > 0) + { + // Show a recording Symbol + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, 49 + i, symbols); + } + else + { + if (GraphLCDSetup.ShowNotRecording == 1) + { + // Do we want an empty frame around not recording card's icons? + // Show an empty frame instead of the recording symbol + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, ' ', symbols); + } + } + } + + // show external triggered symbols + if (GraphLCDSetup.ShowETSymbols && strlen(szETSymbols) > 0) + { + for (i = strlen(szETSymbols) - 1; i >= 0; i--) + { + xPos -= symbols->Width(szETSymbols[i]) + SYMBOL_SPACE; + bitmap->DrawCharacter(xPos, yPos, bitmap->Width() - 1, szETSymbols[i], symbols); + } + } + } + } + } +} + +void cGraphLCDDisplay::DisplayProgramme() +{ + struct tm tm_r; + char buffer[25]; + std::string str; + bool showTimeBar = false; + int timeBarWidth = 0; + int timeBarValue = 0; + tEventState event; + + event = GraphLCDState->GetEventState(); + if (GraphLCDSetup.ShowProgram) + { + strftime(buffer, sizeof(buffer), "%R", localtime_r(&event.presentTime, &tm_r)); + if (event.followingTime && event.followingTime != event.presentTime) + { + str = buffer; + if ((bitmap->Width() >= MINY_L || !IsSymbolsActive())) + { + str += " - "; + } + else + { + str += "-"; + } + strftime(buffer, sizeof(buffer), "%R", localtime_r(&event.followingTime, &tm_r)); + str += buffer; + showTimeBar = true; + timeBarWidth = normalFont->Width(str) - 1; + timeBarValue = (time(NULL) - event.presentTime) * timeBarWidth / (event.followingTime - event.presentTime); + if (timeBarValue > timeBarWidth) + timeBarValue = timeBarWidth; + if (timeBarValue < 0) + timeBarValue = 0; + } + else + { + str = buffer; + } + + if (!event.presentTime) + { + std::vector::iterator it; + for (it = scroller.begin(); it != scroller.end(); it++) + { + it->Reset(); + } + } + + if (event.presentTime) + { + if (scroller.size() < 1 || + event.presentTitle != scroller[0].Text() || + (scroller.size() > 1 && event.presentSubtitle != scroller[1].Text())) + { + if (bitmap->Height() <= MAXY_S) + { + scroller.resize(1); + + int nTopY = bitmap->Height() - (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight(); + int nMaxX = std::max(1, bitmap->Width() - 1 - (2 * FRAME_SPACE_X)); + // Logo enabled & available, and text with Logo is overlapped + if (IsLogoActive() && nTopY < (int) logo->Height()) + { + nMaxX -= FRAME_SPACE_XB; + nMaxX -= logo->Width(); + nMaxX = std::max(nMaxX-2,1);//Frame around Logo + } + // If symbols used, and text with symbols is overlapped + if (IsSymbolsActive()) + { + nMaxX -= FRAME_SPACE_XB; + nMaxX -= symbols->TotalWidth(); + nMaxX = std::max(nMaxX,1); + } + + scroller[0].Init(FRAME_SPACE_X + TEXT_OFFSET_X, + nTopY, + nMaxX, + largeFont, event.presentTitle); + } + else + { + scroller.resize(2); + + scroller[0].Init(FRAME_SPACE_X + TEXT_OFFSET_X, + bitmap->Height() - 2 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight(), + bitmap->Width() - 1, + largeFont, event.presentTitle); + scroller[1].Init(FRAME_SPACE_X + TEXT_OFFSET_X, + bitmap->Height() - (TEXT_OFFSET_Y_TITLE-1) - normalFont->TotalHeight(), + bitmap->Width() - 1, + normalFont, event.presentSubtitle); + } + } + if (bitmap->Height() <= MAXY_S) + { + // tiny and small LCDs + bitmap->DrawText(FRAME_SPACE_X, + bitmap->Height() - 2 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight(), + bitmap->Width() - 1, + str, normalFont); + } + else + { + // medium and large LCDs + bitmap->DrawText(FRAME_SPACE_X, + bitmap->Height() - 3 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - 2 * normalFont->TotalHeight() - (showTimeBar && GraphLCDSetup.ShowTimebar ? TIMEBAR_HEIGHT + 1 : 0), + bitmap->Width() - 1, + str, normalFont); + if (showTimeBar && GraphLCDSetup.ShowTimebar) + { + bitmap->DrawRectangle(FRAME_SPACE_X, + bitmap->Height() - 3 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight() - TIMEBAR_HEIGHT - 1, + FRAME_SPACE_X + timeBarWidth, + bitmap->Height() - 3 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight() - 2, + GLCD::clrBlack, false); + bitmap->DrawRectangle(FRAME_SPACE_X, + bitmap->Height() - 3 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight() - TIMEBAR_HEIGHT - 1, + FRAME_SPACE_X + timeBarValue, + bitmap->Height() - 3 * (TEXT_OFFSET_Y_TITLE - 1) - largeFont->TotalHeight() - normalFont->TotalHeight() - 2, + GLCD::clrBlack, true); + } + } + // Draw Programmtext + { + std::vector::iterator it; + for (it = scroller.begin(); it != scroller.end(); it++) + { + it->Draw(bitmap); + } + } + } + } +} + +bool cGraphLCDDisplay::IndexIsGreaterAsOneHour(int Index) const +{ + int h = (Index / FRAMESPERSEC) / 3600; + return h > 0; +} + +const char * cGraphLCDDisplay::IndexToMS(int Index) const +{ + static char buffer[16]; + int s = (Index / FRAMESPERSEC); + int m = s / 60; + s %= 60; + snprintf(buffer, sizeof(buffer), "%02d:%02d", m, s); + return buffer; +} + +bool cGraphLCDDisplay::IsScrollerTextChanged(const std::vector & scrollers, const std::vector & lines) const +{ + if (lines.size() == 0) + return true; //Different size found + if (scrollers.size() == 0) + return true; //Different size found + + std::vector::const_iterator i = scrollers.begin(); + std::vector::const_iterator e = scrollers.end(); + std::vector::const_iterator li = lines.begin(); + std::vector::const_iterator le = lines.end(); + + for (; e != i && le != li; ++li,++i) + { + if (i->Text() != (*li)) + return true; //Different text found + } + return false; //Text seem equal +} + +void cGraphLCDDisplay::DisplayReplay(tReplayState & replay) +{ + int nMaxX, nProgressbarHeight, nTopY; + int nWidthPreMsg = 0, nWidthCurrent = 0, nWidthTotal = 0,nWidthOffset = 0; + std::string szPreMsg,szCurrent,szTotal; + + if (bitmap->Height() >= MINY_L) + nProgressbarHeight = 15; + else if (bitmap->Height() >= MINY_M) + nProgressbarHeight = 9; + else if (bitmap->Height() >= MINY_S) + nProgressbarHeight = 5; + else + nProgressbarHeight = 3; + + if (IsLogoActive()) + nTopY = FRAME_SPACE_Y + logo->Height() + 2; + else if (GraphLCDSetup.ShowDateTime) + nTopY = FRAME_SPACE_Y + normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + else + nTopY = FRAME_SPACE_Y; + if (replay.name.length() > 0) + { + int lineHeight, maxLines; + std::vector lines; + + nMaxX = std::max(1, bitmap->Width() - (2 * FRAME_SPACE_X) - 2 * TEXT_OFFSET_X); + lineHeight = FRAME_SPACE_Y + largeFont->TotalHeight(); + maxLines = std::max(0, (bitmap->Height() - normalFont->TotalHeight() - FRAME_SPACE_Y - nProgressbarHeight - 2 - nTopY) / lineHeight); + + if (maxLines == 0) + { + if (IsLogoActive()) + { + // draw replayname next to logo + nMaxX = std::max((unsigned int) 1, nMaxX - FRAME_SPACE_X - logo->Width() - 2); + if (GraphLCDSetup.ShowDateTime) + nTopY = FRAME_SPACE_Y + normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + else + nTopY = FRAME_SPACE_Y; + maxLines = (bitmap->Height() - normalFont->TotalHeight() - FRAME_SPACE_Y - nProgressbarHeight - 2 - nTopY) / lineHeight; + } + if (maxLines <= 1) + { + // use singleline mode + lines.push_back(replay.name); + } + else + largeFont->WrapText(nMaxX, maxLines * lineHeight, replay.name, lines); + } + else if (maxLines == 1) //singleline mode + lines.push_back(replay.name); + else + { + largeFont->WrapText(nMaxX, maxLines * lineHeight, replay.name, lines); + } + + if (scroller.size() != lines.size() || + IsScrollerTextChanged(scroller,lines)) // if any text is changed + { + // Same size for Scroller and Textbuffer + scroller.resize(lines.size()); + + std::vector::iterator i = scroller.begin(); + std::vector::const_iterator e = scroller.end(); + std::vector::const_iterator li = lines.begin(); + std::vector::const_iterator le = lines.end(); + + for (int n = lines.size(); e != i && le != li; ++li,++i,--n) + { + nTopY = bitmap->Height() - normalFont->TotalHeight() - FRAME_SPACE_Y - nProgressbarHeight - n * lineHeight - 2; + i->Init(FRAME_SPACE_X + TEXT_OFFSET_X, nTopY, nMaxX + FRAME_SPACE_X + TEXT_OFFSET_X, largeFont, *li); + } + } + } + + // Draw Replaytext + { + std::vector::iterator it; + for (it = scroller.begin(); it != scroller.end(); it++) + { + it->Draw(bitmap); + } + } + + // Draw Progressbar with current and total replay time + nTopY = bitmap->Height() - normalFont->TotalHeight() - FRAME_SPACE_Y - nProgressbarHeight - 2; + nMaxX = std::max(1, bitmap->Width() - 1 - 2 * FRAME_SPACE_X); + // Logo enabled & available, and text with Logo is overlapped + if (IsLogoActive() && nTopY < (int) logo->Height()) + { + nMaxX -= max(1,FRAME_SPACE_X); // Free line between Logo and progressbar + nMaxX -= logo->Width(); + nMaxX = std::max(nMaxX - 2, 1); //Frame around Logo + } + + bitmap->DrawRectangle(FRAME_SPACE_X, + nTopY, + FRAME_SPACE_X + nMaxX, + nTopY + nProgressbarHeight, + GLCD::clrBlack, false); + + if (1 < replay.total && 1 < replay.current) // Don't show full progressbar for endless streams + { + bitmap->DrawRectangle(FRAME_SPACE_X, + nTopY, + FRAME_SPACE_X + (std::min(replay.total, replay.current) * nMaxX / replay.total), + nTopY + nProgressbarHeight, + GLCD::clrBlack, true); + } + + // Draw Strings with current and total replay time + nTopY = bitmap->Height() - normalFont->TotalHeight() - FRAME_SPACE_Y; + // use same width like Progressbar +// if (!IsLogoActive() || nTopY > logo->Height()) +// nMaxX = max(1, bitmap->Width() - 1 - (2 * FRAME_SPACE_X)); + + switch (replay.mode) + { + case eReplayDVD: + szPreMsg = tr("DVD"); break; + case eReplayMusic: + szPreMsg = tr("Music"); break; + case eReplayFile: + szPreMsg = tr("File"); break; + case eReplayImage: + szPreMsg = tr("Image"); break; + case eReplayAudioCD: + szPreMsg = tr("CD"); break; + default: + szPreMsg = tr("Replay"); break; + } + + if (bitmap->Width() >= MINY_M) + { + szPreMsg += " : "; + szPreMsg += replay.loopmode; + } + else + szPreMsg += ":"; + + if (replay.mode == eReplayImage) // Image-Plugin hasn't Frames per Seconds + { + char buffer[8]; + snprintf(buffer, sizeof(buffer), "%d", replay.current); + szCurrent = buffer; + snprintf(buffer, sizeof(buffer), "%d", replay.total); + szTotal = buffer; + } + else + { + if ((replay.total > 1 && IndexIsGreaterAsOneHour(replay.total)) || + IndexIsGreaterAsOneHour(replay.current)) // Check if any index bigger as one hour + { + szCurrent = (const char *) IndexToHMSF(replay.current); + if (replay.total > 1) // Don't draw totaltime for endless streams + szTotal = (const char *) IndexToHMSF(replay.total); + } + else + { + // Show only minutes and seconds on short replays + szCurrent = (const char *) IndexToMS(replay.current); + if (replay.total > 1) // Don't draw totaltime for endless streams + szTotal = (const char *) IndexToMS(replay.total); + } + } + // Get width of drawable strings + nWidthPreMsg = normalFont->Width(szPreMsg); + nWidthCurrent = normalFont->Width(szCurrent); + if (szTotal.length()) // Don't draw empty string + nWidthTotal = normalFont->Width(szTotal); + + // Draw depends on display width, any placeable informations + if (nWidthTotal && nWidthPreMsg && (nWidthPreMsg + nWidthCurrent + nWidthTotal + 5 < nMaxX)) + { + // Show prefix and all position + nWidthOffset = bitmap->DrawText(FRAME_SPACE_X, nTopY, nMaxX, szPreMsg, normalFont); + bitmap->DrawText(FRAME_SPACE_X + nWidthOffset + 1, nTopY, nMaxX, szCurrent, normalFont); + bitmap->DrawText(nMaxX - nWidthTotal, nTopY, nMaxX, szTotal, normalFont); + } + else if (nWidthTotal && (nWidthCurrent + nWidthTotal + 5 < nMaxX)) + { + // Show current and total position + bitmap->DrawText(FRAME_SPACE_X, nTopY, nMaxX, szCurrent, normalFont); + bitmap->DrawText(nMaxX - nWidthTotal, nTopY, nMaxX, szTotal, normalFont); + } + else if (!nWidthTotal && nWidthPreMsg && (nWidthPreMsg + nWidthCurrent + 1 < nMaxX)) + { + // Show prefix and current position + nWidthOffset = bitmap->DrawText(FRAME_SPACE_X, nTopY, nMaxX, szPreMsg, normalFont); + bitmap->DrawText(FRAME_SPACE_X + nWidthOffset + 1, nTopY, nMaxX, szCurrent, normalFont); + } + else + { + // Show only current position + bitmap->DrawText(FRAME_SPACE_X, nTopY, nMaxX, szCurrent, normalFont); + } +} + +void cGraphLCDDisplay::DisplayMenu(void) +{ + char buffer2[255]; + char * pszTmp1; + char * pszTmp2; + int iAT, t; + int FrameWidth, yPos, iEntryHeight; + int extra = 0; + tOsdState osd; + + osd = GraphLCDState->GetOsdState(); + + mutex.Lock(); + + FrameWidth = std::max(bitmap->Width() - 2 * FRAME_SPACE_X, 1); + + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + yPos = FRAME_SPACE_Y + normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + } + else + { + yPos = FRAME_SPACE_Y; + } + + // draw Menu Title + if (osd.title.length() > 0) + { + bitmap->DrawRoundRectangle(FRAME_SPACE_X, + yPos, + FRAME_SPACE_X + FrameWidth - 1, + yPos + normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_TIME - 1, + GLCD::clrBlack, true, TEXT_OFFSET_Y_CHANNEL >= 4 ? 4 : 1); + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X, + yPos + TEXT_OFFSET_Y_TIME, + FRAME_SPACE_X + FrameWidth - 1, + osd.title, normalFont, GLCD::clrWhite); + } + + if (!(textItemLines.size() > 0)) + { + // draw Menu Entries + if (normalFont->TotalHeight() <= normalFont->LineHeight()) + extra = 1; + iEntryHeight = normalFont->TotalHeight() + 2 * extra; + yPos = yPos + normalFont->TotalHeight() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + if (GraphLCDSetup.ShowColorButtons && + (osd.colorButton[0].length() > 0 || osd.colorButton[1].length() > 0 || + osd.colorButton[2].length() > 0 || osd.colorButton[3].length() > 0)) + { + menuCount = (bitmap->Height() - yPos - smallFont->TotalHeight() - 4 - FRAME_SPACE_Y / 3) / iEntryHeight; + } + else + { + menuCount = (bitmap->Height() - yPos) / iEntryHeight; + } + + if (osd.currentItemIndex < menuTop) + menuTop = osd.currentItemIndex; + if (osd.currentItemIndex > menuTop + menuCount - 1) + menuTop = std::max(0, osd.currentItemIndex + 1 - menuCount); + + bitmap->DrawRectangle(0, yPos, bitmap->Width() - 1, bitmap->Height() - 1, GLCD::clrWhite, true); + + for (int i = menuTop; i < std::min((int) osd.items.size(), menuTop + menuCount); i++) + { + if (i == osd.currentItemIndex) + { + bitmap->DrawRoundRectangle(FRAME_SPACE_X, yPos + (i - menuTop) * iEntryHeight, + bitmap->Width() - 1 - FRAME_SPACE_X, + yPos + (i - menuTop + 1) * iEntryHeight - 1, + GLCD::clrBlack, true, TEXT_OFFSET_Y_CHANNEL >= 4 ? 3 : 1); + } + strncopy(buffer2, osd.items[i].c_str(), sizeof(buffer2)); + pszTmp1 = buffer2; + pszTmp2 = strchr(pszTmp1, '\t'); + iAT = 0; t = 0; + + while (pszTmp1 && pszTmp2) + { + *pszTmp2 = '\0'; + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X + t, + yPos + (i - menuTop) * iEntryHeight + extra, + std::min(FRAME_SPACE_X + TEXT_OFFSET_X + t + tab[iAT + 1], bitmap->Width() - 1 - FRAME_SPACE_X), + pszTmp1, normalFont, (i == osd.currentItemIndex) ? GLCD::clrWhite : GLCD::clrBlack); + pszTmp1 = pszTmp2+1; + pszTmp2 = strchr(pszTmp1, '\t'); + t = t + tab[iAT + 1] + TEXT_OFFSET_X; + iAT++; + } + + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X + t, + yPos + (i - menuTop) * iEntryHeight + extra, + bitmap->Width() - 1 - FRAME_SPACE_X, + pszTmp1, normalFont, (i == osd.currentItemIndex) ? GLCD::clrWhite : GLCD::clrBlack); + } + } + mutex.Unlock(); +} + +void cGraphLCDDisplay::DisplayMessage() +{ + std::vector lines; + int lineCount; + int maxTextLen, recW, recH; + int entryHeight; + tOsdState osd; + + osd = GraphLCDState->GetOsdState(); + if (GraphLCDSetup.ShowMessages && osd.message.length() > 0) + { + maxTextLen = bitmap->Width() - 2 * FRAME_SPACE_X - 2 * FRAME_SPACE_XB - 2 * TEXT_OFFSET_X - 10; + entryHeight = 2 * (normalFont->TotalHeight() - normalFont->TotalAscent()) + normalFont->TotalAscent(); + normalFont->WrapText(maxTextLen, MAXLINES_MSG * entryHeight, osd.message, lines, &recW); + lineCount = lines.size(); + + // display text + recH = lineCount * entryHeight + 2 * TEXT_OFFSET_Y_CHANNEL + 2 * FRAME_SPACE_YB; + recW = recW + 2 * TEXT_OFFSET_X + 2 * FRAME_SPACE_XB + 2 * FRAME_SPACE_X; + recW += (recW % 2); + + bitmap->DrawRectangle((bitmap->Width() - recW) / 2, + (bitmap->Height() - recH) / 2, + bitmap->Width() - 1 - (bitmap->Width() - recW) / 2, + bitmap->Height() - 1 - (bitmap->Height() - recH) / 2, + GLCD::clrWhite, true); + recH = recH - 2 * FRAME_SPACE_YB; + recW = recW - 2 * FRAME_SPACE_XB; + bitmap->DrawRectangle((bitmap->Width() - recW) / 2, + (bitmap->Height() - recH) / 2, + bitmap->Width() - 1 - (bitmap->Width() - recW) / 2, + bitmap->Height() - 1 - (bitmap->Height() - recH) / 2, + GLCD::clrBlack, false); + recH = recH - 2 * TEXT_OFFSET_Y_CHANNEL; + recW = recW - 2 * TEXT_OFFSET_X; + for (int i = 0; i < lineCount; i++) + { + bitmap->DrawText((bitmap->Width() - normalFont->Width(lines[i])) / 2, + (bitmap->Height() - recH) / 2 + i * entryHeight + (normalFont->TotalHeight() - normalFont->TotalAscent()), + bitmap->Width() - (bitmap->Width() - recW) / 2, + lines[i], normalFont); + } + } +} + +void cGraphLCDDisplay::DisplayTextItem() +{ + int lineCount; + int iEntryHeight, iLineAnz; + int yPos; + tOsdState osd; + + osd = GraphLCDState->GetOsdState(); + + mutex.Lock(); + if (textItemLines.size() > 0) + { + lineCount = textItemLines.size(); + + if (GraphLCDSetup.ShowDateTime == 1 || + (GraphLCDSetup.ShowDateTime == 2 && State != Menu)) + { + yPos = FRAME_SPACE_Y + normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_TIME + FRAME_SPACE_YB; + } + else + { + yPos = FRAME_SPACE_Y; + } + + // draw Text + iEntryHeight = normalFont->LineHeight(); + yPos = yPos + normalFont->TotalAscent() + 2 * TEXT_OFFSET_Y_CHANNEL + FRAME_SPACE_YB; + if (GraphLCDSetup.ShowColorButtons && + (osd.colorButton[0].length() > 0 || osd.colorButton[1].length() > 0 || + osd.colorButton[2].length() > 0 || osd.colorButton[3].length() > 0)) + { + iLineAnz = (bitmap->Height() - yPos - smallFont->TotalHeight() - 4 - FRAME_SPACE_Y / 3) / iEntryHeight; + } + else + { + iLineAnz = (bitmap->Height() - yPos) / iEntryHeight; + } + + int startLine = textItemTop; + for (int i = 0; i < std::min(lineCount, iLineAnz); i++) + { + if (i + startLine < lineCount) + bitmap->DrawText(FRAME_SPACE_X + TEXT_OFFSET_X, + yPos + i * iEntryHeight, + bitmap->Width() - 1 - FRAME_SPACE_X, + textItemLines[i + startLine], normalFont); + } + } + mutex.Unlock(); +} + +void cGraphLCDDisplay::DisplayColorButtons() +{ + int i, buttonWidth, textLen; + int extra = 0; + tOsdState osd; + + osd = GraphLCDState->GetOsdState(); + + if (GraphLCDSetup.ShowColorButtons) + { + buttonWidth = (bitmap->Width() / 4) - (FRAME_SPACE_X ? 2 * FRAME_SPACE_X : 1); + if (smallFont->TotalHeight() == smallFont->TotalAscent()) + extra = 1; + + for (i = 0; i < 4; i++) + { + if (osd.colorButton[i].length() > 0) + { + bitmap->DrawRoundRectangle(i * (bitmap->Width() / 4) + FRAME_SPACE_X, + bitmap->Height() - smallFont->TotalHeight() - 2 * extra - FRAME_SPACE_Y / 3, + i * (bitmap->Width() / 4) + FRAME_SPACE_X + buttonWidth - 1, + bitmap->Height() - 1 - FRAME_SPACE_Y / 3, + GLCD::clrBlack, true, std::max(1, (smallFont->TotalHeight() + 4) / 5)); + textLen = smallFont->Width(osd.colorButton[i]); + if (textLen <= buttonWidth - 2) + { + bitmap->DrawText(i * (bitmap->Width() / 4) + (bitmap->Width() / 8) - (textLen + 1) / 2, + bitmap->Height() - smallFont->TotalHeight() - extra - FRAME_SPACE_Y / 3, + i * (bitmap->Width() / 4) + FRAME_SPACE_X + buttonWidth - 1, + osd.colorButton[i], smallFont, GLCD::clrWhite); + } + else + { + bitmap->DrawText(i * (bitmap->Width() / 4) + FRAME_SPACE_X + 1, + bitmap->Height() - smallFont->TotalHeight() - extra - FRAME_SPACE_Y / 3, + i * (bitmap->Width() / 4) + FRAME_SPACE_X + buttonWidth - 1, + osd.colorButton[i], smallFont, GLCD::clrWhite); + } + } + } + } +} + +void cGraphLCDDisplay::DisplayVolume() +{ + int RecW, RecH; + tVolumeState volume; + + volume = GraphLCDState->GetVolumeState(); + + if (GraphLCDSetup.ShowVolume) + { + if (volume.lastChange > 0) + { + if (TimeMs() - volume.lastChange < 2000) + { + RecH = (bitmap->Height() / 5) + 2 * FRAME_SPACE_YB + 4 * FRAME_SPACE_YB; + RecW = bitmap->Width() / 2; + bitmap->DrawRoundRectangle((bitmap->Width() - RecW) / 2, // draw frame + (bitmap->Height() - RecH) / 2, + bitmap->Width() - (bitmap->Width() - RecW) / 2 - 1, + bitmap->Height() - (bitmap->Height() - RecH) / 2 - 1, + GLCD::clrWhite, true, 1); + RecH = RecH - 2 * FRAME_SPACE_YB; + RecW = RecW - 2 * FRAME_SPACE_XB; + bitmap->DrawRoundRectangle((bitmap->Width() - RecW) / 2, // draw box + (bitmap->Height() - RecH) / 2, + bitmap->Width() - 1 - (bitmap->Width() - RecW) / 2, + bitmap->Height() - 1 - (bitmap->Height() - RecH) / 2, + GLCD::clrBlack, false, 1); + RecH = RecH - 2; + RecW = RecW - 2; + if (volume.value > 0) + bitmap->DrawRectangle((bitmap->Width() - RecW) / 2, // draw bar + (bitmap->Height() - RecH) / 2, + (bitmap->Width() - RecW) / 2 + (volume.value * RecW) / 255, + bitmap->Height() - 1 - (bitmap->Height() - RecH) / 2, + GLCD::clrBlack, true); + if (volume.value == 0) + { + // display big mute symbol + bitmap->DrawCharacter(bitmap->Width() / 2 - symbols->Width('5'), + bitmap->Height() / 2 - symbols->Height('5'), + bitmap->Width() - 1, '5', symbols); + bitmap->DrawCharacter(bitmap->Width() / 2, + bitmap->Height() / 2 - symbols->Height('6'), + bitmap->Width() - 1, '6', symbols); + bitmap->DrawCharacter(bitmap->Width() / 2 - symbols->Width('7'), + bitmap->Height() / 2, + bitmap->Width() - 1, '7', symbols); + bitmap->DrawCharacter(bitmap->Width() / 2, + bitmap->Height() / 2, + bitmap->Width() - 1, '8', symbols); + } + showVolume = true; + } + } + } +} + +void cGraphLCDDisplay::UpdateIn(long usec) +{ + if (usec == 0) + { + timerclear(&UpdateAt); + } + else + { + if (gettimeofday(&CurrTimeval, NULL) == 0) + { + // get current time + UpdateAt.tv_sec = CurrTimeval.tv_sec; + UpdateAt.tv_usec = CurrTimeval.tv_usec + usec; + while (UpdateAt.tv_usec >= 1000000) + { + // take care of an overflow + UpdateAt.tv_sec++; + UpdateAt.tv_usec -= 1000000; + } + } + } +} + + +bool cGraphLCDDisplay::CheckAndUpdateSymbols() +{ + bool bRet = false; + static struct stat filestat; + FILE* InFile = NULL; + static char szLine[8]; + + if (stat(FILENAME_EXTERNAL_TRIGGERED_SYMBOLS, &filestat)==0) { + if (LastTimeModSym != filestat.st_mtime) { + InFile = fopen(FILENAME_EXTERNAL_TRIGGERED_SYMBOLS, "r"); + if (InFile) { + strcpy(szETSymbols, ""); + while (!feof(InFile) && (strlen(szETSymbols)+10)) { + strcpy(szETSymbols, ""); + bRet = true; + } + } + return bRet; +} + +void cGraphLCDDisplay::SetBrightness() +{ + mutex.Lock(); + bool bActive = bBrightnessActive + || (State == Menu) + || (GraphLCDSetup.ShowVolume && showVolume) + || (GraphLCDSetup.ShowMessages && GraphLCDState->GetOsdState().message.length() > 0) + || (GraphLCDSetup.BrightnessDelay == 900); + if (bActive) + { + LastTimeBrightness = TimeMs(); + bBrightnessActive = false; + } + if ((bActive ? GraphLCDSetup.BrightnessActive : GraphLCDSetup.BrightnessIdle) != nCurrentBrightness) + { + if (bActive) + { + mLcd->SetBrightness(GraphLCDSetup.BrightnessActive); + nCurrentBrightness = GraphLCDSetup.BrightnessActive; + } + else + { + if (GraphLCDSetup.BrightnessDelay < 1 + || ((TimeMs() - LastTimeBrightness) > (uint64_t) (GraphLCDSetup.BrightnessDelay*1000))) + { + mLcd->SetBrightness(GraphLCDSetup.BrightnessIdle); + nCurrentBrightness = GraphLCDSetup.BrightnessIdle; + } + } + } + mutex.Unlock(); +} diff --git a/display.h b/display.h new file mode 100644 index 0000000..f5395fa --- /dev/null +++ b/display.h @@ -0,0 +1,152 @@ +/* + * GraphLCD plugin for the Video Disk Recorder + * + * display.h - display class + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + */ + +#ifndef GRAPHLCD_DISPLAY_H +#define GRAPHLCD_DISPLAY_H + +#include + +#include +#include + +#include +#include + +#include "global.h" +#include "layout.h" +#include "logolist.h" +#include "setup.h" +#include "state.h" +#include "widgets.h" + +#include +#include + + +#define LCDMAXCARDS 4 +static const int kMaxTabCount = 10; + +enum ThreadState +{ + Normal, + Replay, + Menu +}; + +// Display update Thread +class cGraphLCDDisplay : public cThread +{ +public: + cGraphLCDDisplay(void); + ~cGraphLCDDisplay(void); + + int Init(GLCD::cDriver * Lcd, const char * CfgDir); + void Tick(void); + + void SetChannel(int ChannelNumber); + void SetClear(); + void SetOsdTitle(); + void SetOsdItem(const char * Text); + void SetOsdCurrentItem(); + void Recording(const cDevice * Device , const char * Name); + void Replaying(bool starting, eReplayMode replayMode); + //void SetStatusMessage(const char * Msg); + void SetOsdTextItem(const char * Text, bool Scroll); + //void SetColorButtons(const char * Red, const char * Green, const char * Yellow, const char * Blue); + void SetVolume(int Volume, bool Absolute); + + void Update(); + +protected: + virtual void Action(); + +private: + bool update; + bool active; + GLCD::cDriver * mLcd; + + cFontList fontList; + GLCD::cBitmap * bitmap; + const GLCD::cFont * largeFont; + const GLCD::cFont * normalFont; + const GLCD::cFont * smallFont; + const GLCD::cFont * symbols; + std::string cfgDir; + std::string fontDir; + std::string logoDir; + + ThreadState State; + ThreadState LastState; + + cMutex mutex; + cGraphLCDState * GraphLCDState; + + int menuTop; + int menuCount; + int tabCount; + int tab[kMaxTabCount]; + int tabMax[kMaxTabCount]; + + std::vector textItemLines; + int textItemTop; + int textItemVisibleLines; + + bool showVolume; + + time_t CurrTime; + time_t LastTime; + time_t LastTimeCheckSym; + time_t LastTimeModSym; + struct timeval CurrTimeval; + struct timeval UpdateAt; + + std::vector scroller; + + cGraphLCDLogoList * logoList; + cGraphLCDLogo * logo; + + char szETSymbols[32]; + + void DisplayChannel(); + void DisplayTime(); + void DisplayLogo(); + void DisplaySymbols(); + void DisplayProgramme(); + void DisplayReplay(tReplayState & replay); + void DisplayMenu(); + void DisplayMessage(); + void DisplayTextItem(); + void DisplayColorButtons(); + void DisplayVolume(); + + void UpdateIn(long usec); + bool CheckAndUpdateSymbols(); + + /** Check if replay index bigger as one hour */ + bool IndexIsGreaterAsOneHour(int Index) const; + /** Translate replay index to string with minute and second MM:SS */ + const char *IndexToMS(int Index) const; + /** Compare Scroller with new Textbuffer*/ + bool IsScrollerTextChanged(const std::vector & scroller, const std::vector & lines) const; + /** Returns true if Logo loaded and active*/ + bool IsLogoActive() const; + /** Returns true if Symbols loaded and active*/ + bool IsSymbolsActive() const; + + /** Set Brightness depends user activity */ + void SetBrightness(); + uint64_t LastTimeBrightness; + int nCurrentBrightness; + bool bBrightnessActive; +}; + +#endif diff --git a/global.h b/global.h new file mode 100644 index 0000000..a810180 --- /dev/null +++ b/global.h @@ -0,0 +1,33 @@ +/* + * GraphLCD plugin for the Video Disk Recorder + * + * global.h - global definitions + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + */ + +#ifndef _GRAPHLCD_GLOBAL_H_ +#define _GRAPHLCD_GLOBAL_H_ + + +#include + +#include + + +#define PLUGIN_NAME "graphlcd" +#define SPACEWIDTH 2 + +#define FREENULL(p) (free (p), p = NULL) + +template inline void clip(T & value, T min, T max) +{ + if (value < min) value = min; + if (value > max) value = max; +} + +#endif diff --git a/graphlcd/fonts.conf b/graphlcd/fonts.conf new file mode 120000 index 0000000..0df1c43 --- /dev/null +++ b/graphlcd/fonts.conf @@ -0,0 +1 @@ +fonts.conf.large \ No newline at end of file diff --git a/graphlcd/fonts.conf.large b/graphlcd/fonts.conf.large new file mode 100644 index 0000000..e976638 --- /dev/null +++ b/graphlcd/fonts.conf.large @@ -0,0 +1,4 @@ +Large Font = fnt:verdana-018.fnt +Normal Font = fnt:verdanab-013.fnt +Small Font = fnt:verdanab-009.fnt +Symbol Font = fnt:sym11.fnt diff --git a/graphlcd/fonts.conf.medium b/graphlcd/fonts.conf.medium new file mode 100644 index 0000000..3ffe9c8 --- /dev/null +++ b/graphlcd/fonts.conf.medium @@ -0,0 +1,4 @@ +Large Font = fnt:f12bn.fnt +Normal Font = fnt:f8n.fnt +Small Font = fnt:f5n.fnt +Symbol Font = fnt:sym7.fnt diff --git a/graphlcd/fonts.conf.small b/graphlcd/fonts.conf.small new file mode 100644 index 0000000..3ffe9c8 --- /dev/null +++ b/graphlcd/fonts.conf.small @@ -0,0 +1,4 @@ +Large Font = fnt:f12bn.fnt +Normal Font = fnt:f8n.fnt +Small Font = fnt:f5n.fnt +Symbol Font = fnt:sym7.fnt diff --git a/graphlcd/fonts.conf.tiny b/graphlcd/fonts.conf.tiny new file mode 100644 index 0000000..e289421 --- /dev/null +++ b/graphlcd/fonts.conf.tiny @@ -0,0 +1,4 @@ +Large Font = fnt:f8b.fnt +Normal Font = fnt:f8n.fnt +Small Font = fnt:f5n.fnt +Symbol Font = fnt:sym7.fnt diff --git a/graphlcd/fonts.conf.ttf b/graphlcd/fonts.conf.ttf new file mode 100644 index 0000000..b53dc5e --- /dev/null +++ b/graphlcd/fonts.conf.ttf @@ -0,0 +1,4 @@ +Large Font = ft2:verdana.ttf:18 +Normal Font = ft2:verdanab.ttf:13 +Small Font = ft2:verdanab.ttf:9 +Symbol Font = fnt:sym11.fnt diff --git a/graphlcd/fonts/Vera.ttf b/graphlcd/fonts/Vera.ttf new file mode 100644 index 0000000..58cd6b5 Binary files /dev/null and b/graphlcd/fonts/Vera.ttf differ diff --git a/graphlcd/fonts/VeraBd.ttf b/graphlcd/fonts/VeraBd.ttf new file mode 100644 index 0000000..51d6111 Binary files /dev/null and b/graphlcd/fonts/VeraBd.ttf differ diff --git a/graphlcd/fonts/f12b.fnt b/graphlcd/fonts/f12b.fnt new file mode 100644 index 0000000..ca2776d Binary files /dev/null and b/graphlcd/fonts/f12b.fnt differ diff --git a/graphlcd/fonts/f12bn.fnt b/graphlcd/fonts/f12bn.fnt new file mode 100644 index 0000000..bf7f41e Binary files /dev/null and b/graphlcd/fonts/f12bn.fnt differ diff --git a/graphlcd/fonts/f17b.fnt b/graphlcd/fonts/f17b.fnt new file mode 100644 index 0000000..a025765 Binary files /dev/null and b/graphlcd/fonts/f17b.fnt differ diff --git a/graphlcd/fonts/f17bn.fnt b/graphlcd/fonts/f17bn.fnt new file mode 100644 index 0000000..2dd06b8 Binary files /dev/null and b/graphlcd/fonts/f17bn.fnt differ diff --git a/graphlcd/fonts/f5n.fnt b/graphlcd/fonts/f5n.fnt new file mode 100644 index 0000000..9e8814b Binary files /dev/null and b/graphlcd/fonts/f5n.fnt differ diff --git a/graphlcd/fonts/f8b.fnt b/graphlcd/fonts/f8b.fnt new file mode 100644 index 0000000..ea6cc08 Binary files /dev/null and b/graphlcd/fonts/f8b.fnt differ diff --git a/graphlcd/fonts/f8n.fnt b/graphlcd/fonts/f8n.fnt new file mode 100644 index 0000000..fdd0362 Binary files /dev/null and b/graphlcd/fonts/f8n.fnt differ diff --git a/graphlcd/fonts/sym11.fnt b/graphlcd/fonts/sym11.fnt new file mode 100644 index 0000000..bcbc2ad Binary files /dev/null and b/graphlcd/fonts/sym11.fnt differ diff --git a/graphlcd/fonts/sym7.fnt b/graphlcd/fonts/sym7.fnt new file mode 100644 index 0000000..a18904e Binary files /dev/null and b/graphlcd/fonts/sym7.fnt differ diff --git a/graphlcd/fonts/verdana-018.fnt b/graphlcd/fonts/verdana-018.fnt new file mode 100644 index 0000000..2dd06b8 Binary files /dev/null and b/graphlcd/fonts/verdana-018.fnt differ diff --git a/graphlcd/fonts/verdanab-009.fnt b/graphlcd/fonts/verdanab-009.fnt new file mode 100644 index 0000000..b7b011d Binary files /dev/null and b/graphlcd/fonts/verdanab-009.fnt differ diff --git a/graphlcd/fonts/verdanab-013.fnt b/graphlcd/fonts/verdanab-013.fnt new file mode 100644 index 0000000..3d82b98 Binary files /dev/null and b/graphlcd/fonts/verdanab-013.fnt differ diff --git a/graphlcd/logonames.alias b/graphlcd/logonames.alias new file mode 120000 index 0000000..b47422c --- /dev/null +++ b/graphlcd/logonames.alias @@ -0,0 +1 @@ +logonames.alias.1.3 \ No newline at end of file diff --git a/graphlcd/logonames.alias.1.2 b/graphlcd/logonames.alias.1.2 new file mode 100644 index 0000000..a73e53a --- /dev/null +++ b/graphlcd/logonames.alias.1.2 @@ -0,0 +1,301 @@ +8:PREMIERE START +9:PREMIERE4 +10:PREMIERE1 +11:PREMIERE2 +12:ANIMAL PLANET +13:PLANET +14:DISCOVERY CHANNEL +15:CLASSICA +16:PREMIERE SERIE +17:PREMIERE SPORT1 +18:PREMIERE DIREKT PORTAL +19:JUNIOR +20:PREMIERE7 +21:BEATE-UHSE.TV +22:HEIMATKANAL +23:PREMIERE KRIMI +27:PREMIERE SPORT2 +28:FOX KIDS +29:REMIERE5 +32:SONNENKLAR TV +34:DISNEY CHANNEL +40:HSE24 +41:PREMIERE6 +42:13TH STREET +43:PREMIERE3 +46:SAT1 +47:N24 +48:SAT1 SCHWEIZ +51:TELE 5 +53:PREMIERE AUSTRIA +54:LASTMINUTE +160:ROCK ANTENNE +161:ERF RADIO +169:SUNSHINE LIVE +170:ANTENNE BAYERN +208:PREMIERE DIREKT 2 +209:PREMIERE DIREKT 3 +210:PREMIERE DIREKT 3 +211:PREMIERE DIREKT 3 +212:PREMIERE DIREKT 3 +240:PREMIERE DIREKT 1 +241:PREMIERE DIREKT 1 +242:PREMIERE DIREKT 1 +243:PREMIERE DIREKT 2 +244:PREMIERE DIREKT 2 +245:PREMIERE DIREKT 2 +513:PREMIERE EROTIK +514:ONTV +515:MGM +516:PREMIERE NOSTALGIE +518:GOLDSTAR TV +769:TV TRAVEL SHOP +772:TV BERLIN +775:FRANKEN SAT +778:PREMIERE EROTIK 1 +779:PREMIERE EROTIK 2 +897:NEUN LIVE +898:PRO SIEBEN +899:KABEL 1 +900:DSF +2004:RTL4 +2005:RTL5 +2020:ANIMAL PLANET +2025:EUROSPORT +2030:BBC PRIME +2035:HALLMARK +2051:RTL RADIO +3982:RTBF SAT +3994:RTL TELE LETZEBURG +4009:X-ZONE +4011:NED1 +4012:NED2 +4013:NED3 +4020:YAM FM +4030:RTL FM +5004:NET5 +5005:SBS6 +5015:TMF +5025:BVN +5050:YORIN FM +5055:KINK FM +5070:SKY RADIO NL +5072:RADIO 538 +5085:RADIO 10 GOLD +5095:VERONICA RADIO +7268:OTTO SHOP +8004:EURONEWS +8151:EUROSPORT +8156:LCI +8353:KTO +8355:MATCH TV +8501:FRANCE5 +8505:BLOOMBERG TV +8506:LCP +8529:RIRE ET CHANSONS +8536:NRJ +8537:EUROPE 2 +8544:VIBRATION +8545:CONTACT FM +8548:CHERIE FM +8549:ALOUETTE +8550:VOLTAGE +8552:ADO FM +8553:RSR COULEUR 3 +8559:MEDIA TROPICAL +8612:CANAL CLUB +8613:BEUR TV +8801:FRANCE2 +8802:FRANCE3 +8906:DISNEY CHANNEL +8907:PLAYHOUSE DISNEY +8910:MOTORS TV +9011:ALGERIE +9012:TV5 EUROPE +9014:ESC1-EGYPT +9015:RAI 1 +9017:RTP INT +9018:TV7 +9019:ARTE +9021:AL JAZEERA +9030:2M MAROC +9301:FESTIVAL +9302:HISTOIRE +9307:LIVE 1 +10001:TVE INT +10002:RTM-MAROC +10010:EUROSPORT +10020:DW-TV +10030:CNBC EUROPE +12003:RTL TELEVISION +12020:RTL 2 +12040:SUPER RTL +12060:VOX +12080:RTL SHOP +12085:RTL AUSTRIA +12100:QVC GERMANY +12120:VIVA PLUS +12160:BLOOMBERG TV +12199:LIBERTY TV +12200:CNBC EUROPE +12240:TV5 EUROPE +12280:LIBERTY TV +12301:TV6 +12320:WISHLINE +12340:BBC WORLD +12341:CFN RFC +12600:BAHN TV +12601:K-TV +12602:XXP +12614:RHEIN MAIN TV +12650:RADIO MARIA +12660:HITRADIO FFH +12661:PLANET RADIO +12662:HARMONY FM +12730:N-TV +12732:VIVA +12750:HOERZU DIGITAL +13001:ORF 1 +13002:ORF 2 +13003:ORF 2 WIEN +13004:ORF 2 NIEDEROESTERREICH +13005:ORF 2 BURGENLAND +13006:ORF 2 OBEROESTERREICH +13007:ORF 2 SALZBURG +13008:ORF 2 TIROL +13009:ORF 2 VORARLBERG +13010:ORF 2 STEIERMARK +13011:ORF 2 KAERNTEN +13012:ATVPLUS +13013:TW1 +13021:OESTERREICH 1 +13033:OESTERREICH 3 +13034:FM4 +17020:AB MOTEURS +17021:AB1 +17022:ANIMAUX +17024:ZIK +17027:BBC WORLD +17028:RFM-TV +17029:FASHION TV +17030:ACTION +17032:CINE BOX +20001:PRO SIEBEN SCHWEIZ +20002:PRO SIEBEN AUSTRIA +20003:KABEL 1 SCHWEIZ +20004:KABEL 1 AUSTRIA +20005:SAT1 AUSTRIA +20312:ANIMAL PLANET +20316:FOX KIDS +20319:HALLMARK +20321:EUROSPORT +20322:MTV CENTRAL +20323:HALLMARK +20328:BBC PRIME +28006:ZDF +28007:3SAT +28008:KIKA +28009:EUROSPORT +28011:ZDF INFOKANAL +28012:DEUTSCHKANDRADIO BERLIN +28013:DEUTSCHLANDFUNK KOELN +28014:ZDF DOKUKANAL +28015:EURONEWS +28016:ZDF THEATERKANAL +28017:OESTERREICH 1 +28106:DAS ERSTE +28107:BAYERISCHES FERNSEHEN +28108:HESSEN FERNSEHEN +28109:ARTE +28110:SR FERNSEHEN SW +28111:WDR +28112:BR-ALPHA +28113:SUEDWEST FS BW +28114:PHOENIX +28120:BAYERN4 KLASSIK +28121:B5 AKTUELL +28122:HR SKYLINE +28123:HR2 +28124:HR KLASSIK +28125:YOU FM +28126:BAYERN1 +28127:NDR INFO +28128:NORDWEST RADIO +28129:SR 1 +28201:EINS EXTRA +28202:EINS FESTIVAL +28203:EINS MUXX +28204:MDR FERNSEHEN +28205:RBB BRANDENBURG +28206:RBB BERLIN +28207:NDR KULTUR +28208:MDR FIGARO +28209:FRITZ +28210:JUMP +28211:MDR INFO +28212:SPUTNIK +28213:RADIO MULTIKULTI +28214:SWR2 +28215:WDR3 +28216:WDR5 +28224:NDR FERNSEHEN MV +28225:NDR FERNSEHEN HH +28226:NDR FERNSEHEN NDS +28227:NDR FERNSEHEN SH +28228:MDR FERNSEHEN S +28229:MDR FERNSEHEN SA +28230:MDR FERNSEHEN TH +28231:SUEDWEST FS RP +28305:WDR +28306:WDR +28307:WDR +28308:WDR +28309:WDR +28310:WDR +28311:WDR +28312:WDR +28521:CARTOON NETWORK +28522:CNN INT +28640:MTV 2 POP CHANNEL +28652:MTV F +28653:MTV CENTRAL +28654:MTV HITS +28655:MTV BASE +28656:VH1 +28657:VH1 CLASSIC +28658:NICKELODEON +28659:MTV 2 +28664:MTV HITS +28665:MTV BASE +28666:VH1 +28669:MTV 2 +28800:RTL AUSTRIA +28805:VOX AUSTRIA +28810:RTL 2 AUSTRIA +28815:SUPER RTL AUSTRIA +29801:FOX KIDS +29802:DISNEY CHANNEL +29803:PLAYHOUSE DISNEY +29955:FOX +29956:AXN +29963:CADENA DIAL +30051:REALMADRID TV +30201:TVC INT +30210:CNN+ +30222:TV GALICIA +30400:CANAL+ +30403:DISNEY CHANNEL +30405:40 TV +30500:CARTOON NETWORK +30503:EUROSPORT +30602:CANAL+ ...30 +30603:PLAYBOY +30611:FOX NEWS +31210:BTV +31230:TV6 +61900:BIBEL TV +61911:TRW AM +61912:RADIO MARIA +61920:TANGO TV +61963:RAZE TV +61980:FREE-X TV diff --git a/graphlcd/logonames.alias.1.3 b/graphlcd/logonames.alias.1.3 new file mode 100644 index 0000000..c9e219f --- /dev/null +++ b/graphlcd/logonames.alias.1.3 @@ -0,0 +1,383 @@ +1-1008-29801:FOX KIDS +1-1008-29802:DISNEY CHANNEL +1-1008-29803:PLAYHOUSE DISNEY +1-1024-9011:ALGERIE +1-1024-9012:TV5 EUROPE +1-1024-9014:ESC1-EGYPT +1-1024-9015:RAI 1 +1-1024-9017:RTP INT +1-1024-9018:TV7 +1-1024-9019:ARTE +1-1024-9021:AL JAZEERA +1-1024-9030:2M MAROC +1-1026-10001:TVE INT +1-1026-10002:RTM-MAROC +1-1026-10010:EUROSPORT +1-1026-10020:DW-TV +1-1026-10030:CNBC EUROPE +1-1032-30201:TVC INT +1-1032-30210:CNN+ +1-1032-30222:TV GALICIA +1-1038-30400:CANAL+ +1-1038-30403:DISNEY CHANNEL +1-1038-30405:40 TV +1-1042-30051:REALMADRID TV +1-1046-30500:CARTOON NETWORK +1-1046-30503:EUROSPORT +1-1056-29955:FOX +1-1056-29956:AXN +1-1056-29963:CADENA DIAL +1-1057-61900:BIBEL TV +1-1057-61911:TRW AM +1-1057-61912:RADIO MARIA +1-1057-61920:TANGO TV +1-1057-61963:RAZE TV +1-1057-61980:FREE-X TV +1-1060-30602:CANAL+ ...30 +1-1060-30603:PLAYBOY +1-1060-30611:FOX NEWS +1-1066-28652:MTV F +1-1066-28653:MTV CENTRAL +1-1066-28654:MTV HITS +1-1066-28655:MTV BASE +1-1066-28656:VH1 +1-1066-28657:VH1 CLASSIC +1-1066-28658:NICKELODEON +1-1066-28659:MTV 2 +1-1066-28664:MTV HITS +1-1066-28665:MTV BASE +1-1066-28666:VH1 +1-1066-28669:MTV 2 +1-1068-28521:CARTOON NETWORK +1-1068-28522:CNN INT +1-1070-8004:EURONEWS +1-1073-28201:EINS EXTRA +1-1073-28202:EINS FESTIVAL +1-1073-28203:EINS MUXX +1-1073-28204:MDR FERNSEHEN +1-1073-28205:RBB BRANDENBURG +1-1073-28206:RBB BERLIN +1-1073-28207:NDR KULTUR +1-1073-28208:MDR FIGARO +1-1073-28209:FRITZ +1-1073-28210:JUMP +1-1073-28211:MDR INFO +1-1073-28212:SPUTNIK +1-1073-28213:RADIO MULTIKULTI +1-1073-28214:SWR2 +1-1073-28215:WDR3 +1-1073-28216:WDR5 +1-1073-28224:NDR FERNSEHEN MV +1-1073-28225:NDR FERNSEHEN HH +1-1073-28226:NDR FERNSEHEN NDS +1-1073-28227:NDR FERNSEHEN SH +1-1073-28228:MDR FERNSEHEN S +1-1073-28229:MDR FERNSEHEN SA +1-1073-28230:MDR FERNSEHEN TH +1-1073-28231:SUEDWEST FS RP +1-1074-8353:KTO +1-1074-8355:MATCH TV +1-1076-8151:EUROSPORT +1-1076-8156:LCI +1-1079-28006:ZDF +1-1079-28007:3SAT +1-1079-28008:KIKA +1-1079-28009:EUROSPORT +1-1079-28011:ZDF INFOKANAL +1-1079-28012:DEUTSCHKANDRADIO BERLIN +1-1079-28013:DEUTSCHLANDFUNK KOELN +1-1079-28014:ZDF DOKUKANAL +1-1079-28015:EURONEWS +1-1079-28016:ZDF THEATERKANAL +1-1079-28017:OESTERREICH 1 +1-1080-8801:FRANCE2 +1-1080-8802:FRANCE3 +1-1082-20001:PRO SIEBEN SCHWEIZ +1-1082-20002:PRO SIEBEN AUSTRIA +1-1082-20003:KABEL 1 SCHWEIZ +1-1082-20004:KABEL 1 AUSTRIA +1-1082-20005:SAT1 AUSTRIA +1-1089-12003:RTL TELEVISION +1-1089-12020:RTL 2 +1-1089-12040:SUPER RTL +1-1089-12060:VOX +1-1089-12080:RTL SHOP +1-1089-12085:RTL AUSTRIA +1-1090-8501:FRANCE5 +1-1090-8505:BLOOMBERG TV +1-1090-8506:LCP +1-1090-8529:RIRE ET CHANSONS +1-1090-8536:NRJ +1-1090-8537:EUROPE 2 +1-1090-8544:VIBRATION +1-1090-8545:CONTACT FM +1-1090-8548:CHERIE FM +1-1090-8549:ALOUETTE +1-1090-8550:VOLTAGE +1-1090-8552:ADO FM +1-1090-8553:RSR COULEUR 3 +1-1090-8559:MEDIA TROPICAL +1-1091-28640:MTV 2 POP CHANNEL +1-1091-28800:RTL AUSTRIA +1-1091-28805:VOX AUSTRIA +1-1091-28810:RTL 2 AUSTRIA +1-1091-28815:SUPER RTL AUSTRIA +1-1091-31210:BTV +1-1091-31230:TV6 +1-1094-17020:AB MOTEURS +1-1094-12021:AB1 +1-1094-17022:ANIMAUX +1-1094-17024:ZIK +1-1094-17027:BBC WORLD +1-1094-17028:RFM-TV +1-1094-17029:FASHION TV +1-1094-17030:ACTION +1-1094-17032:CINE BOX +1-1096-8612:CANAL CLUB +1-1096-8613:BEUR TV +1-1099-20312:ANIMAL PLANET +1-1099-20316:FOX KIDS +1-1099-20319:HALLMARK +1-1101-28106:DAS ERSTE +1-1101-28107:BAYERISCHES FERNSEHEN +1-1101-28108:HESSEN FERNSEHEN +1-1101-28109:ARTE +1-1101-28110:SR FERNSEHEN SW +1-1101-28111:WDR +1-1101-28112:BR-ALPHA +1-1101-28113:SUEDWEST FS BW +1-1101-28114:PHOENIX +1-1101-28120:BAYERN4 KLASSIK +1-1101-28121:B5 AKTUELL +1-1101-28122:HR SKYLINE +1-1101-28123:HR2 +1-1101-28124:HR KLASSIK +1-1101-28125:YOU FM +1-1101-28126:BAYERN1 +1-1101-28127:NDR INFO +1-1101-28128:NORDWEST RADIO +1-1101-28129:SR 1 +1-1108-3994:RTL TELE LETZEBURG +1-1108-12100:QVC GERMANY +1-1108-12120:VIVA PLUS +1-1108-12160:BLOOMBERG TV +1-1110-9301:FESTIVAL +1-1110-9302:HISTOIRE +1-1110-9307:LIVE 1 +1-1111-7268:OTTO SHOP +1-1112-3982:RTBF SAT +1-1112-12199:LIBERTY TV +1-1112-12200:CNBC EUROPE +1-1112-12240:TV5 EUROPE +1-1112-12280:LIBERTY TV +1-1112-12301:TV6 +1-1112-12320:WISHLINE +1-1112-12340:BBC WORLD +1-1112-12341:CFN RFC +1-1113-12600:BAHN TV +1-1113-12601:K-TV +1-1113-12602:XXP +1-1113-12614:RHEIN MAIN TV +1-1113-12650:RADIO MARIA +1-1113-12660:HITRADIO FFH +1-1113-12661:PLANET RADIO +1-1113-12662:HARMONY FM +1-1114-8906:DISNEY CHANNEL +1-1114-8907:PLAYHOUSE DISNEY +1-1114-8910:MOTORS TV +1-1116-12730:N-TV +1-1116-12732:VIVA +1-1116-12750:HOERZU DIGITAL +1-1117-13001:ORF 1 +1-1117-13002:ORF 2 +1-1117-13003:ORF 2 WIEN +1-1117-13004:ORF 2 NIEDEROESTERREICH +1-1117-13005:ORF 2 BURGENLAND +1-1117-13006:ORF 2 OBEROESTERREICH +1-1117-13007:ORF 2 SALZBURG +1-1117-13008:ORF 2 TIROL +1-1117-13009:ORF 2 VORARLBERG +1-1117-13010:ORF 2 STEIERMARK +1-1117-13011:ORF 2 KAERNTEN +1-1117-13012:ATVPLUS +1-1117-13013:TW1 +1-1117-13021:OESTERREICH 1 +1-1117-13033:OESTERREICH 3 +1-1117-13034:FM4 +1-1201-28305:WDR +1-1201-28306:WDR +1-1201-28307:WDR +1-1201-28308:WDR +1-1201-28309:WDR +1-1201-28310:WDR +1-1201-28311:WDR +1-1201-28312:WDR +1-1279-20321:EUROSPORT +1-1279-20322:MTV CENTRAL +1-1279-20323:HALLMARK +1-1279-20328:BBC PRIME +53-1097-2004:RTL4 +53-1097-2005:RTL5 +53-1097-2020:ANIMAL PLANET +53-1097-2025:EUROSPORT +53-1097-2030:BBC PRIME +53-1097-2035:HALLMARK +53-1097-2051:RTL RADIO +53-1105-4009:X-ZONE +53-1105-4011:NED1 +53-1105-4012:NED2 +53-1105-4013:NED3 +53-1105-4020:YAM FM +53-1105-4030:RTL FM +53-1109-5004:NET5 +53-1109-5005:SBS6 +53-1109-5015:TMF +53-1109-5025:BVN +53-1109-5050:YORIN FM +53-1109-5055:KINK FM +53-1109-5070:SKY RADIO NL +53-1109-5072:RADIO 538 +53-1109-5085:RADIO 10 GOLD +53-1109-5095:VERONICA RADIO +133-1-15:CLASSICA +133-1-21:BEATE-UHSE.TV +133-1-22:HEIMATKANAL +133-1-212:PREMIERE DIREKT 3 +133-1-518:GOLDSTAR TV +133-1-778:PREMIERE EROTIK 1 +133-1-779:PREMIERE EROTIK 2 +133-2-8:PREMIERE START +133-2-9:PREMIERE4 +133-2-10:PREMIERE1 +133-2-11:PREMIERE2 +133-2-20:PREMIERE7 +133-2-29:REMIERE5 +133-2-41:PREMIERE6 +133-2-43:PREMIERE3 +133-3-17:PREMIERE SPORT1 +133-3-240:PREMIERE DIREKT 1 +133-3-241:PREMIERE DIREKT 1 +133-3-242:PREMIERE DIREKT 1 +133-3-243:PREMIERE DIREKT 2 +133-3-244:PREMIERE DIREKT 2 +133-3-245:PREMIERE DIREKT 2 +133-4-16:PREMIERE SERIE +133-4-18:PREMIERE DIREKT PORTAL +133-4-23:PREMIERE KRIMI +133-4-27:PREMIERE SPORT2 +133-4-208:PREMIERE DIREKT 2 +133-4-209:PREMIERE DIREKT 3 +133-4-210:PREMIERE DIREKT 3 +133-4-513:PREMIERE EROTIK +133-4-516:PREMIERE NOSTALGIE +133-7-48:SAT1 SCHWEIZ +133-7-53:PREMIERE AUSTRIA +133-7-54:LASTMINUTE +133-7-160:ROCK ANTENNE +133-7-161:ERF RADIO +133-7-169:SUNSHINE LIVE +133-7-170:ANTENNE BAYERN +133-7-514:ONTV +133-7-769:TV TRAVEL SHOP +133-7-772:TV BERLIN +133-7-775:FRANKEN SAT +133-17-12:ANIMAL PLANET +133-17-13:PLANET +133-17-14:DISCOVERY CHANNEL +133-17-19:JUNIOR +133-17-28:FOX KIDS +133-17-34:DISNEY CHANNEL +133-17-42:13TH STREET +133-17-211:PREMIERE DIREKT 3 +133-17-515:MGM +133-33-32:SONNENKLAR TV +133-33-40:HSE24 +133-33-46:SAT1 +133-33-47:N24 +133-33-51:TELE 5 +133-33-897:NEUN LIVE +133-33-898:PRO SIEBEN +133-33-899:KABEL 1 +133-33-900:DSF +8468-258-11:RBB BRANDENBURG +8468-258-12:RBB BERLIN +8468-258-13:PHOENIX +8468-258-14:DAS ERSTE +8468-514-514:ZDF +8468-514-515:ZDF INFO-3SAT +8468-514-517:ZDF DOKU-KIKA +8468-769-16394:KABEL 1 +8468-769-16398:N24 +8468-769-16403:PRO SIEBEN +8468-769-16408:SAT1 +8468-771-16624:PRO SIEBEN +8468-773-16405:RTL TELEVISION +8468-773-16406:RTL 2 +8468-773-16411:SUPER RTL +8468-773-16418:VOX +8468-774-16392:DSF +8468-774-16401:NEUN LIVE +8468-774-16417:VIVA PLUS +8468-774-16420:EUROSPORT +8468-2561-128:DAS ERSTE +8468-2561-2:ARTE +8468-2561-3:PHOENIX +8468-2561-4:EXTRA 1 +8468-2818-16405:RTL TELEVISION +8468-2818-16406:RTL 2 +8468-2818-16411:SUPER RTL +8468-2818-16418:VOX +8468-3074-16394:KABEL 1 +8468-3074-16398:N24 +8468-3074-16403:PRO SIEBEN +8468-3074-16408:SAT1 +8468-514-514:ZDF +8468-514-515:ZDF INFO-3SAT +8468-514-517:ZDF DOKU-KIKA +8468-5633-100:MDR FERNSEHEN +8468-5633-131:NDR FERNSEHEN SH +8468-5633-262:WDR +8468-5633-34:BAYERISCHES FERNSEHEN +8468-5889-16401:NEUN LIVE +8468-5889-16413:TELE 5 +8468-5889-16420:EUROSPORT +61441-10000-50110:1-2-3 TV +61441-10000-53001:BBC WORLD +61441-10000-53002:TELE 5 +61441-10000-53004:BLOOMBERG TV +61441-10000-53005:MTV +61441-10000-53006:NICK +61441-10000-53007:TV 5 +61441-10002-50106:SCIFI +61441-10002-50702:SAILING CHANNEL +61441-10002-50703:MTV DANCE +61441-10002-50704:MTV HITS +61441-10002-50705:K-TV +61441-10002-50706:GAMES TV +61441-10002-50707:PLAYBOY TV +61441-10002-50708:NATIONAL GEOGRAPHIC +61441-10002-50709:DISNEY PLAYHOUSE +61441-10002-50710:DISNEY TOON +1 +61441-10002-53401:SPIEGEL TV XXP +61441-10003-50102:MOTORS TV +61441-10003-50103:TRACE TV +61441-10003-50105:PLANET +61441-10003-50108:KINOWELT +61441-10003-50109:WETTER FERNSEHEN +61441-10003-50111:GUTE LAUNE TV +61441-10003-53301:HISTORY CHANNEL +61441-10003-53302:TV GUSTO +61441-10004-53403:BIBEL TV +61441-10004-53406:BBC PRIME +61441-10004-53409:EXTREME SPORTS +61441-10005-50101:FASHION TV +61441-10005-50104:E ENTERTAINMENT +61441-10005-50107:13TH STREET +61441-10005-50301:ESPN CLASSIC SPORT +61441-10005-50302:VH1 CLASSIC +61441-10005-50303:WEIN TV +61441-10005-50304:AXN +61441-10005-50305:SILVERLINE +61441-10005-50306:NASN +61441-10005-50307:DISNEY TOON + diff --git a/graphlcd/logos/1-2-3 TV_l.glcd b/graphlcd/logos/1-2-3 TV_l.glcd new file mode 100644 index 0000000..ddb538f Binary files /dev/null and b/graphlcd/logos/1-2-3 TV_l.glcd differ diff --git a/graphlcd/logos/123SAT_l.glcd b/graphlcd/logos/123SAT_l.glcd new file mode 100644 index 0000000..84ed40f Binary files /dev/null and b/graphlcd/logos/123SAT_l.glcd differ diff --git a/graphlcd/logos/13TH STREET_l.glcd b/graphlcd/logos/13TH STREET_l.glcd new file mode 100644 index 0000000..6c1186e Binary files /dev/null and b/graphlcd/logos/13TH STREET_l.glcd differ diff --git a/graphlcd/logos/13TH STREET_m.glcd b/graphlcd/logos/13TH STREET_m.glcd new file mode 100644 index 0000000..99967b7 Binary files /dev/null and b/graphlcd/logos/13TH STREET_m.glcd differ diff --git a/graphlcd/logos/2M MAROC_m.glcd b/graphlcd/logos/2M MAROC_m.glcd new file mode 100644 index 0000000..07b58c7 Binary files /dev/null and b/graphlcd/logos/2M MAROC_m.glcd differ diff --git a/graphlcd/logos/3NET_l.glcd b/graphlcd/logos/3NET_l.glcd new file mode 100644 index 0000000..373524f Binary files /dev/null and b/graphlcd/logos/3NET_l.glcd differ diff --git a/graphlcd/logos/3NET_m.glcd b/graphlcd/logos/3NET_m.glcd new file mode 100644 index 0000000..c3c3d15 Binary files /dev/null and b/graphlcd/logos/3NET_m.glcd differ diff --git a/graphlcd/logos/3SAT_l.glcd b/graphlcd/logos/3SAT_l.glcd new file mode 100644 index 0000000..2e6a090 Binary files /dev/null and b/graphlcd/logos/3SAT_l.glcd differ diff --git a/graphlcd/logos/3SAT_m.glcd b/graphlcd/logos/3SAT_m.glcd new file mode 100644 index 0000000..0e36114 Binary files /dev/null and b/graphlcd/logos/3SAT_m.glcd differ diff --git a/graphlcd/logos/40 TV_m.glcd b/graphlcd/logos/40 TV_m.glcd new file mode 100644 index 0000000..d5b2b32 Binary files /dev/null and b/graphlcd/logos/40 TV_m.glcd differ diff --git a/graphlcd/logos/AB MOTEURS_l.glcd b/graphlcd/logos/AB MOTEURS_l.glcd new file mode 100644 index 0000000..30cd306 Binary files /dev/null and b/graphlcd/logos/AB MOTEURS_l.glcd differ diff --git a/graphlcd/logos/AB MOTEURS_m.glcd b/graphlcd/logos/AB MOTEURS_m.glcd new file mode 100644 index 0000000..295a143 Binary files /dev/null and b/graphlcd/logos/AB MOTEURS_m.glcd differ diff --git a/graphlcd/logos/AB1_l.glcd b/graphlcd/logos/AB1_l.glcd new file mode 100644 index 0000000..5512b78 Binary files /dev/null and b/graphlcd/logos/AB1_l.glcd differ diff --git a/graphlcd/logos/AB1_m.glcd b/graphlcd/logos/AB1_m.glcd new file mode 100644 index 0000000..8dbea74 Binary files /dev/null and b/graphlcd/logos/AB1_m.glcd differ diff --git a/graphlcd/logos/ACTION_m.glcd b/graphlcd/logos/ACTION_m.glcd new file mode 100644 index 0000000..202f153 Binary files /dev/null and b/graphlcd/logos/ACTION_m.glcd differ diff --git a/graphlcd/logos/ADO FM_l.glcd b/graphlcd/logos/ADO FM_l.glcd new file mode 100644 index 0000000..de4b32c Binary files /dev/null and b/graphlcd/logos/ADO FM_l.glcd differ diff --git a/graphlcd/logos/ADO FM_m.glcd b/graphlcd/logos/ADO FM_m.glcd new file mode 100644 index 0000000..8c0b06c Binary files /dev/null and b/graphlcd/logos/ADO FM_m.glcd differ diff --git a/graphlcd/logos/AL JAZEERA_l.glcd b/graphlcd/logos/AL JAZEERA_l.glcd new file mode 100644 index 0000000..76ba7c8 Binary files /dev/null and b/graphlcd/logos/AL JAZEERA_l.glcd differ diff --git a/graphlcd/logos/AL JAZEERA_m.glcd b/graphlcd/logos/AL JAZEERA_m.glcd new file mode 100644 index 0000000..54132b6 Binary files /dev/null and b/graphlcd/logos/AL JAZEERA_m.glcd differ diff --git a/graphlcd/logos/ALGERIE_l.glcd b/graphlcd/logos/ALGERIE_l.glcd new file mode 100644 index 0000000..941578e Binary files /dev/null and b/graphlcd/logos/ALGERIE_l.glcd differ diff --git a/graphlcd/logos/ALGERIE_m.glcd b/graphlcd/logos/ALGERIE_m.glcd new file mode 100644 index 0000000..387c98f Binary files /dev/null and b/graphlcd/logos/ALGERIE_m.glcd differ diff --git a/graphlcd/logos/ALOUETTE_l.glcd b/graphlcd/logos/ALOUETTE_l.glcd new file mode 100644 index 0000000..03f5cc4 Binary files /dev/null and b/graphlcd/logos/ALOUETTE_l.glcd differ diff --git a/graphlcd/logos/ALOUETTE_m.glcd b/graphlcd/logos/ALOUETTE_m.glcd new file mode 100644 index 0000000..e1b8c38 Binary files /dev/null and b/graphlcd/logos/ALOUETTE_m.glcd differ diff --git a/graphlcd/logos/ANIMAL PLANET_l.glcd b/graphlcd/logos/ANIMAL PLANET_l.glcd new file mode 100644 index 0000000..bf7bf4b Binary files /dev/null and b/graphlcd/logos/ANIMAL PLANET_l.glcd differ diff --git a/graphlcd/logos/ANIMAL PLANET_m.glcd b/graphlcd/logos/ANIMAL PLANET_m.glcd new file mode 100644 index 0000000..7c5cf8f Binary files /dev/null and b/graphlcd/logos/ANIMAL PLANET_m.glcd differ diff --git a/graphlcd/logos/ANIMAUX_l.glcd b/graphlcd/logos/ANIMAUX_l.glcd new file mode 100644 index 0000000..da5b6a5 Binary files /dev/null and b/graphlcd/logos/ANIMAUX_l.glcd differ diff --git a/graphlcd/logos/ANTENNE BAYERN_l.glcd b/graphlcd/logos/ANTENNE BAYERN_l.glcd new file mode 100644 index 0000000..b38bfaf Binary files /dev/null and b/graphlcd/logos/ANTENNE BAYERN_l.glcd differ diff --git a/graphlcd/logos/ANTENNE BAYERN_m.glcd b/graphlcd/logos/ANTENNE BAYERN_m.glcd new file mode 100644 index 0000000..2bca2b4 Binary files /dev/null and b/graphlcd/logos/ANTENNE BAYERN_m.glcd differ diff --git a/graphlcd/logos/ANTENNE BAYERN_v2_m.glcd b/graphlcd/logos/ANTENNE BAYERN_v2_m.glcd new file mode 100644 index 0000000..9ca0433 Binary files /dev/null and b/graphlcd/logos/ANTENNE BAYERN_v2_m.glcd differ diff --git a/graphlcd/logos/ARTE_l.glcd b/graphlcd/logos/ARTE_l.glcd new file mode 100644 index 0000000..c2f575e Binary files /dev/null and b/graphlcd/logos/ARTE_l.glcd differ diff --git a/graphlcd/logos/ARTE_m.glcd b/graphlcd/logos/ARTE_m.glcd new file mode 100644 index 0000000..ca150b1 Binary files /dev/null and b/graphlcd/logos/ARTE_m.glcd differ diff --git a/graphlcd/logos/ATVPLUS_l.glcd b/graphlcd/logos/ATVPLUS_l.glcd new file mode 100644 index 0000000..6751fc1 Binary files /dev/null and b/graphlcd/logos/ATVPLUS_l.glcd differ diff --git a/graphlcd/logos/ATVPLUS_m.glcd b/graphlcd/logos/ATVPLUS_m.glcd new file mode 100644 index 0000000..a5bc829 Binary files /dev/null and b/graphlcd/logos/ATVPLUS_m.glcd differ diff --git a/graphlcd/logos/AXN_l.glcd b/graphlcd/logos/AXN_l.glcd new file mode 100644 index 0000000..8eb1880 Binary files /dev/null and b/graphlcd/logos/AXN_l.glcd differ diff --git a/graphlcd/logos/AXN_m.glcd b/graphlcd/logos/AXN_m.glcd new file mode 100644 index 0000000..ddfd81a Binary files /dev/null and b/graphlcd/logos/AXN_m.glcd differ diff --git a/graphlcd/logos/B5 AKTUELL_l.glcd b/graphlcd/logos/B5 AKTUELL_l.glcd new file mode 100644 index 0000000..95830b7 Binary files /dev/null and b/graphlcd/logos/B5 AKTUELL_l.glcd differ diff --git a/graphlcd/logos/B5 AKTUELL_m.glcd b/graphlcd/logos/B5 AKTUELL_m.glcd new file mode 100644 index 0000000..6c8a481 Binary files /dev/null and b/graphlcd/logos/B5 AKTUELL_m.glcd differ diff --git a/graphlcd/logos/B5 AKTUELL_v2_m.glcd b/graphlcd/logos/B5 AKTUELL_v2_m.glcd new file mode 100644 index 0000000..554903a Binary files /dev/null and b/graphlcd/logos/B5 AKTUELL_v2_m.glcd differ diff --git a/graphlcd/logos/BAHN TV_l.glcd b/graphlcd/logos/BAHN TV_l.glcd new file mode 100644 index 0000000..bf92d26 Binary files /dev/null and b/graphlcd/logos/BAHN TV_l.glcd differ diff --git a/graphlcd/logos/BAHN TV_m.glcd b/graphlcd/logos/BAHN TV_m.glcd new file mode 100644 index 0000000..cef8da8 Binary files /dev/null and b/graphlcd/logos/BAHN TV_m.glcd differ diff --git a/graphlcd/logos/BAHN TV_v2_m.glcd b/graphlcd/logos/BAHN TV_v2_m.glcd new file mode 100644 index 0000000..fea2765 Binary files /dev/null and b/graphlcd/logos/BAHN TV_v2_m.glcd differ diff --git a/graphlcd/logos/BAYERISCHES FERNSEHEN_l.glcd b/graphlcd/logos/BAYERISCHES FERNSEHEN_l.glcd new file mode 100644 index 0000000..c0b93e6 Binary files /dev/null and b/graphlcd/logos/BAYERISCHES FERNSEHEN_l.glcd differ diff --git a/graphlcd/logos/BAYERISCHES FERNSEHEN_m.glcd b/graphlcd/logos/BAYERISCHES FERNSEHEN_m.glcd new file mode 100644 index 0000000..a224e95 Binary files /dev/null and b/graphlcd/logos/BAYERISCHES FERNSEHEN_m.glcd differ diff --git a/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_l.glcd b/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_l.glcd new file mode 100644 index 0000000..ad7d919 Binary files /dev/null and b/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_l.glcd differ diff --git a/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_m.glcd b/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_m.glcd new file mode 100644 index 0000000..9b6b4f2 Binary files /dev/null and b/graphlcd/logos/BAYERISCHES FERNSEHEN_v2_m.glcd differ diff --git a/graphlcd/logos/BAYERN1_l.glcd b/graphlcd/logos/BAYERN1_l.glcd new file mode 100644 index 0000000..e308876 Binary files /dev/null and b/graphlcd/logos/BAYERN1_l.glcd differ diff --git a/graphlcd/logos/BAYERN1_m.glcd b/graphlcd/logos/BAYERN1_m.glcd new file mode 100644 index 0000000..e3bf771 Binary files /dev/null and b/graphlcd/logos/BAYERN1_m.glcd differ diff --git a/graphlcd/logos/BAYERN4 KLASSIK_l.glcd b/graphlcd/logos/BAYERN4 KLASSIK_l.glcd new file mode 100644 index 0000000..72670c2 Binary files /dev/null and b/graphlcd/logos/BAYERN4 KLASSIK_l.glcd differ diff --git a/graphlcd/logos/BAYERN4 KLASSIK_m.glcd b/graphlcd/logos/BAYERN4 KLASSIK_m.glcd new file mode 100644 index 0000000..d6d720d Binary files /dev/null and b/graphlcd/logos/BAYERN4 KLASSIK_m.glcd differ diff --git a/graphlcd/logos/BBC PRIME_l.glcd b/graphlcd/logos/BBC PRIME_l.glcd new file mode 100644 index 0000000..c53afba Binary files /dev/null and b/graphlcd/logos/BBC PRIME_l.glcd differ diff --git a/graphlcd/logos/BBC PRIME_m.glcd b/graphlcd/logos/BBC PRIME_m.glcd new file mode 100644 index 0000000..0ea7b4d Binary files /dev/null and b/graphlcd/logos/BBC PRIME_m.glcd differ diff --git a/graphlcd/logos/BBC WORLD_l.glcd b/graphlcd/logos/BBC WORLD_l.glcd new file mode 100644 index 0000000..8c4c191 Binary files /dev/null and b/graphlcd/logos/BBC WORLD_l.glcd differ diff --git a/graphlcd/logos/BBC WORLD_m.glcd b/graphlcd/logos/BBC WORLD_m.glcd new file mode 100644 index 0000000..71b132f Binary files /dev/null and b/graphlcd/logos/BBC WORLD_m.glcd differ diff --git a/graphlcd/logos/BBC WORLD_v2_l.glcd b/graphlcd/logos/BBC WORLD_v2_l.glcd new file mode 100644 index 0000000..ccf90a2 Binary files /dev/null and b/graphlcd/logos/BBC WORLD_v2_l.glcd differ diff --git a/graphlcd/logos/BBC WORLD_v2_m.glcd b/graphlcd/logos/BBC WORLD_v2_m.glcd new file mode 100644 index 0000000..7c52215 Binary files /dev/null and b/graphlcd/logos/BBC WORLD_v2_m.glcd differ diff --git a/graphlcd/logos/BEATE-UHSE.TV_l.glcd b/graphlcd/logos/BEATE-UHSE.TV_l.glcd new file mode 100644 index 0000000..0040c04 Binary files /dev/null and b/graphlcd/logos/BEATE-UHSE.TV_l.glcd differ diff --git a/graphlcd/logos/BEATE-UHSE.TV_m.glcd b/graphlcd/logos/BEATE-UHSE.TV_m.glcd new file mode 100644 index 0000000..40a8589 Binary files /dev/null and b/graphlcd/logos/BEATE-UHSE.TV_m.glcd differ diff --git a/graphlcd/logos/BEATE-UHSE.TV_v2_l.glcd b/graphlcd/logos/BEATE-UHSE.TV_v2_l.glcd new file mode 100644 index 0000000..7981193 Binary files /dev/null and b/graphlcd/logos/BEATE-UHSE.TV_v2_l.glcd differ diff --git a/graphlcd/logos/BEUR TV_l.glcd b/graphlcd/logos/BEUR TV_l.glcd new file mode 100644 index 0000000..314a4b0 Binary files /dev/null and b/graphlcd/logos/BEUR TV_l.glcd differ diff --git a/graphlcd/logos/BEUR TV_m.glcd b/graphlcd/logos/BEUR TV_m.glcd new file mode 100644 index 0000000..3caa32d Binary files /dev/null and b/graphlcd/logos/BEUR TV_m.glcd differ diff --git a/graphlcd/logos/BEUR TV_v2_m.glcd b/graphlcd/logos/BEUR TV_v2_m.glcd new file mode 100644 index 0000000..07f548e Binary files /dev/null and b/graphlcd/logos/BEUR TV_v2_m.glcd differ diff --git a/graphlcd/logos/BIBEL TV_l.glcd b/graphlcd/logos/BIBEL TV_l.glcd new file mode 100644 index 0000000..3b62042 Binary files /dev/null and b/graphlcd/logos/BIBEL TV_l.glcd differ diff --git a/graphlcd/logos/BIBEL TV_m.glcd b/graphlcd/logos/BIBEL TV_m.glcd new file mode 100644 index 0000000..30967af Binary files /dev/null and b/graphlcd/logos/BIBEL TV_m.glcd differ diff --git a/graphlcd/logos/BIBEL TV_v2_m.glcd b/graphlcd/logos/BIBEL TV_v2_m.glcd new file mode 100644 index 0000000..c9d9045 Binary files /dev/null and b/graphlcd/logos/BIBEL TV_v2_m.glcd differ diff --git a/graphlcd/logos/BLOOMBERG TV_l.glcd b/graphlcd/logos/BLOOMBERG TV_l.glcd new file mode 100644 index 0000000..f693de2 Binary files /dev/null and b/graphlcd/logos/BLOOMBERG TV_l.glcd differ diff --git a/graphlcd/logos/BLOOMBERG TV_m.glcd b/graphlcd/logos/BLOOMBERG TV_m.glcd new file mode 100644 index 0000000..22dc275 Binary files /dev/null and b/graphlcd/logos/BLOOMBERG TV_m.glcd differ diff --git a/graphlcd/logos/BR-ALPHA_l.glcd b/graphlcd/logos/BR-ALPHA_l.glcd new file mode 100644 index 0000000..89f455a Binary files /dev/null and b/graphlcd/logos/BR-ALPHA_l.glcd differ diff --git a/graphlcd/logos/BR-ALPHA_m.glcd b/graphlcd/logos/BR-ALPHA_m.glcd new file mode 100644 index 0000000..9b48f64 Binary files /dev/null and b/graphlcd/logos/BR-ALPHA_m.glcd differ diff --git a/graphlcd/logos/BR-ALPHA_v2_l.glcd b/graphlcd/logos/BR-ALPHA_v2_l.glcd new file mode 100644 index 0000000..bcb323b Binary files /dev/null and b/graphlcd/logos/BR-ALPHA_v2_l.glcd differ diff --git a/graphlcd/logos/BR-ALPHA_v2_m.glcd b/graphlcd/logos/BR-ALPHA_v2_m.glcd new file mode 100644 index 0000000..9c1fa3d Binary files /dev/null and b/graphlcd/logos/BR-ALPHA_v2_m.glcd differ diff --git a/graphlcd/logos/BR-ALPHA_v3_m.glcd b/graphlcd/logos/BR-ALPHA_v3_m.glcd new file mode 100644 index 0000000..6de0d94 Binary files /dev/null and b/graphlcd/logos/BR-ALPHA_v3_m.glcd differ diff --git a/graphlcd/logos/BTV4_l.glcd b/graphlcd/logos/BTV4_l.glcd new file mode 100644 index 0000000..e82ca00 Binary files /dev/null and b/graphlcd/logos/BTV4_l.glcd differ diff --git a/graphlcd/logos/BTV4_m.glcd b/graphlcd/logos/BTV4_m.glcd new file mode 100644 index 0000000..4d5e9da Binary files /dev/null and b/graphlcd/logos/BTV4_m.glcd differ diff --git a/graphlcd/logos/BTV4_v2_l.glcd b/graphlcd/logos/BTV4_v2_l.glcd new file mode 100644 index 0000000..c059759 Binary files /dev/null and b/graphlcd/logos/BTV4_v2_l.glcd differ diff --git a/graphlcd/logos/BTV_l.glcd b/graphlcd/logos/BTV_l.glcd new file mode 100644 index 0000000..ffdf278 Binary files /dev/null and b/graphlcd/logos/BTV_l.glcd differ diff --git a/graphlcd/logos/BTV_m.glcd b/graphlcd/logos/BTV_m.glcd new file mode 100644 index 0000000..f270770 Binary files /dev/null and b/graphlcd/logos/BTV_m.glcd differ diff --git a/graphlcd/logos/BVN_l.glcd b/graphlcd/logos/BVN_l.glcd new file mode 100644 index 0000000..c8df29a Binary files /dev/null and b/graphlcd/logos/BVN_l.glcd differ diff --git a/graphlcd/logos/BVN_m.glcd b/graphlcd/logos/BVN_m.glcd new file mode 100644 index 0000000..132502b Binary files /dev/null and b/graphlcd/logos/BVN_m.glcd differ diff --git a/graphlcd/logos/BVN_v2_m.glcd b/graphlcd/logos/BVN_v2_m.glcd new file mode 100644 index 0000000..014673e Binary files /dev/null and b/graphlcd/logos/BVN_v2_m.glcd differ diff --git a/graphlcd/logos/CADENA DIAL_l.glcd b/graphlcd/logos/CADENA DIAL_l.glcd new file mode 100644 index 0000000..7cf6255 Binary files /dev/null and b/graphlcd/logos/CADENA DIAL_l.glcd differ diff --git a/graphlcd/logos/CADENA DIAL_m.glcd b/graphlcd/logos/CADENA DIAL_m.glcd new file mode 100644 index 0000000..b2ec34a Binary files /dev/null and b/graphlcd/logos/CADENA DIAL_m.glcd differ diff --git a/graphlcd/logos/CANAL 24 HORAS_l.glcd b/graphlcd/logos/CANAL 24 HORAS_l.glcd new file mode 100644 index 0000000..d725461 Binary files /dev/null and b/graphlcd/logos/CANAL 24 HORAS_l.glcd differ diff --git a/graphlcd/logos/CANAL 24 HORAS_m.glcd b/graphlcd/logos/CANAL 24 HORAS_m.glcd new file mode 100644 index 0000000..a71b55e Binary files /dev/null and b/graphlcd/logos/CANAL 24 HORAS_m.glcd differ diff --git a/graphlcd/logos/CANAL CANARIAS_l.glcd b/graphlcd/logos/CANAL CANARIAS_l.glcd new file mode 100644 index 0000000..2c0f53d Binary files /dev/null and b/graphlcd/logos/CANAL CANARIAS_l.glcd differ diff --git a/graphlcd/logos/CANAL CANARIAS_m.glcd b/graphlcd/logos/CANAL CANARIAS_m.glcd new file mode 100644 index 0000000..5870208 Binary files /dev/null and b/graphlcd/logos/CANAL CANARIAS_m.glcd differ diff --git a/graphlcd/logos/CANAL CANARIAS_v2_m.glcd b/graphlcd/logos/CANAL CANARIAS_v2_m.glcd new file mode 100644 index 0000000..f6b64c8 Binary files /dev/null and b/graphlcd/logos/CANAL CANARIAS_v2_m.glcd differ diff --git a/graphlcd/logos/CANAL CLUB_l.glcd b/graphlcd/logos/CANAL CLUB_l.glcd new file mode 100644 index 0000000..069af7c Binary files /dev/null and b/graphlcd/logos/CANAL CLUB_l.glcd differ diff --git a/graphlcd/logos/CANAL CLUB_m.glcd b/graphlcd/logos/CANAL CLUB_m.glcd new file mode 100644 index 0000000..ba74083 Binary files /dev/null and b/graphlcd/logos/CANAL CLUB_m.glcd differ diff --git a/graphlcd/logos/CANAL CLUB_v2_m.glcd b/graphlcd/logos/CANAL CLUB_v2_m.glcd new file mode 100644 index 0000000..8bafd90 Binary files /dev/null and b/graphlcd/logos/CANAL CLUB_v2_m.glcd differ diff --git a/graphlcd/logos/CANAL+ ...30_m.glcd b/graphlcd/logos/CANAL+ ...30_m.glcd new file mode 100644 index 0000000..eeb7d70 Binary files /dev/null and b/graphlcd/logos/CANAL+ ...30_m.glcd differ diff --git a/graphlcd/logos/CANAL+_m.glcd b/graphlcd/logos/CANAL+_m.glcd new file mode 100644 index 0000000..8e87caf Binary files /dev/null and b/graphlcd/logos/CANAL+_m.glcd differ diff --git a/graphlcd/logos/CARTOON NETWORK_l.glcd b/graphlcd/logos/CARTOON NETWORK_l.glcd new file mode 100644 index 0000000..1d315e0 Binary files /dev/null and b/graphlcd/logos/CARTOON NETWORK_l.glcd differ diff --git a/graphlcd/logos/CARTOON NETWORK_m.glcd b/graphlcd/logos/CARTOON NETWORK_m.glcd new file mode 100644 index 0000000..c5b7b30 Binary files /dev/null and b/graphlcd/logos/CARTOON NETWORK_m.glcd differ diff --git a/graphlcd/logos/CFN RFC_l.glcd b/graphlcd/logos/CFN RFC_l.glcd new file mode 100644 index 0000000..87d510e Binary files /dev/null and b/graphlcd/logos/CFN RFC_l.glcd differ diff --git a/graphlcd/logos/CFN RFC_m.glcd b/graphlcd/logos/CFN RFC_m.glcd new file mode 100644 index 0000000..94ed328 Binary files /dev/null and b/graphlcd/logos/CFN RFC_m.glcd differ diff --git a/graphlcd/logos/CHERIE FM_l.glcd b/graphlcd/logos/CHERIE FM_l.glcd new file mode 100644 index 0000000..d227f27 Binary files /dev/null and b/graphlcd/logos/CHERIE FM_l.glcd differ diff --git a/graphlcd/logos/CHERIE FM_m.glcd b/graphlcd/logos/CHERIE FM_m.glcd new file mode 100644 index 0000000..fc14a17 Binary files /dev/null and b/graphlcd/logos/CHERIE FM_m.glcd differ diff --git a/graphlcd/logos/CHRONOS_l.glcd b/graphlcd/logos/CHRONOS_l.glcd new file mode 100644 index 0000000..67d8418 Binary files /dev/null and b/graphlcd/logos/CHRONOS_l.glcd differ diff --git a/graphlcd/logos/CHRONOS_m.glcd b/graphlcd/logos/CHRONOS_m.glcd new file mode 100644 index 0000000..ec0fe09 Binary files /dev/null and b/graphlcd/logos/CHRONOS_m.glcd differ diff --git a/graphlcd/logos/CINE BOX_m.glcd b/graphlcd/logos/CINE BOX_m.glcd new file mode 100644 index 0000000..442f234 Binary files /dev/null and b/graphlcd/logos/CINE BOX_m.glcd differ diff --git a/graphlcd/logos/CLASSICA_l.glcd b/graphlcd/logos/CLASSICA_l.glcd new file mode 100644 index 0000000..f241e7b Binary files /dev/null and b/graphlcd/logos/CLASSICA_l.glcd differ diff --git a/graphlcd/logos/CLASSICA_m.glcd b/graphlcd/logos/CLASSICA_m.glcd new file mode 100644 index 0000000..e2f174f Binary files /dev/null and b/graphlcd/logos/CLASSICA_m.glcd differ diff --git a/graphlcd/logos/CLUB TELEACHAT_l.glcd b/graphlcd/logos/CLUB TELEACHAT_l.glcd new file mode 100644 index 0000000..50a260d Binary files /dev/null and b/graphlcd/logos/CLUB TELEACHAT_l.glcd differ diff --git a/graphlcd/logos/CLUB TELEACHAT_m.glcd b/graphlcd/logos/CLUB TELEACHAT_m.glcd new file mode 100644 index 0000000..a1ec468 Binary files /dev/null and b/graphlcd/logos/CLUB TELEACHAT_m.glcd differ diff --git a/graphlcd/logos/CLUB TELEACHAT_v2_m.glcd b/graphlcd/logos/CLUB TELEACHAT_v2_m.glcd new file mode 100644 index 0000000..e129033 Binary files /dev/null and b/graphlcd/logos/CLUB TELEACHAT_v2_m.glcd differ diff --git a/graphlcd/logos/CNBC EUROPE_l.glcd b/graphlcd/logos/CNBC EUROPE_l.glcd new file mode 100644 index 0000000..f9ec19f Binary files /dev/null and b/graphlcd/logos/CNBC EUROPE_l.glcd differ diff --git a/graphlcd/logos/CNBC EUROPE_m.glcd b/graphlcd/logos/CNBC EUROPE_m.glcd new file mode 100644 index 0000000..3245855 Binary files /dev/null and b/graphlcd/logos/CNBC EUROPE_m.glcd differ diff --git a/graphlcd/logos/CNBC_l.glcd b/graphlcd/logos/CNBC_l.glcd new file mode 100644 index 0000000..14a2d09 Binary files /dev/null and b/graphlcd/logos/CNBC_l.glcd differ diff --git a/graphlcd/logos/CNBC_m.glcd b/graphlcd/logos/CNBC_m.glcd new file mode 100644 index 0000000..bf88ac7 Binary files /dev/null and b/graphlcd/logos/CNBC_m.glcd differ diff --git a/graphlcd/logos/CNN INT_l.glcd b/graphlcd/logos/CNN INT_l.glcd new file mode 100644 index 0000000..9c9dde6 Binary files /dev/null and b/graphlcd/logos/CNN INT_l.glcd differ diff --git a/graphlcd/logos/CNN INT_m.glcd b/graphlcd/logos/CNN INT_m.glcd new file mode 100644 index 0000000..823483a Binary files /dev/null and b/graphlcd/logos/CNN INT_m.glcd differ diff --git a/graphlcd/logos/CNN+_m.glcd b/graphlcd/logos/CNN+_m.glcd new file mode 100644 index 0000000..fe93af9 Binary files /dev/null and b/graphlcd/logos/CNN+_m.glcd differ diff --git a/graphlcd/logos/CONTACT FM_l.glcd b/graphlcd/logos/CONTACT FM_l.glcd new file mode 100644 index 0000000..39edf44 Binary files /dev/null and b/graphlcd/logos/CONTACT FM_l.glcd differ diff --git a/graphlcd/logos/CONTACT FM_m.glcd b/graphlcd/logos/CONTACT FM_m.glcd new file mode 100644 index 0000000..e67d16a Binary files /dev/null and b/graphlcd/logos/CONTACT FM_m.glcd differ diff --git a/graphlcd/logos/DAS ERSTE_l.glcd b/graphlcd/logos/DAS ERSTE_l.glcd new file mode 100644 index 0000000..dd38c2f Binary files /dev/null and b/graphlcd/logos/DAS ERSTE_l.glcd differ diff --git a/graphlcd/logos/DAS ERSTE_m.glcd b/graphlcd/logos/DAS ERSTE_m.glcd new file mode 100644 index 0000000..95b8549 Binary files /dev/null and b/graphlcd/logos/DAS ERSTE_m.glcd differ diff --git a/graphlcd/logos/DAS ERSTE_v2_l.glcd b/graphlcd/logos/DAS ERSTE_v2_l.glcd new file mode 100644 index 0000000..3fb4ed8 Binary files /dev/null and b/graphlcd/logos/DAS ERSTE_v2_l.glcd differ diff --git a/graphlcd/logos/DAS VIERTE_l.glcd b/graphlcd/logos/DAS VIERTE_l.glcd new file mode 100644 index 0000000..250b7ac Binary files /dev/null and b/graphlcd/logos/DAS VIERTE_l.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDFUNK KOELN_l.glcd b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_l.glcd new file mode 100644 index 0000000..068eb5d Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_l.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDFUNK KOELN_m.glcd b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_m.glcd new file mode 100644 index 0000000..cfcde86 Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_m.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDFUNK KOELN_v2_m.glcd b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_v2_m.glcd new file mode 100644 index 0000000..7907ad2 Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDFUNK KOELN_v2_m.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_l.glcd b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_l.glcd new file mode 100644 index 0000000..2a8e007 Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_l.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_m.glcd b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_m.glcd new file mode 100644 index 0000000..bd35774 Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_m.glcd differ diff --git a/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_v2_m.glcd b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_v2_m.glcd new file mode 100644 index 0000000..19947a2 Binary files /dev/null and b/graphlcd/logos/DEUTSCHLANDRADIO BERLIN_v2_m.glcd differ diff --git a/graphlcd/logos/DISCOVERY CHANNEL_l.glcd b/graphlcd/logos/DISCOVERY CHANNEL_l.glcd new file mode 100644 index 0000000..1871981 Binary files /dev/null and b/graphlcd/logos/DISCOVERY CHANNEL_l.glcd differ diff --git a/graphlcd/logos/DISCOVERY CHANNEL_m.glcd b/graphlcd/logos/DISCOVERY CHANNEL_m.glcd new file mode 100644 index 0000000..fa9b349 Binary files /dev/null and b/graphlcd/logos/DISCOVERY CHANNEL_m.glcd differ diff --git a/graphlcd/logos/DISCOVERY CHANNEL_v2_l.glcd b/graphlcd/logos/DISCOVERY CHANNEL_v2_l.glcd new file mode 100644 index 0000000..cb9518d Binary files /dev/null and b/graphlcd/logos/DISCOVERY CHANNEL_v2_l.glcd differ diff --git a/graphlcd/logos/DISNEY CHANNEL_l.glcd b/graphlcd/logos/DISNEY CHANNEL_l.glcd new file mode 100644 index 0000000..ed63bcf Binary files /dev/null and b/graphlcd/logos/DISNEY CHANNEL_l.glcd differ diff --git a/graphlcd/logos/DISNEY CHANNEL_m.glcd b/graphlcd/logos/DISNEY CHANNEL_m.glcd new file mode 100644 index 0000000..1e8267e Binary files /dev/null and b/graphlcd/logos/DISNEY CHANNEL_m.glcd differ diff --git a/graphlcd/logos/DISNEY CHANNEL_v2_l.glcd b/graphlcd/logos/DISNEY CHANNEL_v2_l.glcd new file mode 100644 index 0000000..cbc7820 Binary files /dev/null and b/graphlcd/logos/DISNEY CHANNEL_v2_l.glcd differ diff --git a/graphlcd/logos/DISNEY PLAYHOUSE_l.glcd b/graphlcd/logos/DISNEY PLAYHOUSE_l.glcd new file mode 100644 index 0000000..778ad44 Binary files /dev/null and b/graphlcd/logos/DISNEY PLAYHOUSE_l.glcd differ diff --git a/graphlcd/logos/DISNEY TOON +1_l.glcd b/graphlcd/logos/DISNEY TOON +1_l.glcd new file mode 100644 index 0000000..5b1c984 Binary files /dev/null and b/graphlcd/logos/DISNEY TOON +1_l.glcd differ diff --git a/graphlcd/logos/DISNEY TOON_l.glcd b/graphlcd/logos/DISNEY TOON_l.glcd new file mode 100644 index 0000000..910501c Binary files /dev/null and b/graphlcd/logos/DISNEY TOON_l.glcd differ diff --git a/graphlcd/logos/DSF_l.glcd b/graphlcd/logos/DSF_l.glcd new file mode 100644 index 0000000..3848a34 Binary files /dev/null and b/graphlcd/logos/DSF_l.glcd differ diff --git a/graphlcd/logos/DSF_m.glcd b/graphlcd/logos/DSF_m.glcd new file mode 100644 index 0000000..4a2c1e8 Binary files /dev/null and b/graphlcd/logos/DSF_m.glcd differ diff --git a/graphlcd/logos/DW-TV_l.glcd b/graphlcd/logos/DW-TV_l.glcd new file mode 100644 index 0000000..5d2c3ef Binary files /dev/null and b/graphlcd/logos/DW-TV_l.glcd differ diff --git a/graphlcd/logos/DW-TV_m.glcd b/graphlcd/logos/DW-TV_m.glcd new file mode 100644 index 0000000..6eb1153 Binary files /dev/null and b/graphlcd/logos/DW-TV_m.glcd differ diff --git a/graphlcd/logos/E ENTERTAINMENT_l.glcd b/graphlcd/logos/E ENTERTAINMENT_l.glcd new file mode 100644 index 0000000..d7cb2ff Binary files /dev/null and b/graphlcd/logos/E ENTERTAINMENT_l.glcd differ diff --git a/graphlcd/logos/EINS EXTRA_l.glcd b/graphlcd/logos/EINS EXTRA_l.glcd new file mode 100644 index 0000000..5d27520 Binary files /dev/null and b/graphlcd/logos/EINS EXTRA_l.glcd differ diff --git a/graphlcd/logos/EINS EXTRA_m.glcd b/graphlcd/logos/EINS EXTRA_m.glcd new file mode 100644 index 0000000..c56e446 Binary files /dev/null and b/graphlcd/logos/EINS EXTRA_m.glcd differ diff --git a/graphlcd/logos/EINS EXTRA_v2_l.glcd b/graphlcd/logos/EINS EXTRA_v2_l.glcd new file mode 100644 index 0000000..0c6c5f5 Binary files /dev/null and b/graphlcd/logos/EINS EXTRA_v2_l.glcd differ diff --git a/graphlcd/logos/EINS EXTRA_v3_l.glcd b/graphlcd/logos/EINS EXTRA_v3_l.glcd new file mode 100644 index 0000000..8d28095 Binary files /dev/null and b/graphlcd/logos/EINS EXTRA_v3_l.glcd differ diff --git a/graphlcd/logos/EINS FESTIVAL_l.glcd b/graphlcd/logos/EINS FESTIVAL_l.glcd new file mode 100644 index 0000000..57377a8 Binary files /dev/null and b/graphlcd/logos/EINS FESTIVAL_l.glcd differ diff --git a/graphlcd/logos/EINS FESTIVAL_m.glcd b/graphlcd/logos/EINS FESTIVAL_m.glcd new file mode 100644 index 0000000..ccec283 Binary files /dev/null and b/graphlcd/logos/EINS FESTIVAL_m.glcd differ diff --git a/graphlcd/logos/EINS FESTIVAL_v2_l.glcd b/graphlcd/logos/EINS FESTIVAL_v2_l.glcd new file mode 100644 index 0000000..c9b7fd4 Binary files /dev/null and b/graphlcd/logos/EINS FESTIVAL_v2_l.glcd differ diff --git a/graphlcd/logos/EINS MUXX_l.glcd b/graphlcd/logos/EINS MUXX_l.glcd new file mode 100644 index 0000000..5ff62b5 Binary files /dev/null and b/graphlcd/logos/EINS MUXX_l.glcd differ diff --git a/graphlcd/logos/EINS MUXX_m.glcd b/graphlcd/logos/EINS MUXX_m.glcd new file mode 100644 index 0000000..8e4beca Binary files /dev/null and b/graphlcd/logos/EINS MUXX_m.glcd differ diff --git a/graphlcd/logos/EINS MUXX_v2_l.glcd b/graphlcd/logos/EINS MUXX_v2_l.glcd new file mode 100644 index 0000000..4669887 Binary files /dev/null and b/graphlcd/logos/EINS MUXX_v2_l.glcd differ diff --git a/graphlcd/logos/ERF RADIO_l.glcd b/graphlcd/logos/ERF RADIO_l.glcd new file mode 100644 index 0000000..ca71505 Binary files /dev/null and b/graphlcd/logos/ERF RADIO_l.glcd differ diff --git a/graphlcd/logos/ERF RADIO_m.glcd b/graphlcd/logos/ERF RADIO_m.glcd new file mode 100644 index 0000000..5b76db4 Binary files /dev/null and b/graphlcd/logos/ERF RADIO_m.glcd differ diff --git a/graphlcd/logos/ESC1-EGYPT_l.glcd b/graphlcd/logos/ESC1-EGYPT_l.glcd new file mode 100644 index 0000000..2a3a7c9 Binary files /dev/null and b/graphlcd/logos/ESC1-EGYPT_l.glcd differ diff --git a/graphlcd/logos/ESPN CLASSIC SPORT_l.glcd b/graphlcd/logos/ESPN CLASSIC SPORT_l.glcd new file mode 100644 index 0000000..6c44801 Binary files /dev/null and b/graphlcd/logos/ESPN CLASSIC SPORT_l.glcd differ diff --git a/graphlcd/logos/ETB SAT_l.glcd b/graphlcd/logos/ETB SAT_l.glcd new file mode 100644 index 0000000..e100d18 Binary files /dev/null and b/graphlcd/logos/ETB SAT_l.glcd differ diff --git a/graphlcd/logos/ETB SAT_m.glcd b/graphlcd/logos/ETB SAT_m.glcd new file mode 100644 index 0000000..5fc3657 Binary files /dev/null and b/graphlcd/logos/ETB SAT_m.glcd differ diff --git a/graphlcd/logos/EURONEWS_l.glcd b/graphlcd/logos/EURONEWS_l.glcd new file mode 100644 index 0000000..ef51c05 Binary files /dev/null and b/graphlcd/logos/EURONEWS_l.glcd differ diff --git a/graphlcd/logos/EURONEWS_m.glcd b/graphlcd/logos/EURONEWS_m.glcd new file mode 100644 index 0000000..85367d1 Binary files /dev/null and b/graphlcd/logos/EURONEWS_m.glcd differ diff --git a/graphlcd/logos/EUROPE 2_l.glcd b/graphlcd/logos/EUROPE 2_l.glcd new file mode 100644 index 0000000..3020976 Binary files /dev/null and b/graphlcd/logos/EUROPE 2_l.glcd differ diff --git a/graphlcd/logos/EUROPE 2_m.glcd b/graphlcd/logos/EUROPE 2_m.glcd new file mode 100644 index 0000000..688bea3 Binary files /dev/null and b/graphlcd/logos/EUROPE 2_m.glcd differ diff --git a/graphlcd/logos/EUROSPORT_l.glcd b/graphlcd/logos/EUROSPORT_l.glcd new file mode 100644 index 0000000..3a929f0 Binary files /dev/null and b/graphlcd/logos/EUROSPORT_l.glcd differ diff --git a/graphlcd/logos/EUROSPORT_m.glcd b/graphlcd/logos/EUROSPORT_m.glcd new file mode 100644 index 0000000..c41f51d Binary files /dev/null and b/graphlcd/logos/EUROSPORT_m.glcd differ diff --git a/graphlcd/logos/EXTRA 1_l.glcd b/graphlcd/logos/EXTRA 1_l.glcd new file mode 100644 index 0000000..694c965 Binary files /dev/null and b/graphlcd/logos/EXTRA 1_l.glcd differ diff --git a/graphlcd/logos/EXTREME SPORTS_l.glcd b/graphlcd/logos/EXTREME SPORTS_l.glcd new file mode 100644 index 0000000..4d43a09 Binary files /dev/null and b/graphlcd/logos/EXTREME SPORTS_l.glcd differ diff --git a/graphlcd/logos/FAB_l.glcd b/graphlcd/logos/FAB_l.glcd new file mode 100644 index 0000000..a048767 Binary files /dev/null and b/graphlcd/logos/FAB_l.glcd differ diff --git a/graphlcd/logos/FAB_m.glcd b/graphlcd/logos/FAB_m.glcd new file mode 100644 index 0000000..3d290ed Binary files /dev/null and b/graphlcd/logos/FAB_m.glcd differ diff --git a/graphlcd/logos/FAB_v2_m.glcd b/graphlcd/logos/FAB_v2_m.glcd new file mode 100644 index 0000000..f964628 Binary files /dev/null and b/graphlcd/logos/FAB_v2_m.glcd differ diff --git a/graphlcd/logos/FASHION TV_l.glcd b/graphlcd/logos/FASHION TV_l.glcd new file mode 100644 index 0000000..bc8e4ec Binary files /dev/null and b/graphlcd/logos/FASHION TV_l.glcd differ diff --git a/graphlcd/logos/FASHION TV_m.glcd b/graphlcd/logos/FASHION TV_m.glcd new file mode 100644 index 0000000..897fd5f Binary files /dev/null and b/graphlcd/logos/FASHION TV_m.glcd differ diff --git a/graphlcd/logos/FASHION TV_v2_m.glcd b/graphlcd/logos/FASHION TV_v2_m.glcd new file mode 100644 index 0000000..7c89848 Binary files /dev/null and b/graphlcd/logos/FASHION TV_v2_m.glcd differ diff --git a/graphlcd/logos/FESTIVAL 1_l.glcd b/graphlcd/logos/FESTIVAL 1_l.glcd new file mode 100644 index 0000000..d3e1b46 Binary files /dev/null and b/graphlcd/logos/FESTIVAL 1_l.glcd differ diff --git a/graphlcd/logos/FESTIVAL_m.glcd b/graphlcd/logos/FESTIVAL_m.glcd new file mode 100644 index 0000000..25fcea3 Binary files /dev/null and b/graphlcd/logos/FESTIVAL_m.glcd differ diff --git a/graphlcd/logos/FM4_l.glcd b/graphlcd/logos/FM4_l.glcd new file mode 100644 index 0000000..af43c43 Binary files /dev/null and b/graphlcd/logos/FM4_l.glcd differ diff --git a/graphlcd/logos/FM4_m.glcd b/graphlcd/logos/FM4_m.glcd new file mode 100644 index 0000000..80b9664 Binary files /dev/null and b/graphlcd/logos/FM4_m.glcd differ diff --git a/graphlcd/logos/FOX KIDS_l.glcd b/graphlcd/logos/FOX KIDS_l.glcd new file mode 100644 index 0000000..faac38a Binary files /dev/null and b/graphlcd/logos/FOX KIDS_l.glcd differ diff --git a/graphlcd/logos/FOX KIDS_m.glcd b/graphlcd/logos/FOX KIDS_m.glcd new file mode 100644 index 0000000..6a681a1 Binary files /dev/null and b/graphlcd/logos/FOX KIDS_m.glcd differ diff --git a/graphlcd/logos/FOX KIDS_v2_l.glcd b/graphlcd/logos/FOX KIDS_v2_l.glcd new file mode 100644 index 0000000..008f6c6 Binary files /dev/null and b/graphlcd/logos/FOX KIDS_v2_l.glcd differ diff --git a/graphlcd/logos/FOX KIDS_v2_m.glcd b/graphlcd/logos/FOX KIDS_v2_m.glcd new file mode 100644 index 0000000..09ad0b2 Binary files /dev/null and b/graphlcd/logos/FOX KIDS_v2_m.glcd differ diff --git a/graphlcd/logos/FOX NEWS_m.glcd b/graphlcd/logos/FOX NEWS_m.glcd new file mode 100644 index 0000000..82d60f9 Binary files /dev/null and b/graphlcd/logos/FOX NEWS_m.glcd differ diff --git a/graphlcd/logos/FOX_m.glcd b/graphlcd/logos/FOX_m.glcd new file mode 100644 index 0000000..73b376b Binary files /dev/null and b/graphlcd/logos/FOX_m.glcd differ diff --git a/graphlcd/logos/FRANCE2_l.glcd b/graphlcd/logos/FRANCE2_l.glcd new file mode 100644 index 0000000..a01db87 Binary files /dev/null and b/graphlcd/logos/FRANCE2_l.glcd differ diff --git a/graphlcd/logos/FRANCE2_m.glcd b/graphlcd/logos/FRANCE2_m.glcd new file mode 100644 index 0000000..8658df7 Binary files /dev/null and b/graphlcd/logos/FRANCE2_m.glcd differ diff --git a/graphlcd/logos/FRANCE3_l.glcd b/graphlcd/logos/FRANCE3_l.glcd new file mode 100644 index 0000000..fbea5ba Binary files /dev/null and b/graphlcd/logos/FRANCE3_l.glcd differ diff --git a/graphlcd/logos/FRANCE3_m.glcd b/graphlcd/logos/FRANCE3_m.glcd new file mode 100644 index 0000000..421e4e3 Binary files /dev/null and b/graphlcd/logos/FRANCE3_m.glcd differ diff --git a/graphlcd/logos/FRANCE5_l.glcd b/graphlcd/logos/FRANCE5_l.glcd new file mode 100644 index 0000000..bc3132a Binary files /dev/null and b/graphlcd/logos/FRANCE5_l.glcd differ diff --git a/graphlcd/logos/FRANCE5_m.glcd b/graphlcd/logos/FRANCE5_m.glcd new file mode 100644 index 0000000..03cdbd3 Binary files /dev/null and b/graphlcd/logos/FRANCE5_m.glcd differ diff --git a/graphlcd/logos/FRANKEN SAT_l.glcd b/graphlcd/logos/FRANKEN SAT_l.glcd new file mode 100644 index 0000000..9def4ca Binary files /dev/null and b/graphlcd/logos/FRANKEN SAT_l.glcd differ diff --git a/graphlcd/logos/FRANKEN SAT_m.glcd b/graphlcd/logos/FRANKEN SAT_m.glcd new file mode 100644 index 0000000..4e0be7e Binary files /dev/null and b/graphlcd/logos/FRANKEN SAT_m.glcd differ diff --git a/graphlcd/logos/FREE-X TV_l.glcd b/graphlcd/logos/FREE-X TV_l.glcd new file mode 100644 index 0000000..d84a6d9 Binary files /dev/null and b/graphlcd/logos/FREE-X TV_l.glcd differ diff --git a/graphlcd/logos/FREE-X TV_m.glcd b/graphlcd/logos/FREE-X TV_m.glcd new file mode 100644 index 0000000..c98bdc5 Binary files /dev/null and b/graphlcd/logos/FREE-X TV_m.glcd differ diff --git a/graphlcd/logos/FRITZ_l.glcd b/graphlcd/logos/FRITZ_l.glcd new file mode 100644 index 0000000..e84e499 Binary files /dev/null and b/graphlcd/logos/FRITZ_l.glcd differ diff --git a/graphlcd/logos/FRITZ_m.glcd b/graphlcd/logos/FRITZ_m.glcd new file mode 100644 index 0000000..894fda0 Binary files /dev/null and b/graphlcd/logos/FRITZ_m.glcd differ diff --git a/graphlcd/logos/GAMES TV_l.glcd b/graphlcd/logos/GAMES TV_l.glcd new file mode 100644 index 0000000..b6c862e Binary files /dev/null and b/graphlcd/logos/GAMES TV_l.glcd differ diff --git a/graphlcd/logos/GOLDSTAR TV_l.glcd b/graphlcd/logos/GOLDSTAR TV_l.glcd new file mode 100644 index 0000000..75f6b4b Binary files /dev/null and b/graphlcd/logos/GOLDSTAR TV_l.glcd differ diff --git a/graphlcd/logos/GOLDSTAR TV_m.glcd b/graphlcd/logos/GOLDSTAR TV_m.glcd new file mode 100644 index 0000000..82b0f94 Binary files /dev/null and b/graphlcd/logos/GOLDSTAR TV_m.glcd differ diff --git a/graphlcd/logos/GOLDSTAR TV_v2_l.glcd b/graphlcd/logos/GOLDSTAR TV_v2_l.glcd new file mode 100644 index 0000000..0bc73d4 Binary files /dev/null and b/graphlcd/logos/GOLDSTAR TV_v2_l.glcd differ diff --git a/graphlcd/logos/GOLDSTAR TV_v2_m.glcd b/graphlcd/logos/GOLDSTAR TV_v2_m.glcd new file mode 100644 index 0000000..bdc8533 Binary files /dev/null and b/graphlcd/logos/GOLDSTAR TV_v2_m.glcd differ diff --git a/graphlcd/logos/GUTE LAUNE TV_l.glcd b/graphlcd/logos/GUTE LAUNE TV_l.glcd new file mode 100644 index 0000000..afdc9d8 Binary files /dev/null and b/graphlcd/logos/GUTE LAUNE TV_l.glcd differ diff --git a/graphlcd/logos/HALLMARK_l.glcd b/graphlcd/logos/HALLMARK_l.glcd new file mode 100644 index 0000000..820f67c Binary files /dev/null and b/graphlcd/logos/HALLMARK_l.glcd differ diff --git a/graphlcd/logos/HARMONY FM_l.glcd b/graphlcd/logos/HARMONY FM_l.glcd new file mode 100644 index 0000000..c7c061e Binary files /dev/null and b/graphlcd/logos/HARMONY FM_l.glcd differ diff --git a/graphlcd/logos/HARMONY FM_m.glcd b/graphlcd/logos/HARMONY FM_m.glcd new file mode 100644 index 0000000..8829b03 Binary files /dev/null and b/graphlcd/logos/HARMONY FM_m.glcd differ diff --git a/graphlcd/logos/HARMONY FM_v2_m.glcd b/graphlcd/logos/HARMONY FM_v2_m.glcd new file mode 100644 index 0000000..c32ec0f Binary files /dev/null and b/graphlcd/logos/HARMONY FM_v2_m.glcd differ diff --git a/graphlcd/logos/HEIMATKANAL_l.glcd b/graphlcd/logos/HEIMATKANAL_l.glcd new file mode 100644 index 0000000..8c0161f Binary files /dev/null and b/graphlcd/logos/HEIMATKANAL_l.glcd differ diff --git a/graphlcd/logos/HEIMATKANAL_m.glcd b/graphlcd/logos/HEIMATKANAL_m.glcd new file mode 100644 index 0000000..f1224e4 Binary files /dev/null and b/graphlcd/logos/HEIMATKANAL_m.glcd differ diff --git a/graphlcd/logos/HEIMATKANAL_v2_l.glcd b/graphlcd/logos/HEIMATKANAL_v2_l.glcd new file mode 100644 index 0000000..643d68a Binary files /dev/null and b/graphlcd/logos/HEIMATKANAL_v2_l.glcd differ diff --git a/graphlcd/logos/HESSEN FERNSEHEN_l.glcd b/graphlcd/logos/HESSEN FERNSEHEN_l.glcd new file mode 100644 index 0000000..c2df34e Binary files /dev/null and b/graphlcd/logos/HESSEN FERNSEHEN_l.glcd differ diff --git a/graphlcd/logos/HESSEN FERNSEHEN_m.glcd b/graphlcd/logos/HESSEN FERNSEHEN_m.glcd new file mode 100644 index 0000000..24ed6bc Binary files /dev/null and b/graphlcd/logos/HESSEN FERNSEHEN_m.glcd differ diff --git a/graphlcd/logos/HESSEN FERNSEHEN_v2_l.glcd b/graphlcd/logos/HESSEN FERNSEHEN_v2_l.glcd new file mode 100644 index 0000000..afb1d56 Binary files /dev/null and b/graphlcd/logos/HESSEN FERNSEHEN_v2_l.glcd differ diff --git a/graphlcd/logos/HISTOIRE_m.glcd b/graphlcd/logos/HISTOIRE_m.glcd new file mode 100644 index 0000000..7343fc8 Binary files /dev/null and b/graphlcd/logos/HISTOIRE_m.glcd differ diff --git a/graphlcd/logos/HISTORY CHANNEL_l.glcd b/graphlcd/logos/HISTORY CHANNEL_l.glcd new file mode 100644 index 0000000..e175a6a Binary files /dev/null and b/graphlcd/logos/HISTORY CHANNEL_l.glcd differ diff --git a/graphlcd/logos/HIT CHANNEL 1025_l.glcd b/graphlcd/logos/HIT CHANNEL 1025_l.glcd new file mode 100644 index 0000000..278358a Binary files /dev/null and b/graphlcd/logos/HIT CHANNEL 1025_l.glcd differ diff --git a/graphlcd/logos/HIT CHANNEL 1025_m.glcd b/graphlcd/logos/HIT CHANNEL 1025_m.glcd new file mode 100644 index 0000000..da73db3 Binary files /dev/null and b/graphlcd/logos/HIT CHANNEL 1025_m.glcd differ diff --git a/graphlcd/logos/HITRADIO FFH_l.glcd b/graphlcd/logos/HITRADIO FFH_l.glcd new file mode 100644 index 0000000..b5fd57e Binary files /dev/null and b/graphlcd/logos/HITRADIO FFH_l.glcd differ diff --git a/graphlcd/logos/HITRADIO FFH_m.glcd b/graphlcd/logos/HITRADIO FFH_m.glcd new file mode 100644 index 0000000..3701543 Binary files /dev/null and b/graphlcd/logos/HITRADIO FFH_m.glcd differ diff --git a/graphlcd/logos/HOERZU DIGITAL_l.glcd b/graphlcd/logos/HOERZU DIGITAL_l.glcd new file mode 100644 index 0000000..703c47b Binary files /dev/null and b/graphlcd/logos/HOERZU DIGITAL_l.glcd differ diff --git a/graphlcd/logos/HOERZU DIGITAL_m.glcd b/graphlcd/logos/HOERZU DIGITAL_m.glcd new file mode 100644 index 0000000..fefd209 Binary files /dev/null and b/graphlcd/logos/HOERZU DIGITAL_m.glcd differ diff --git a/graphlcd/logos/HOLLYWOOD CINEMA_l.glcd b/graphlcd/logos/HOLLYWOOD CINEMA_l.glcd new file mode 100644 index 0000000..c7ce748 Binary files /dev/null and b/graphlcd/logos/HOLLYWOOD CINEMA_l.glcd differ diff --git a/graphlcd/logos/HOLLYWOOD CINEMA_m.glcd b/graphlcd/logos/HOLLYWOOD CINEMA_m.glcd new file mode 100644 index 0000000..bd9f7bd Binary files /dev/null and b/graphlcd/logos/HOLLYWOOD CINEMA_m.glcd differ diff --git a/graphlcd/logos/HR CHRONOS_l.glcd b/graphlcd/logos/HR CHRONOS_l.glcd new file mode 100644 index 0000000..67d8418 Binary files /dev/null and b/graphlcd/logos/HR CHRONOS_l.glcd differ diff --git a/graphlcd/logos/HR KLASSIK_l.glcd b/graphlcd/logos/HR KLASSIK_l.glcd new file mode 100644 index 0000000..8e992a9 Binary files /dev/null and b/graphlcd/logos/HR KLASSIK_l.glcd differ diff --git a/graphlcd/logos/HR KLASSIK_m.glcd b/graphlcd/logos/HR KLASSIK_m.glcd new file mode 100644 index 0000000..4712db5 Binary files /dev/null and b/graphlcd/logos/HR KLASSIK_m.glcd differ diff --git a/graphlcd/logos/HR KLASSIK_v2_m.glcd b/graphlcd/logos/HR KLASSIK_v2_m.glcd new file mode 100644 index 0000000..36e403c Binary files /dev/null and b/graphlcd/logos/HR KLASSIK_v2_m.glcd differ diff --git a/graphlcd/logos/HR SKYLINE_l.glcd b/graphlcd/logos/HR SKYLINE_l.glcd new file mode 100644 index 0000000..593a856 Binary files /dev/null and b/graphlcd/logos/HR SKYLINE_l.glcd differ diff --git a/graphlcd/logos/HR SKYLINE_m.glcd b/graphlcd/logos/HR SKYLINE_m.glcd new file mode 100644 index 0000000..96bb038 Binary files /dev/null and b/graphlcd/logos/HR SKYLINE_m.glcd differ diff --git a/graphlcd/logos/HR SKYLINE_v2_m.glcd b/graphlcd/logos/HR SKYLINE_v2_m.glcd new file mode 100644 index 0000000..1661dfc Binary files /dev/null and b/graphlcd/logos/HR SKYLINE_v2_m.glcd differ diff --git a/graphlcd/logos/HR1_l.glcd b/graphlcd/logos/HR1_l.glcd new file mode 100644 index 0000000..952f1b7 Binary files /dev/null and b/graphlcd/logos/HR1_l.glcd differ diff --git a/graphlcd/logos/HR1_m.glcd b/graphlcd/logos/HR1_m.glcd new file mode 100644 index 0000000..6ef4da1 Binary files /dev/null and b/graphlcd/logos/HR1_m.glcd differ diff --git a/graphlcd/logos/HR2_l.glcd b/graphlcd/logos/HR2_l.glcd new file mode 100644 index 0000000..54b049d Binary files /dev/null and b/graphlcd/logos/HR2_l.glcd differ diff --git a/graphlcd/logos/HR2_m.glcd b/graphlcd/logos/HR2_m.glcd new file mode 100644 index 0000000..11cf851 Binary files /dev/null and b/graphlcd/logos/HR2_m.glcd differ diff --git a/graphlcd/logos/HSE24_l.glcd b/graphlcd/logos/HSE24_l.glcd new file mode 100644 index 0000000..4a50bd1 Binary files /dev/null and b/graphlcd/logos/HSE24_l.glcd differ diff --git a/graphlcd/logos/HSE24_m.glcd b/graphlcd/logos/HSE24_m.glcd new file mode 100644 index 0000000..00371d0 Binary files /dev/null and b/graphlcd/logos/HSE24_m.glcd differ diff --git a/graphlcd/logos/HSE24_v2_m.glcd b/graphlcd/logos/HSE24_v2_m.glcd new file mode 100644 index 0000000..374a9cb Binary files /dev/null and b/graphlcd/logos/HSE24_v2_m.glcd differ diff --git a/graphlcd/logos/HUNDERT6 RADIO_l.glcd b/graphlcd/logos/HUNDERT6 RADIO_l.glcd new file mode 100644 index 0000000..67d3792 Binary files /dev/null and b/graphlcd/logos/HUNDERT6 RADIO_l.glcd differ diff --git a/graphlcd/logos/HUNDERT6 RADIO_m.glcd b/graphlcd/logos/HUNDERT6 RADIO_m.glcd new file mode 100644 index 0000000..af348fc Binary files /dev/null and b/graphlcd/logos/HUNDERT6 RADIO_m.glcd differ diff --git a/graphlcd/logos/JUMP_l.glcd b/graphlcd/logos/JUMP_l.glcd new file mode 100644 index 0000000..981cb59 Binary files /dev/null and b/graphlcd/logos/JUMP_l.glcd differ diff --git a/graphlcd/logos/JUMP_m.glcd b/graphlcd/logos/JUMP_m.glcd new file mode 100644 index 0000000..2bf8ed7 Binary files /dev/null and b/graphlcd/logos/JUMP_m.glcd differ diff --git a/graphlcd/logos/JUNIOR_l.glcd b/graphlcd/logos/JUNIOR_l.glcd new file mode 100644 index 0000000..8981830 Binary files /dev/null and b/graphlcd/logos/JUNIOR_l.glcd differ diff --git a/graphlcd/logos/JUNIOR_m.glcd b/graphlcd/logos/JUNIOR_m.glcd new file mode 100644 index 0000000..9fd377b Binary files /dev/null and b/graphlcd/logos/JUNIOR_m.glcd differ diff --git a/graphlcd/logos/JUNIOR_v2_l.glcd b/graphlcd/logos/JUNIOR_v2_l.glcd new file mode 100644 index 0000000..26c3666 Binary files /dev/null and b/graphlcd/logos/JUNIOR_v2_l.glcd differ diff --git a/graphlcd/logos/K TOON_l.glcd b/graphlcd/logos/K TOON_l.glcd new file mode 100644 index 0000000..936273a Binary files /dev/null and b/graphlcd/logos/K TOON_l.glcd differ diff --git a/graphlcd/logos/K TOON_m.glcd b/graphlcd/logos/K TOON_m.glcd new file mode 100644 index 0000000..be284ee Binary files /dev/null and b/graphlcd/logos/K TOON_m.glcd differ diff --git a/graphlcd/logos/K TOON_v2_m.glcd b/graphlcd/logos/K TOON_v2_m.glcd new file mode 100644 index 0000000..d2c3a4c Binary files /dev/null and b/graphlcd/logos/K TOON_v2_m.glcd differ diff --git a/graphlcd/logos/K-TV_l.glcd b/graphlcd/logos/K-TV_l.glcd new file mode 100644 index 0000000..b22e83c Binary files /dev/null and b/graphlcd/logos/K-TV_l.glcd differ diff --git a/graphlcd/logos/K-TV_m.glcd b/graphlcd/logos/K-TV_m.glcd new file mode 100644 index 0000000..42a98f0 Binary files /dev/null and b/graphlcd/logos/K-TV_m.glcd differ diff --git a/graphlcd/logos/K-TV_v2_m.glcd b/graphlcd/logos/K-TV_v2_m.glcd new file mode 100644 index 0000000..9e07882 Binary files /dev/null and b/graphlcd/logos/K-TV_v2_m.glcd differ diff --git a/graphlcd/logos/KABEL 1 AUSTRIA_l.glcd b/graphlcd/logos/KABEL 1 AUSTRIA_l.glcd new file mode 100644 index 0000000..628df5e Binary files /dev/null and b/graphlcd/logos/KABEL 1 AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/KABEL 1 AUSTRIA_m.glcd b/graphlcd/logos/KABEL 1 AUSTRIA_m.glcd new file mode 100644 index 0000000..b57f2bd Binary files /dev/null and b/graphlcd/logos/KABEL 1 AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/KABEL 1 SCHWEIZ_l.glcd b/graphlcd/logos/KABEL 1 SCHWEIZ_l.glcd new file mode 100644 index 0000000..063c594 Binary files /dev/null and b/graphlcd/logos/KABEL 1 SCHWEIZ_l.glcd differ diff --git a/graphlcd/logos/KABEL 1 SCHWEIZ_m.glcd b/graphlcd/logos/KABEL 1 SCHWEIZ_m.glcd new file mode 100644 index 0000000..97ad2c7 Binary files /dev/null and b/graphlcd/logos/KABEL 1 SCHWEIZ_m.glcd differ diff --git a/graphlcd/logos/KABEL 1_l.glcd b/graphlcd/logos/KABEL 1_l.glcd new file mode 100644 index 0000000..2413092 Binary files /dev/null and b/graphlcd/logos/KABEL 1_l.glcd differ diff --git a/graphlcd/logos/KABEL 1_m.glcd b/graphlcd/logos/KABEL 1_m.glcd new file mode 100644 index 0000000..5be531b Binary files /dev/null and b/graphlcd/logos/KABEL 1_m.glcd differ diff --git a/graphlcd/logos/KIKA_l.glcd b/graphlcd/logos/KIKA_l.glcd new file mode 100644 index 0000000..4cba709 Binary files /dev/null and b/graphlcd/logos/KIKA_l.glcd differ diff --git a/graphlcd/logos/KIKA_m.glcd b/graphlcd/logos/KIKA_m.glcd new file mode 100644 index 0000000..96f71c9 Binary files /dev/null and b/graphlcd/logos/KIKA_m.glcd differ diff --git a/graphlcd/logos/KINK FM_l.glcd b/graphlcd/logos/KINK FM_l.glcd new file mode 100644 index 0000000..d1b9e99 Binary files /dev/null and b/graphlcd/logos/KINK FM_l.glcd differ diff --git a/graphlcd/logos/KINK FM_m.glcd b/graphlcd/logos/KINK FM_m.glcd new file mode 100644 index 0000000..f9ddd52 Binary files /dev/null and b/graphlcd/logos/KINK FM_m.glcd differ diff --git a/graphlcd/logos/KINOWELT_l.glcd b/graphlcd/logos/KINOWELT_l.glcd new file mode 100644 index 0000000..e0f4f33 Binary files /dev/null and b/graphlcd/logos/KINOWELT_l.glcd differ diff --git a/graphlcd/logos/KRIMICO_l.glcd b/graphlcd/logos/KRIMICO_l.glcd new file mode 100644 index 0000000..20d6a99 Binary files /dev/null and b/graphlcd/logos/KRIMICO_l.glcd differ diff --git a/graphlcd/logos/KRIMICO_m.glcd b/graphlcd/logos/KRIMICO_m.glcd new file mode 100644 index 0000000..cdff586 Binary files /dev/null and b/graphlcd/logos/KRIMICO_m.glcd differ diff --git a/graphlcd/logos/KTO_l.glcd b/graphlcd/logos/KTO_l.glcd new file mode 100644 index 0000000..a6c3170 Binary files /dev/null and b/graphlcd/logos/KTO_l.glcd differ diff --git a/graphlcd/logos/KTO_m.glcd b/graphlcd/logos/KTO_m.glcd new file mode 100644 index 0000000..4222646 Binary files /dev/null and b/graphlcd/logos/KTO_m.glcd differ diff --git a/graphlcd/logos/L1MBURG_l.glcd b/graphlcd/logos/L1MBURG_l.glcd new file mode 100644 index 0000000..0e50e3a Binary files /dev/null and b/graphlcd/logos/L1MBURG_l.glcd differ diff --git a/graphlcd/logos/L1MBURG_m.glcd b/graphlcd/logos/L1MBURG_m.glcd new file mode 100644 index 0000000..984a117 Binary files /dev/null and b/graphlcd/logos/L1MBURG_m.glcd differ diff --git a/graphlcd/logos/LASTMINUTE_l.glcd b/graphlcd/logos/LASTMINUTE_l.glcd new file mode 100644 index 0000000..252d343 Binary files /dev/null and b/graphlcd/logos/LASTMINUTE_l.glcd differ diff --git a/graphlcd/logos/LASTMINUTE_m.glcd b/graphlcd/logos/LASTMINUTE_m.glcd new file mode 100644 index 0000000..cefd1fa Binary files /dev/null and b/graphlcd/logos/LASTMINUTE_m.glcd differ diff --git a/graphlcd/logos/LASTMINUTE_v2_m.glcd b/graphlcd/logos/LASTMINUTE_v2_m.glcd new file mode 100644 index 0000000..60bbb84 Binary files /dev/null and b/graphlcd/logos/LASTMINUTE_v2_m.glcd differ diff --git a/graphlcd/logos/LCI_m.glcd b/graphlcd/logos/LCI_m.glcd new file mode 100644 index 0000000..69c0db2 Binary files /dev/null and b/graphlcd/logos/LCI_m.glcd differ diff --git a/graphlcd/logos/LCP_l.glcd b/graphlcd/logos/LCP_l.glcd new file mode 100644 index 0000000..a216ea8 Binary files /dev/null and b/graphlcd/logos/LCP_l.glcd differ diff --git a/graphlcd/logos/LIBERTY TV_l.glcd b/graphlcd/logos/LIBERTY TV_l.glcd new file mode 100644 index 0000000..c905a56 Binary files /dev/null and b/graphlcd/logos/LIBERTY TV_l.glcd differ diff --git a/graphlcd/logos/LIBERTY TV_m.glcd b/graphlcd/logos/LIBERTY TV_m.glcd new file mode 100644 index 0000000..e4ea29d Binary files /dev/null and b/graphlcd/logos/LIBERTY TV_m.glcd differ diff --git a/graphlcd/logos/LIBERTY TV_v2_m.glcd b/graphlcd/logos/LIBERTY TV_v2_m.glcd new file mode 100644 index 0000000..6eafbc9 Binary files /dev/null and b/graphlcd/logos/LIBERTY TV_v2_m.glcd differ diff --git a/graphlcd/logos/LIVE 1_m.glcd b/graphlcd/logos/LIVE 1_m.glcd new file mode 100644 index 0000000..39ad718 Binary files /dev/null and b/graphlcd/logos/LIVE 1_m.glcd differ diff --git a/graphlcd/logos/MATCH TV_m.glcd b/graphlcd/logos/MATCH TV_m.glcd new file mode 100644 index 0000000..c2e9462 Binary files /dev/null and b/graphlcd/logos/MATCH TV_m.glcd differ diff --git a/graphlcd/logos/MAXIMA FM_l.glcd b/graphlcd/logos/MAXIMA FM_l.glcd new file mode 100644 index 0000000..42cf233 Binary files /dev/null and b/graphlcd/logos/MAXIMA FM_l.glcd differ diff --git a/graphlcd/logos/MAXIMA FM_m.glcd b/graphlcd/logos/MAXIMA FM_m.glcd new file mode 100644 index 0000000..16753a3 Binary files /dev/null and b/graphlcd/logos/MAXIMA FM_m.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN SA_l.glcd b/graphlcd/logos/MDR FERNSEHEN SA_l.glcd new file mode 100644 index 0000000..3f684e2 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN SA_l.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN SA_m.glcd b/graphlcd/logos/MDR FERNSEHEN SA_m.glcd new file mode 100644 index 0000000..80635a9 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN SA_m.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN S_l.glcd b/graphlcd/logos/MDR FERNSEHEN S_l.glcd new file mode 100644 index 0000000..5742792 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN S_l.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN S_m.glcd b/graphlcd/logos/MDR FERNSEHEN S_m.glcd new file mode 100644 index 0000000..a4779f4 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN S_m.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN TH_l.glcd b/graphlcd/logos/MDR FERNSEHEN TH_l.glcd new file mode 100644 index 0000000..10fee6b Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN TH_l.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN TH_m.glcd b/graphlcd/logos/MDR FERNSEHEN TH_m.glcd new file mode 100644 index 0000000..7fef753 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN TH_m.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN_l.glcd b/graphlcd/logos/MDR FERNSEHEN_l.glcd new file mode 100644 index 0000000..b13f745 Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN_l.glcd differ diff --git a/graphlcd/logos/MDR FERNSEHEN_m.glcd b/graphlcd/logos/MDR FERNSEHEN_m.glcd new file mode 100644 index 0000000..6c173bd Binary files /dev/null and b/graphlcd/logos/MDR FERNSEHEN_m.glcd differ diff --git a/graphlcd/logos/MDR FIGARO_l.glcd b/graphlcd/logos/MDR FIGARO_l.glcd new file mode 100644 index 0000000..33fce31 Binary files /dev/null and b/graphlcd/logos/MDR FIGARO_l.glcd differ diff --git a/graphlcd/logos/MDR FIGARO_m.glcd b/graphlcd/logos/MDR FIGARO_m.glcd new file mode 100644 index 0000000..870aa21 Binary files /dev/null and b/graphlcd/logos/MDR FIGARO_m.glcd differ diff --git a/graphlcd/logos/MDR FIGARO_v2_m.glcd b/graphlcd/logos/MDR FIGARO_v2_m.glcd new file mode 100644 index 0000000..9421c8d Binary files /dev/null and b/graphlcd/logos/MDR FIGARO_v2_m.glcd differ diff --git a/graphlcd/logos/MDR INFO_l.glcd b/graphlcd/logos/MDR INFO_l.glcd new file mode 100644 index 0000000..7bd47b2 Binary files /dev/null and b/graphlcd/logos/MDR INFO_l.glcd differ diff --git a/graphlcd/logos/MDR INFO_m.glcd b/graphlcd/logos/MDR INFO_m.glcd new file mode 100644 index 0000000..8d5158a Binary files /dev/null and b/graphlcd/logos/MDR INFO_m.glcd differ diff --git a/graphlcd/logos/MEDIA TROPICAL_l.glcd b/graphlcd/logos/MEDIA TROPICAL_l.glcd new file mode 100644 index 0000000..a8f0761 Binary files /dev/null and b/graphlcd/logos/MEDIA TROPICAL_l.glcd differ diff --git a/graphlcd/logos/MEDIA TROPICAL_m.glcd b/graphlcd/logos/MEDIA TROPICAL_m.glcd new file mode 100644 index 0000000..33ae45e Binary files /dev/null and b/graphlcd/logos/MEDIA TROPICAL_m.glcd differ diff --git a/graphlcd/logos/MGM_l.glcd b/graphlcd/logos/MGM_l.glcd new file mode 100644 index 0000000..671a722 Binary files /dev/null and b/graphlcd/logos/MGM_l.glcd differ diff --git a/graphlcd/logos/MGM_m.glcd b/graphlcd/logos/MGM_m.glcd new file mode 100644 index 0000000..3a7aee8 Binary files /dev/null and b/graphlcd/logos/MGM_m.glcd differ diff --git a/graphlcd/logos/MOTORS TV_l.glcd b/graphlcd/logos/MOTORS TV_l.glcd new file mode 100644 index 0000000..bfb4ca8 Binary files /dev/null and b/graphlcd/logos/MOTORS TV_l.glcd differ diff --git a/graphlcd/logos/MOTORS TV_m.glcd b/graphlcd/logos/MOTORS TV_m.glcd new file mode 100644 index 0000000..de02e3e Binary files /dev/null and b/graphlcd/logos/MOTORS TV_m.glcd differ diff --git a/graphlcd/logos/MOTORS TV_v2_m.glcd b/graphlcd/logos/MOTORS TV_v2_m.glcd new file mode 100644 index 0000000..34e196c Binary files /dev/null and b/graphlcd/logos/MOTORS TV_v2_m.glcd differ diff --git a/graphlcd/logos/MTV 2 POP CHANNEL_l.glcd b/graphlcd/logos/MTV 2 POP CHANNEL_l.glcd new file mode 100644 index 0000000..118119d Binary files /dev/null and b/graphlcd/logos/MTV 2 POP CHANNEL_l.glcd differ diff --git a/graphlcd/logos/MTV 2 POP CHANNEL_m.glcd b/graphlcd/logos/MTV 2 POP CHANNEL_m.glcd new file mode 100644 index 0000000..f262291 Binary files /dev/null and b/graphlcd/logos/MTV 2 POP CHANNEL_m.glcd differ diff --git a/graphlcd/logos/MTV 2_l.glcd b/graphlcd/logos/MTV 2_l.glcd new file mode 100644 index 0000000..22cebd0 Binary files /dev/null and b/graphlcd/logos/MTV 2_l.glcd differ diff --git a/graphlcd/logos/MTV BASE_l.glcd b/graphlcd/logos/MTV BASE_l.glcd new file mode 100644 index 0000000..c486eb5 Binary files /dev/null and b/graphlcd/logos/MTV BASE_l.glcd differ diff --git a/graphlcd/logos/MTV BASE_m.glcd b/graphlcd/logos/MTV BASE_m.glcd new file mode 100644 index 0000000..f2f3ce4 Binary files /dev/null and b/graphlcd/logos/MTV BASE_m.glcd differ diff --git a/graphlcd/logos/MTV CENTRAL_l.glcd b/graphlcd/logos/MTV CENTRAL_l.glcd new file mode 100644 index 0000000..3fb8e3f Binary files /dev/null and b/graphlcd/logos/MTV CENTRAL_l.glcd differ diff --git a/graphlcd/logos/MTV CENTRAL_m.glcd b/graphlcd/logos/MTV CENTRAL_m.glcd new file mode 100644 index 0000000..f2de32b Binary files /dev/null and b/graphlcd/logos/MTV CENTRAL_m.glcd differ diff --git a/graphlcd/logos/MTV CENTRAL_v2_m.glcd b/graphlcd/logos/MTV CENTRAL_v2_m.glcd new file mode 100644 index 0000000..6f5fa72 Binary files /dev/null and b/graphlcd/logos/MTV CENTRAL_v2_m.glcd differ diff --git a/graphlcd/logos/MTV DANCE_l.glcd b/graphlcd/logos/MTV DANCE_l.glcd new file mode 100644 index 0000000..be83922 Binary files /dev/null and b/graphlcd/logos/MTV DANCE_l.glcd differ diff --git a/graphlcd/logos/MTV F_l.glcd b/graphlcd/logos/MTV F_l.glcd new file mode 100644 index 0000000..f140bf6 Binary files /dev/null and b/graphlcd/logos/MTV F_l.glcd differ diff --git a/graphlcd/logos/MTV HITS_l.glcd b/graphlcd/logos/MTV HITS_l.glcd new file mode 100644 index 0000000..c15ec4d Binary files /dev/null and b/graphlcd/logos/MTV HITS_l.glcd differ diff --git a/graphlcd/logos/MTV HITS_m.glcd b/graphlcd/logos/MTV HITS_m.glcd new file mode 100644 index 0000000..bdc6a67 Binary files /dev/null and b/graphlcd/logos/MTV HITS_m.glcd differ diff --git a/graphlcd/logos/MTV_l.glcd b/graphlcd/logos/MTV_l.glcd new file mode 100644 index 0000000..487d888 Binary files /dev/null and b/graphlcd/logos/MTV_l.glcd differ diff --git a/graphlcd/logos/MULTIVISION_m.glcd b/graphlcd/logos/MULTIVISION_m.glcd new file mode 100644 index 0000000..33a286a Binary files /dev/null and b/graphlcd/logos/MULTIVISION_m.glcd differ diff --git a/graphlcd/logos/N-TV_l.glcd b/graphlcd/logos/N-TV_l.glcd new file mode 100644 index 0000000..1183167 Binary files /dev/null and b/graphlcd/logos/N-TV_l.glcd differ diff --git a/graphlcd/logos/N-TV_m.glcd b/graphlcd/logos/N-TV_m.glcd new file mode 100644 index 0000000..872793f Binary files /dev/null and b/graphlcd/logos/N-TV_m.glcd differ diff --git a/graphlcd/logos/N-TV_v2_m.glcd b/graphlcd/logos/N-TV_v2_m.glcd new file mode 100644 index 0000000..e063715 Binary files /dev/null and b/graphlcd/logos/N-TV_v2_m.glcd differ diff --git a/graphlcd/logos/N24_l.glcd b/graphlcd/logos/N24_l.glcd new file mode 100644 index 0000000..0fd10c9 Binary files /dev/null and b/graphlcd/logos/N24_l.glcd differ diff --git a/graphlcd/logos/N24_m.glcd b/graphlcd/logos/N24_m.glcd new file mode 100644 index 0000000..c5f839e Binary files /dev/null and b/graphlcd/logos/N24_m.glcd differ diff --git a/graphlcd/logos/N24_v2_l.glcd b/graphlcd/logos/N24_v2_l.glcd new file mode 100644 index 0000000..c556010 Binary files /dev/null and b/graphlcd/logos/N24_v2_l.glcd differ diff --git a/graphlcd/logos/NASN_l.glcd b/graphlcd/logos/NASN_l.glcd new file mode 100644 index 0000000..cdba969 Binary files /dev/null and b/graphlcd/logos/NASN_l.glcd differ diff --git a/graphlcd/logos/NATIONAL GEOGRAPHIC_l.glcd b/graphlcd/logos/NATIONAL GEOGRAPHIC_l.glcd new file mode 100644 index 0000000..c90abe7 Binary files /dev/null and b/graphlcd/logos/NATIONAL GEOGRAPHIC_l.glcd differ diff --git a/graphlcd/logos/NBC_l.glcd b/graphlcd/logos/NBC_l.glcd new file mode 100644 index 0000000..cba7b8e Binary files /dev/null and b/graphlcd/logos/NBC_l.glcd differ diff --git a/graphlcd/logos/NBC_m.glcd b/graphlcd/logos/NBC_m.glcd new file mode 100644 index 0000000..f0a5e68 Binary files /dev/null and b/graphlcd/logos/NBC_m.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN HH_l.glcd b/graphlcd/logos/NDR FERNSEHEN HH_l.glcd new file mode 100644 index 0000000..5d93658 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN HH_l.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN HH_m.glcd b/graphlcd/logos/NDR FERNSEHEN HH_m.glcd new file mode 100644 index 0000000..7784e4b Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN HH_m.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN MV_l.glcd b/graphlcd/logos/NDR FERNSEHEN MV_l.glcd new file mode 100644 index 0000000..b0b82fe Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN MV_l.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN MV_m.glcd b/graphlcd/logos/NDR FERNSEHEN MV_m.glcd new file mode 100644 index 0000000..7e0a763 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN MV_m.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN NDS_l.glcd b/graphlcd/logos/NDR FERNSEHEN NDS_l.glcd new file mode 100644 index 0000000..1960b76 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN NDS_l.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN NDS_m.glcd b/graphlcd/logos/NDR FERNSEHEN NDS_m.glcd new file mode 100644 index 0000000..77db508 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN NDS_m.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN SH_l.glcd b/graphlcd/logos/NDR FERNSEHEN SH_l.glcd new file mode 100644 index 0000000..d834fa4 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN SH_l.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN SH_m.glcd b/graphlcd/logos/NDR FERNSEHEN SH_m.glcd new file mode 100644 index 0000000..e1e30b8 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN SH_m.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN_l.glcd b/graphlcd/logos/NDR FERNSEHEN_l.glcd new file mode 100644 index 0000000..999ad4d Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN_l.glcd differ diff --git a/graphlcd/logos/NDR FERNSEHEN_m.glcd b/graphlcd/logos/NDR FERNSEHEN_m.glcd new file mode 100644 index 0000000..aeb6eb8 Binary files /dev/null and b/graphlcd/logos/NDR FERNSEHEN_m.glcd differ diff --git a/graphlcd/logos/NDR INFO_l.glcd b/graphlcd/logos/NDR INFO_l.glcd new file mode 100644 index 0000000..33998e7 Binary files /dev/null and b/graphlcd/logos/NDR INFO_l.glcd differ diff --git a/graphlcd/logos/NDR INFO_m.glcd b/graphlcd/logos/NDR INFO_m.glcd new file mode 100644 index 0000000..f903c2d Binary files /dev/null and b/graphlcd/logos/NDR INFO_m.glcd differ diff --git a/graphlcd/logos/NDR KULTUR_l.glcd b/graphlcd/logos/NDR KULTUR_l.glcd new file mode 100644 index 0000000..c3f54ef Binary files /dev/null and b/graphlcd/logos/NDR KULTUR_l.glcd differ diff --git a/graphlcd/logos/NDR KULTUR_m.glcd b/graphlcd/logos/NDR KULTUR_m.glcd new file mode 100644 index 0000000..25530cf Binary files /dev/null and b/graphlcd/logos/NDR KULTUR_m.glcd differ diff --git a/graphlcd/logos/NED1_l.glcd b/graphlcd/logos/NED1_l.glcd new file mode 100644 index 0000000..cc646c9 Binary files /dev/null and b/graphlcd/logos/NED1_l.glcd differ diff --git a/graphlcd/logos/NED1_m.glcd b/graphlcd/logos/NED1_m.glcd new file mode 100644 index 0000000..5d3c4f7 Binary files /dev/null and b/graphlcd/logos/NED1_m.glcd differ diff --git a/graphlcd/logos/NED2_l.glcd b/graphlcd/logos/NED2_l.glcd new file mode 100644 index 0000000..cc4b26b Binary files /dev/null and b/graphlcd/logos/NED2_l.glcd differ diff --git a/graphlcd/logos/NED2_m.glcd b/graphlcd/logos/NED2_m.glcd new file mode 100644 index 0000000..d125a6b Binary files /dev/null and b/graphlcd/logos/NED2_m.glcd differ diff --git a/graphlcd/logos/NED3_l.glcd b/graphlcd/logos/NED3_l.glcd new file mode 100644 index 0000000..83a391f Binary files /dev/null and b/graphlcd/logos/NED3_l.glcd differ diff --git a/graphlcd/logos/NED3_m.glcd b/graphlcd/logos/NED3_m.glcd new file mode 100644 index 0000000..35b3235 Binary files /dev/null and b/graphlcd/logos/NED3_m.glcd differ diff --git a/graphlcd/logos/NET5_l.glcd b/graphlcd/logos/NET5_l.glcd new file mode 100644 index 0000000..373524f Binary files /dev/null and b/graphlcd/logos/NET5_l.glcd differ diff --git a/graphlcd/logos/NET5_m.glcd b/graphlcd/logos/NET5_m.glcd new file mode 100644 index 0000000..e3a7db3 Binary files /dev/null and b/graphlcd/logos/NET5_m.glcd differ diff --git a/graphlcd/logos/NEUN LIVE_l.glcd b/graphlcd/logos/NEUN LIVE_l.glcd new file mode 100644 index 0000000..42f21c1 Binary files /dev/null and b/graphlcd/logos/NEUN LIVE_l.glcd differ diff --git a/graphlcd/logos/NEUN LIVE_m.glcd b/graphlcd/logos/NEUN LIVE_m.glcd new file mode 100644 index 0000000..b871163 Binary files /dev/null and b/graphlcd/logos/NEUN LIVE_m.glcd differ diff --git a/graphlcd/logos/NEUN LIVE_v2_m.glcd b/graphlcd/logos/NEUN LIVE_v2_m.glcd new file mode 100644 index 0000000..f0d6e86 Binary files /dev/null and b/graphlcd/logos/NEUN LIVE_v2_m.glcd differ diff --git a/graphlcd/logos/NICKELODEON_l.glcd b/graphlcd/logos/NICKELODEON_l.glcd new file mode 100644 index 0000000..f2fdc89 Binary files /dev/null and b/graphlcd/logos/NICKELODEON_l.glcd differ diff --git a/graphlcd/logos/NICKELODEON_m.glcd b/graphlcd/logos/NICKELODEON_m.glcd new file mode 100644 index 0000000..8253643 Binary files /dev/null and b/graphlcd/logos/NICKELODEON_m.glcd differ diff --git a/graphlcd/logos/NICK_l.glcd b/graphlcd/logos/NICK_l.glcd new file mode 100644 index 0000000..cf6dbda Binary files /dev/null and b/graphlcd/logos/NICK_l.glcd differ diff --git a/graphlcd/logos/NORDWEST RADIO_l.glcd b/graphlcd/logos/NORDWEST RADIO_l.glcd new file mode 100644 index 0000000..c48ee07 Binary files /dev/null and b/graphlcd/logos/NORDWEST RADIO_l.glcd differ diff --git a/graphlcd/logos/NORDWEST RADIO_m.glcd b/graphlcd/logos/NORDWEST RADIO_m.glcd new file mode 100644 index 0000000..895000f Binary files /dev/null and b/graphlcd/logos/NORDWEST RADIO_m.glcd differ diff --git a/graphlcd/logos/NORDWEST RADIO_v2_m.glcd b/graphlcd/logos/NORDWEST RADIO_v2_m.glcd new file mode 100644 index 0000000..4c7a50e Binary files /dev/null and b/graphlcd/logos/NORDWEST RADIO_v2_m.glcd differ diff --git a/graphlcd/logos/NRJ_l.glcd b/graphlcd/logos/NRJ_l.glcd new file mode 100644 index 0000000..7df7c0a Binary files /dev/null and b/graphlcd/logos/NRJ_l.glcd differ diff --git a/graphlcd/logos/NRJ_m.glcd b/graphlcd/logos/NRJ_m.glcd new file mode 100644 index 0000000..5424d41 Binary files /dev/null and b/graphlcd/logos/NRJ_m.glcd differ diff --git a/graphlcd/logos/OESTERREICH 1_l.glcd b/graphlcd/logos/OESTERREICH 1_l.glcd new file mode 100644 index 0000000..4d35400 Binary files /dev/null and b/graphlcd/logos/OESTERREICH 1_l.glcd differ diff --git a/graphlcd/logos/OESTERREICH 1_m.glcd b/graphlcd/logos/OESTERREICH 1_m.glcd new file mode 100644 index 0000000..6c8a132 Binary files /dev/null and b/graphlcd/logos/OESTERREICH 1_m.glcd differ diff --git a/graphlcd/logos/OESTERREICH 3_l.glcd b/graphlcd/logos/OESTERREICH 3_l.glcd new file mode 100644 index 0000000..59d4519 Binary files /dev/null and b/graphlcd/logos/OESTERREICH 3_l.glcd differ diff --git a/graphlcd/logos/OESTERREICH 3_m.glcd b/graphlcd/logos/OESTERREICH 3_m.glcd new file mode 100644 index 0000000..22e7b3a Binary files /dev/null and b/graphlcd/logos/OESTERREICH 3_m.glcd differ diff --git a/graphlcd/logos/ONTV_l.glcd b/graphlcd/logos/ONTV_l.glcd new file mode 100644 index 0000000..3d30545 Binary files /dev/null and b/graphlcd/logos/ONTV_l.glcd differ diff --git a/graphlcd/logos/ONTV_m.glcd b/graphlcd/logos/ONTV_m.glcd new file mode 100644 index 0000000..dd1dd72 Binary files /dev/null and b/graphlcd/logos/ONTV_m.glcd differ diff --git a/graphlcd/logos/ONTV_v2_m.glcd b/graphlcd/logos/ONTV_v2_m.glcd new file mode 100644 index 0000000..c7f75b6 Binary files /dev/null and b/graphlcd/logos/ONTV_v2_m.glcd differ diff --git a/graphlcd/logos/ONYX TV_l.glcd b/graphlcd/logos/ONYX TV_l.glcd new file mode 100644 index 0000000..928a766 Binary files /dev/null and b/graphlcd/logos/ONYX TV_l.glcd differ diff --git a/graphlcd/logos/ONYX TV_m.glcd b/graphlcd/logos/ONYX TV_m.glcd new file mode 100644 index 0000000..10f3bdb Binary files /dev/null and b/graphlcd/logos/ONYX TV_m.glcd differ diff --git a/graphlcd/logos/ORF 1_l.glcd b/graphlcd/logos/ORF 1_l.glcd new file mode 100644 index 0000000..457b7db Binary files /dev/null and b/graphlcd/logos/ORF 1_l.glcd differ diff --git a/graphlcd/logos/ORF 1_m.glcd b/graphlcd/logos/ORF 1_m.glcd new file mode 100644 index 0000000..48346ac Binary files /dev/null and b/graphlcd/logos/ORF 1_m.glcd differ diff --git a/graphlcd/logos/ORF 2 BURGENLAND_l.glcd b/graphlcd/logos/ORF 2 BURGENLAND_l.glcd new file mode 100644 index 0000000..3c76598 Binary files /dev/null and b/graphlcd/logos/ORF 2 BURGENLAND_l.glcd differ diff --git a/graphlcd/logos/ORF 2 BURGENLAND_m.glcd b/graphlcd/logos/ORF 2 BURGENLAND_m.glcd new file mode 100644 index 0000000..cdaeb84 Binary files /dev/null and b/graphlcd/logos/ORF 2 BURGENLAND_m.glcd differ diff --git a/graphlcd/logos/ORF 2 KAERNTEN_l.glcd b/graphlcd/logos/ORF 2 KAERNTEN_l.glcd new file mode 100644 index 0000000..17e701b Binary files /dev/null and b/graphlcd/logos/ORF 2 KAERNTEN_l.glcd differ diff --git a/graphlcd/logos/ORF 2 KAERNTEN_m.glcd b/graphlcd/logos/ORF 2 KAERNTEN_m.glcd new file mode 100644 index 0000000..2ce5f2a Binary files /dev/null and b/graphlcd/logos/ORF 2 KAERNTEN_m.glcd differ diff --git a/graphlcd/logos/ORF 2 NIEDEROESTERREICH_l.glcd b/graphlcd/logos/ORF 2 NIEDEROESTERREICH_l.glcd new file mode 100644 index 0000000..5e3e6c6 Binary files /dev/null and b/graphlcd/logos/ORF 2 NIEDEROESTERREICH_l.glcd differ diff --git a/graphlcd/logos/ORF 2 NIEDEROESTERREICH_m.glcd b/graphlcd/logos/ORF 2 NIEDEROESTERREICH_m.glcd new file mode 100644 index 0000000..ffc2413 Binary files /dev/null and b/graphlcd/logos/ORF 2 NIEDEROESTERREICH_m.glcd differ diff --git a/graphlcd/logos/ORF 2 OBEROESTERREICH_l.glcd b/graphlcd/logos/ORF 2 OBEROESTERREICH_l.glcd new file mode 100644 index 0000000..feed851 Binary files /dev/null and b/graphlcd/logos/ORF 2 OBEROESTERREICH_l.glcd differ diff --git a/graphlcd/logos/ORF 2 OBEROESTERREICH_m.glcd b/graphlcd/logos/ORF 2 OBEROESTERREICH_m.glcd new file mode 100644 index 0000000..2435717 Binary files /dev/null and b/graphlcd/logos/ORF 2 OBEROESTERREICH_m.glcd differ diff --git a/graphlcd/logos/ORF 2 SALZBURG_l.glcd b/graphlcd/logos/ORF 2 SALZBURG_l.glcd new file mode 100644 index 0000000..929c0f2 Binary files /dev/null and b/graphlcd/logos/ORF 2 SALZBURG_l.glcd differ diff --git a/graphlcd/logos/ORF 2 SALZBURG_m.glcd b/graphlcd/logos/ORF 2 SALZBURG_m.glcd new file mode 100644 index 0000000..74b04ad Binary files /dev/null and b/graphlcd/logos/ORF 2 SALZBURG_m.glcd differ diff --git a/graphlcd/logos/ORF 2 STEIERMARK_l.glcd b/graphlcd/logos/ORF 2 STEIERMARK_l.glcd new file mode 100644 index 0000000..43bb361 Binary files /dev/null and b/graphlcd/logos/ORF 2 STEIERMARK_l.glcd differ diff --git a/graphlcd/logos/ORF 2 STEIERMARK_m.glcd b/graphlcd/logos/ORF 2 STEIERMARK_m.glcd new file mode 100644 index 0000000..2f76745 Binary files /dev/null and b/graphlcd/logos/ORF 2 STEIERMARK_m.glcd differ diff --git a/graphlcd/logos/ORF 2 TIROL_l.glcd b/graphlcd/logos/ORF 2 TIROL_l.glcd new file mode 100644 index 0000000..60589aa Binary files /dev/null and b/graphlcd/logos/ORF 2 TIROL_l.glcd differ diff --git a/graphlcd/logos/ORF 2 TIROL_m.glcd b/graphlcd/logos/ORF 2 TIROL_m.glcd new file mode 100644 index 0000000..afae7e3 Binary files /dev/null and b/graphlcd/logos/ORF 2 TIROL_m.glcd differ diff --git a/graphlcd/logos/ORF 2 VORARLBERG_l.glcd b/graphlcd/logos/ORF 2 VORARLBERG_l.glcd new file mode 100644 index 0000000..f79b383 Binary files /dev/null and b/graphlcd/logos/ORF 2 VORARLBERG_l.glcd differ diff --git a/graphlcd/logos/ORF 2 VORARLBERG_m.glcd b/graphlcd/logos/ORF 2 VORARLBERG_m.glcd new file mode 100644 index 0000000..72c984d Binary files /dev/null and b/graphlcd/logos/ORF 2 VORARLBERG_m.glcd differ diff --git a/graphlcd/logos/ORF 2 WIEN_l.glcd b/graphlcd/logos/ORF 2 WIEN_l.glcd new file mode 100644 index 0000000..ec61614 Binary files /dev/null and b/graphlcd/logos/ORF 2 WIEN_l.glcd differ diff --git a/graphlcd/logos/ORF 2 WIEN_m.glcd b/graphlcd/logos/ORF 2 WIEN_m.glcd new file mode 100644 index 0000000..cf4c07e Binary files /dev/null and b/graphlcd/logos/ORF 2 WIEN_m.glcd differ diff --git a/graphlcd/logos/ORF 2_l.glcd b/graphlcd/logos/ORF 2_l.glcd new file mode 100644 index 0000000..6fbe451 Binary files /dev/null and b/graphlcd/logos/ORF 2_l.glcd differ diff --git a/graphlcd/logos/ORF 2_m.glcd b/graphlcd/logos/ORF 2_m.glcd new file mode 100644 index 0000000..a28cb0d Binary files /dev/null and b/graphlcd/logos/ORF 2_m.glcd differ diff --git a/graphlcd/logos/ORF2 RADIO_l.glcd b/graphlcd/logos/ORF2 RADIO_l.glcd new file mode 100644 index 0000000..65d086e Binary files /dev/null and b/graphlcd/logos/ORF2 RADIO_l.glcd differ diff --git a/graphlcd/logos/ORF2 RADIO_m.glcd b/graphlcd/logos/ORF2 RADIO_m.glcd new file mode 100644 index 0000000..b42e7d5 Binary files /dev/null and b/graphlcd/logos/ORF2 RADIO_m.glcd differ diff --git a/graphlcd/logos/OTTO SHOP_l.glcd b/graphlcd/logos/OTTO SHOP_l.glcd new file mode 100644 index 0000000..d915a35 Binary files /dev/null and b/graphlcd/logos/OTTO SHOP_l.glcd differ diff --git a/graphlcd/logos/OTTO SHOP_m.glcd b/graphlcd/logos/OTTO SHOP_m.glcd new file mode 100644 index 0000000..a4d832b Binary files /dev/null and b/graphlcd/logos/OTTO SHOP_m.glcd differ diff --git a/graphlcd/logos/PHOENIX_l.glcd b/graphlcd/logos/PHOENIX_l.glcd new file mode 100644 index 0000000..15fe77a Binary files /dev/null and b/graphlcd/logos/PHOENIX_l.glcd differ diff --git a/graphlcd/logos/PHOENIX_m.glcd b/graphlcd/logos/PHOENIX_m.glcd new file mode 100644 index 0000000..ee8c873 Binary files /dev/null and b/graphlcd/logos/PHOENIX_m.glcd differ diff --git a/graphlcd/logos/PHOENIX_v2_l.glcd b/graphlcd/logos/PHOENIX_v2_l.glcd new file mode 100644 index 0000000..91298f0 Binary files /dev/null and b/graphlcd/logos/PHOENIX_v2_l.glcd differ diff --git a/graphlcd/logos/PHOENIX_v2_m.glcd b/graphlcd/logos/PHOENIX_v2_m.glcd new file mode 100644 index 0000000..df84f07 Binary files /dev/null and b/graphlcd/logos/PHOENIX_v2_m.glcd differ diff --git a/graphlcd/logos/PLANET RADIO_l.glcd b/graphlcd/logos/PLANET RADIO_l.glcd new file mode 100644 index 0000000..a7d211b Binary files /dev/null and b/graphlcd/logos/PLANET RADIO_l.glcd differ diff --git a/graphlcd/logos/PLANET RADIO_m.glcd b/graphlcd/logos/PLANET RADIO_m.glcd new file mode 100644 index 0000000..3328bd5 Binary files /dev/null and b/graphlcd/logos/PLANET RADIO_m.glcd differ diff --git a/graphlcd/logos/PLANET_l.glcd b/graphlcd/logos/PLANET_l.glcd new file mode 100644 index 0000000..b75675c Binary files /dev/null and b/graphlcd/logos/PLANET_l.glcd differ diff --git a/graphlcd/logos/PLANET_m.glcd b/graphlcd/logos/PLANET_m.glcd new file mode 100644 index 0000000..610bb82 Binary files /dev/null and b/graphlcd/logos/PLANET_m.glcd differ diff --git a/graphlcd/logos/PLAYBOY TV_l.glcd b/graphlcd/logos/PLAYBOY TV_l.glcd new file mode 100644 index 0000000..184f5ff Binary files /dev/null and b/graphlcd/logos/PLAYBOY TV_l.glcd differ diff --git a/graphlcd/logos/PLAYBOY_m.glcd b/graphlcd/logos/PLAYBOY_m.glcd new file mode 100644 index 0000000..6b26e08 Binary files /dev/null and b/graphlcd/logos/PLAYBOY_m.glcd differ diff --git a/graphlcd/logos/PLAYHOUSE DISNEY_m.glcd b/graphlcd/logos/PLAYHOUSE DISNEY_m.glcd new file mode 100644 index 0000000..f39bdf4 Binary files /dev/null and b/graphlcd/logos/PLAYHOUSE DISNEY_m.glcd differ diff --git a/graphlcd/logos/PLUS 1_l.glcd b/graphlcd/logos/PLUS 1_l.glcd new file mode 100644 index 0000000..2f90c49 Binary files /dev/null and b/graphlcd/logos/PLUS 1_l.glcd differ diff --git a/graphlcd/logos/PREMIERE AUSTRIA_l.glcd b/graphlcd/logos/PREMIERE AUSTRIA_l.glcd new file mode 100644 index 0000000..fec540c Binary files /dev/null and b/graphlcd/logos/PREMIERE AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/PREMIERE AUSTRIA_m.glcd b/graphlcd/logos/PREMIERE AUSTRIA_m.glcd new file mode 100644 index 0000000..695e4be Binary files /dev/null and b/graphlcd/logos/PREMIERE AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT PORTAL_l.glcd b/graphlcd/logos/PREMIERE DIREKT PORTAL_l.glcd new file mode 100644 index 0000000..3451743 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT PORTAL_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT PORTAL_m.glcd b/graphlcd/logos/PREMIERE DIREKT PORTAL_m.glcd new file mode 100644 index 0000000..f37c6f0 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT PORTAL_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT1_l.glcd b/graphlcd/logos/PREMIERE DIREKT1_l.glcd new file mode 100644 index 0000000..3dcbf95 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT1_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT1_m.glcd b/graphlcd/logos/PREMIERE DIREKT1_m.glcd new file mode 100644 index 0000000..867542e Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT1_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT1_v2_l.glcd b/graphlcd/logos/PREMIERE DIREKT1_v2_l.glcd new file mode 100644 index 0000000..174bcd6 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT1_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT2_l.glcd b/graphlcd/logos/PREMIERE DIREKT2_l.glcd new file mode 100644 index 0000000..47634fa Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT2_m.glcd b/graphlcd/logos/PREMIERE DIREKT2_m.glcd new file mode 100644 index 0000000..06458ff Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT2_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT2_v2_l.glcd b/graphlcd/logos/PREMIERE DIREKT2_v2_l.glcd new file mode 100644 index 0000000..4541045 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT2_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT3_l.glcd b/graphlcd/logos/PREMIERE DIREKT3_l.glcd new file mode 100644 index 0000000..561baac Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT3_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT3_m.glcd b/graphlcd/logos/PREMIERE DIREKT3_m.glcd new file mode 100644 index 0000000..bf95d30 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT3_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT3_v2_l.glcd b/graphlcd/logos/PREMIERE DIREKT3_v2_l.glcd new file mode 100644 index 0000000..5956684 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT3_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT4_l.glcd b/graphlcd/logos/PREMIERE DIREKT4_l.glcd new file mode 100644 index 0000000..be12a52 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT4_l.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT4_m.glcd b/graphlcd/logos/PREMIERE DIREKT4_m.glcd new file mode 100644 index 0000000..8bd5202 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT4_m.glcd differ diff --git a/graphlcd/logos/PREMIERE DIREKT4_v2_l.glcd b/graphlcd/logos/PREMIERE DIREKT4_v2_l.glcd new file mode 100644 index 0000000..e1fb8b1 Binary files /dev/null and b/graphlcd/logos/PREMIERE DIREKT4_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 1_l.glcd b/graphlcd/logos/PREMIERE EROTIK 1_l.glcd new file mode 100644 index 0000000..d0ba7a2 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 1_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 1_m.glcd b/graphlcd/logos/PREMIERE EROTIK 1_m.glcd new file mode 100644 index 0000000..d74ba3e Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 1_m.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 1_v2_l.glcd b/graphlcd/logos/PREMIERE EROTIK 1_v2_l.glcd new file mode 100644 index 0000000..9d36610 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 1_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 2_l.glcd b/graphlcd/logos/PREMIERE EROTIK 2_l.glcd new file mode 100644 index 0000000..72654b1 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 2_m.glcd b/graphlcd/logos/PREMIERE EROTIK 2_m.glcd new file mode 100644 index 0000000..e54786c Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 2_m.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 2_v2_l.glcd b/graphlcd/logos/PREMIERE EROTIK 2_v2_l.glcd new file mode 100644 index 0000000..d78779e Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 2_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 3_l.glcd b/graphlcd/logos/PREMIERE EROTIK 3_l.glcd new file mode 100644 index 0000000..65fa3da Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 3_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 3_m.glcd b/graphlcd/logos/PREMIERE EROTIK 3_m.glcd new file mode 100644 index 0000000..2287287 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 3_m.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 3_v2_l.glcd b/graphlcd/logos/PREMIERE EROTIK 3_v2_l.glcd new file mode 100644 index 0000000..48fc074 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 3_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 4_l.glcd b/graphlcd/logos/PREMIERE EROTIK 4_l.glcd new file mode 100644 index 0000000..87d3375 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 4_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 4_m.glcd b/graphlcd/logos/PREMIERE EROTIK 4_m.glcd new file mode 100644 index 0000000..b312a53 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 4_m.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK 4_v2_l.glcd b/graphlcd/logos/PREMIERE EROTIK 4_v2_l.glcd new file mode 100644 index 0000000..4242389 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK 4_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK_l.glcd b/graphlcd/logos/PREMIERE EROTIK_l.glcd new file mode 100644 index 0000000..d6ab077 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK_l.glcd differ diff --git a/graphlcd/logos/PREMIERE EROTIK_m.glcd b/graphlcd/logos/PREMIERE EROTIK_m.glcd new file mode 100644 index 0000000..c57aa32 Binary files /dev/null and b/graphlcd/logos/PREMIERE EROTIK_m.glcd differ diff --git a/graphlcd/logos/PREMIERE KRIMI_l.glcd b/graphlcd/logos/PREMIERE KRIMI_l.glcd new file mode 100644 index 0000000..46ea4f2 Binary files /dev/null and b/graphlcd/logos/PREMIERE KRIMI_l.glcd differ diff --git a/graphlcd/logos/PREMIERE KRIMI_m.glcd b/graphlcd/logos/PREMIERE KRIMI_m.glcd new file mode 100644 index 0000000..60e809f Binary files /dev/null and b/graphlcd/logos/PREMIERE KRIMI_m.glcd differ diff --git a/graphlcd/logos/PREMIERE NOSTALGIE_l.glcd b/graphlcd/logos/PREMIERE NOSTALGIE_l.glcd new file mode 100644 index 0000000..2fe949f Binary files /dev/null and b/graphlcd/logos/PREMIERE NOSTALGIE_l.glcd differ diff --git a/graphlcd/logos/PREMIERE NOSTALGIE_m.glcd b/graphlcd/logos/PREMIERE NOSTALGIE_m.glcd new file mode 100644 index 0000000..2d69c17 Binary files /dev/null and b/graphlcd/logos/PREMIERE NOSTALGIE_m.glcd differ diff --git a/graphlcd/logos/PREMIERE NOSTALGIE_v2_l.glcd b/graphlcd/logos/PREMIERE NOSTALGIE_v2_l.glcd new file mode 100644 index 0000000..0c0fa92 Binary files /dev/null and b/graphlcd/logos/PREMIERE NOSTALGIE_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SERIE_l.glcd b/graphlcd/logos/PREMIERE SERIE_l.glcd new file mode 100644 index 0000000..22d4b46 Binary files /dev/null and b/graphlcd/logos/PREMIERE SERIE_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SERIE_m.glcd b/graphlcd/logos/PREMIERE SERIE_m.glcd new file mode 100644 index 0000000..12d0903 Binary files /dev/null and b/graphlcd/logos/PREMIERE SERIE_m.glcd differ diff --git a/graphlcd/logos/PREMIERE SERIE_v2_l.glcd b/graphlcd/logos/PREMIERE SERIE_v2_l.glcd new file mode 100644 index 0000000..0ebb263 Binary files /dev/null and b/graphlcd/logos/PREMIERE SERIE_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT1_l.glcd b/graphlcd/logos/PREMIERE SPORT1_l.glcd new file mode 100644 index 0000000..c6547c2 Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT1_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT1_m.glcd b/graphlcd/logos/PREMIERE SPORT1_m.glcd new file mode 100644 index 0000000..df7c5c8 Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT1_m.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT1_v2_l.glcd b/graphlcd/logos/PREMIERE SPORT1_v2_l.glcd new file mode 100644 index 0000000..4012c0f Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT1_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT2_l.glcd b/graphlcd/logos/PREMIERE SPORT2_l.glcd new file mode 100644 index 0000000..c99afc7 Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT2_m.glcd b/graphlcd/logos/PREMIERE SPORT2_m.glcd new file mode 100644 index 0000000..10088bd Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT2_m.glcd differ diff --git a/graphlcd/logos/PREMIERE SPORT2_v2_l.glcd b/graphlcd/logos/PREMIERE SPORT2_v2_l.glcd new file mode 100644 index 0000000..308a08d Binary files /dev/null and b/graphlcd/logos/PREMIERE SPORT2_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE START_l.glcd b/graphlcd/logos/PREMIERE START_l.glcd new file mode 100644 index 0000000..a4d4dd2 Binary files /dev/null and b/graphlcd/logos/PREMIERE START_l.glcd differ diff --git a/graphlcd/logos/PREMIERE START_m.glcd b/graphlcd/logos/PREMIERE START_m.glcd new file mode 100644 index 0000000..fc0a473 Binary files /dev/null and b/graphlcd/logos/PREMIERE START_m.glcd differ diff --git a/graphlcd/logos/PREMIERE START_v2_l.glcd b/graphlcd/logos/PREMIERE START_v2_l.glcd new file mode 100644 index 0000000..dba4dda Binary files /dev/null and b/graphlcd/logos/PREMIERE START_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE1_l.glcd b/graphlcd/logos/PREMIERE1_l.glcd new file mode 100644 index 0000000..d96b181 Binary files /dev/null and b/graphlcd/logos/PREMIERE1_l.glcd differ diff --git a/graphlcd/logos/PREMIERE1_m.glcd b/graphlcd/logos/PREMIERE1_m.glcd new file mode 100644 index 0000000..dfaaad9 Binary files /dev/null and b/graphlcd/logos/PREMIERE1_m.glcd differ diff --git a/graphlcd/logos/PREMIERE1_v2_l.glcd b/graphlcd/logos/PREMIERE1_v2_l.glcd new file mode 100644 index 0000000..5ff3581 Binary files /dev/null and b/graphlcd/logos/PREMIERE1_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE2_l.glcd b/graphlcd/logos/PREMIERE2_l.glcd new file mode 100644 index 0000000..3633669 Binary files /dev/null and b/graphlcd/logos/PREMIERE2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE2_m.glcd b/graphlcd/logos/PREMIERE2_m.glcd new file mode 100644 index 0000000..e54d94d Binary files /dev/null and b/graphlcd/logos/PREMIERE2_m.glcd differ diff --git a/graphlcd/logos/PREMIERE2_v2_l.glcd b/graphlcd/logos/PREMIERE2_v2_l.glcd new file mode 100644 index 0000000..0426fd9 Binary files /dev/null and b/graphlcd/logos/PREMIERE2_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE3_l.glcd b/graphlcd/logos/PREMIERE3_l.glcd new file mode 100644 index 0000000..ed3c2bf Binary files /dev/null and b/graphlcd/logos/PREMIERE3_l.glcd differ diff --git a/graphlcd/logos/PREMIERE3_m.glcd b/graphlcd/logos/PREMIERE3_m.glcd new file mode 100644 index 0000000..40895d4 Binary files /dev/null and b/graphlcd/logos/PREMIERE3_m.glcd differ diff --git a/graphlcd/logos/PREMIERE3_v2_l.glcd b/graphlcd/logos/PREMIERE3_v2_l.glcd new file mode 100644 index 0000000..11ae7da Binary files /dev/null and b/graphlcd/logos/PREMIERE3_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE4_l.glcd b/graphlcd/logos/PREMIERE4_l.glcd new file mode 100644 index 0000000..04ad87b Binary files /dev/null and b/graphlcd/logos/PREMIERE4_l.glcd differ diff --git a/graphlcd/logos/PREMIERE4_m.glcd b/graphlcd/logos/PREMIERE4_m.glcd new file mode 100644 index 0000000..92acc8b Binary files /dev/null and b/graphlcd/logos/PREMIERE4_m.glcd differ diff --git a/graphlcd/logos/PREMIERE4_v2_l.glcd b/graphlcd/logos/PREMIERE4_v2_l.glcd new file mode 100644 index 0000000..5ed2de1 Binary files /dev/null and b/graphlcd/logos/PREMIERE4_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE5_l.glcd b/graphlcd/logos/PREMIERE5_l.glcd new file mode 100644 index 0000000..8e124a9 Binary files /dev/null and b/graphlcd/logos/PREMIERE5_l.glcd differ diff --git a/graphlcd/logos/PREMIERE5_m.glcd b/graphlcd/logos/PREMIERE5_m.glcd new file mode 100644 index 0000000..10da971 Binary files /dev/null and b/graphlcd/logos/PREMIERE5_m.glcd differ diff --git a/graphlcd/logos/PREMIERE5_v2_l.glcd b/graphlcd/logos/PREMIERE5_v2_l.glcd new file mode 100644 index 0000000..b33f00a Binary files /dev/null and b/graphlcd/logos/PREMIERE5_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE6_l.glcd b/graphlcd/logos/PREMIERE6_l.glcd new file mode 100644 index 0000000..e003ee7 Binary files /dev/null and b/graphlcd/logos/PREMIERE6_l.glcd differ diff --git a/graphlcd/logos/PREMIERE6_m.glcd b/graphlcd/logos/PREMIERE6_m.glcd new file mode 100644 index 0000000..81c04cb Binary files /dev/null and b/graphlcd/logos/PREMIERE6_m.glcd differ diff --git a/graphlcd/logos/PREMIERE6_v2_l.glcd b/graphlcd/logos/PREMIERE6_v2_l.glcd new file mode 100644 index 0000000..ed0dfdd Binary files /dev/null and b/graphlcd/logos/PREMIERE6_v2_l.glcd differ diff --git a/graphlcd/logos/PREMIERE7_l.glcd b/graphlcd/logos/PREMIERE7_l.glcd new file mode 100644 index 0000000..24e672d Binary files /dev/null and b/graphlcd/logos/PREMIERE7_l.glcd differ diff --git a/graphlcd/logos/PREMIERE7_m.glcd b/graphlcd/logos/PREMIERE7_m.glcd new file mode 100644 index 0000000..d7b41ce Binary files /dev/null and b/graphlcd/logos/PREMIERE7_m.glcd differ diff --git a/graphlcd/logos/PREMIERE7_v2_l.glcd b/graphlcd/logos/PREMIERE7_v2_l.glcd new file mode 100644 index 0000000..be4259c Binary files /dev/null and b/graphlcd/logos/PREMIERE7_v2_l.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN AUSTRIA_l.glcd b/graphlcd/logos/PRO SIEBEN AUSTRIA_l.glcd new file mode 100644 index 0000000..5978029 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN AUSTRIA_m.glcd b/graphlcd/logos/PRO SIEBEN AUSTRIA_m.glcd new file mode 100644 index 0000000..2662f32 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN SCHWEIZ_l.glcd b/graphlcd/logos/PRO SIEBEN SCHWEIZ_l.glcd new file mode 100644 index 0000000..86fe673 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN SCHWEIZ_l.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN SCHWEIZ_m.glcd b/graphlcd/logos/PRO SIEBEN SCHWEIZ_m.glcd new file mode 100644 index 0000000..84dab91 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN SCHWEIZ_m.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN_l.glcd b/graphlcd/logos/PRO SIEBEN_l.glcd new file mode 100644 index 0000000..742bca5 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN_l.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN_m.glcd b/graphlcd/logos/PRO SIEBEN_m.glcd new file mode 100644 index 0000000..8793dfe Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN_m.glcd differ diff --git a/graphlcd/logos/PRO SIEBEN_v2_l.glcd b/graphlcd/logos/PRO SIEBEN_v2_l.glcd new file mode 100644 index 0000000..730d452 Binary files /dev/null and b/graphlcd/logos/PRO SIEBEN_v2_l.glcd differ diff --git a/graphlcd/logos/PULS_l.glcd b/graphlcd/logos/PULS_l.glcd new file mode 100644 index 0000000..1179844 Binary files /dev/null and b/graphlcd/logos/PULS_l.glcd differ diff --git a/graphlcd/logos/PULS_m.glcd b/graphlcd/logos/PULS_m.glcd new file mode 100644 index 0000000..16379cd Binary files /dev/null and b/graphlcd/logos/PULS_m.glcd differ diff --git a/graphlcd/logos/QVC GERMANY_l.glcd b/graphlcd/logos/QVC GERMANY_l.glcd new file mode 100644 index 0000000..414b626 Binary files /dev/null and b/graphlcd/logos/QVC GERMANY_l.glcd differ diff --git a/graphlcd/logos/QVC GERMANY_m.glcd b/graphlcd/logos/QVC GERMANY_m.glcd new file mode 100644 index 0000000..0f12f0b Binary files /dev/null and b/graphlcd/logos/QVC GERMANY_m.glcd differ diff --git a/graphlcd/logos/RADIO 10 GOLD_l.glcd b/graphlcd/logos/RADIO 10 GOLD_l.glcd new file mode 100644 index 0000000..ac5f5a4 Binary files /dev/null and b/graphlcd/logos/RADIO 10 GOLD_l.glcd differ diff --git a/graphlcd/logos/RADIO 10 GOLD_m.glcd b/graphlcd/logos/RADIO 10 GOLD_m.glcd new file mode 100644 index 0000000..727d3e1 Binary files /dev/null and b/graphlcd/logos/RADIO 10 GOLD_m.glcd differ diff --git a/graphlcd/logos/RADIO 538_l.glcd b/graphlcd/logos/RADIO 538_l.glcd new file mode 100644 index 0000000..73bc2e5 Binary files /dev/null and b/graphlcd/logos/RADIO 538_l.glcd differ diff --git a/graphlcd/logos/RADIO 538_m.glcd b/graphlcd/logos/RADIO 538_m.glcd new file mode 100644 index 0000000..0d4480c Binary files /dev/null and b/graphlcd/logos/RADIO 538_m.glcd differ diff --git a/graphlcd/logos/RADIO MARIA_l.glcd b/graphlcd/logos/RADIO MARIA_l.glcd new file mode 100644 index 0000000..2d126a9 Binary files /dev/null and b/graphlcd/logos/RADIO MARIA_l.glcd differ diff --git a/graphlcd/logos/RADIO MARIA_m.glcd b/graphlcd/logos/RADIO MARIA_m.glcd new file mode 100644 index 0000000..bea7de8 Binary files /dev/null and b/graphlcd/logos/RADIO MARIA_m.glcd differ diff --git a/graphlcd/logos/RADIO MARIA_v2_m.glcd b/graphlcd/logos/RADIO MARIA_v2_m.glcd new file mode 100644 index 0000000..ada6d4f Binary files /dev/null and b/graphlcd/logos/RADIO MARIA_v2_m.glcd differ diff --git a/graphlcd/logos/RADIO MULTIKULTI_l.glcd b/graphlcd/logos/RADIO MULTIKULTI_l.glcd new file mode 100644 index 0000000..a8b4810 Binary files /dev/null and b/graphlcd/logos/RADIO MULTIKULTI_l.glcd differ diff --git a/graphlcd/logos/RADIO MULTIKULTI_m.glcd b/graphlcd/logos/RADIO MULTIKULTI_m.glcd new file mode 100644 index 0000000..108ba5e Binary files /dev/null and b/graphlcd/logos/RADIO MULTIKULTI_m.glcd differ diff --git a/graphlcd/logos/RADIO MULTIKULTI_v2_m.glcd b/graphlcd/logos/RADIO MULTIKULTI_v2_m.glcd new file mode 100644 index 0000000..472042f Binary files /dev/null and b/graphlcd/logos/RADIO MULTIKULTI_v2_m.glcd differ diff --git a/graphlcd/logos/RADIOEINS_l.glcd b/graphlcd/logos/RADIOEINS_l.glcd new file mode 100644 index 0000000..5c64eb1 Binary files /dev/null and b/graphlcd/logos/RADIOEINS_l.glcd differ diff --git a/graphlcd/logos/RADIOEINS_m.glcd b/graphlcd/logos/RADIOEINS_m.glcd new file mode 100644 index 0000000..6178251 Binary files /dev/null and b/graphlcd/logos/RADIOEINS_m.glcd differ diff --git a/graphlcd/logos/RAI 1_l.glcd b/graphlcd/logos/RAI 1_l.glcd new file mode 100644 index 0000000..c51b809 Binary files /dev/null and b/graphlcd/logos/RAI 1_l.glcd differ diff --git a/graphlcd/logos/RAI 1_m.glcd b/graphlcd/logos/RAI 1_m.glcd new file mode 100644 index 0000000..0f8541f Binary files /dev/null and b/graphlcd/logos/RAI 1_m.glcd differ diff --git a/graphlcd/logos/RAI 1_v2_m.glcd b/graphlcd/logos/RAI 1_v2_m.glcd new file mode 100644 index 0000000..4f408da Binary files /dev/null and b/graphlcd/logos/RAI 1_v2_m.glcd differ diff --git a/graphlcd/logos/RAI 2_l.glcd b/graphlcd/logos/RAI 2_l.glcd new file mode 100644 index 0000000..a1b5ae6 Binary files /dev/null and b/graphlcd/logos/RAI 2_l.glcd differ diff --git a/graphlcd/logos/RAI 2_m.glcd b/graphlcd/logos/RAI 2_m.glcd new file mode 100644 index 0000000..a82f388 Binary files /dev/null and b/graphlcd/logos/RAI 2_m.glcd differ diff --git a/graphlcd/logos/RAI 2_v2_m.glcd b/graphlcd/logos/RAI 2_v2_m.glcd new file mode 100644 index 0000000..57565ea Binary files /dev/null and b/graphlcd/logos/RAI 2_v2_m.glcd differ diff --git a/graphlcd/logos/RAI 3_l.glcd b/graphlcd/logos/RAI 3_l.glcd new file mode 100644 index 0000000..f28bbb6 Binary files /dev/null and b/graphlcd/logos/RAI 3_l.glcd differ diff --git a/graphlcd/logos/RAI 3_m.glcd b/graphlcd/logos/RAI 3_m.glcd new file mode 100644 index 0000000..98d981d Binary files /dev/null and b/graphlcd/logos/RAI 3_m.glcd differ diff --git a/graphlcd/logos/RAI 3_v2_m.glcd b/graphlcd/logos/RAI 3_v2_m.glcd new file mode 100644 index 0000000..525be2b Binary files /dev/null and b/graphlcd/logos/RAI 3_v2_m.glcd differ diff --git a/graphlcd/logos/RAZE TV_l.glcd b/graphlcd/logos/RAZE TV_l.glcd new file mode 100644 index 0000000..9848ef7 Binary files /dev/null and b/graphlcd/logos/RAZE TV_l.glcd differ diff --git a/graphlcd/logos/RAZE TV_m.glcd b/graphlcd/logos/RAZE TV_m.glcd new file mode 100644 index 0000000..87ebafb Binary files /dev/null and b/graphlcd/logos/RAZE TV_m.glcd differ diff --git a/graphlcd/logos/RAZE TV_v2_m.glcd b/graphlcd/logos/RAZE TV_v2_m.glcd new file mode 100644 index 0000000..514d35f Binary files /dev/null and b/graphlcd/logos/RAZE TV_v2_m.glcd differ diff --git a/graphlcd/logos/RBB BERLIN_l.glcd b/graphlcd/logos/RBB BERLIN_l.glcd new file mode 100644 index 0000000..6b14c51 Binary files /dev/null and b/graphlcd/logos/RBB BERLIN_l.glcd differ diff --git a/graphlcd/logos/RBB BERLIN_m.glcd b/graphlcd/logos/RBB BERLIN_m.glcd new file mode 100644 index 0000000..521ea31 Binary files /dev/null and b/graphlcd/logos/RBB BERLIN_m.glcd differ diff --git a/graphlcd/logos/RBB BRANDENBURG_l.glcd b/graphlcd/logos/RBB BRANDENBURG_l.glcd new file mode 100644 index 0000000..7b30016 Binary files /dev/null and b/graphlcd/logos/RBB BRANDENBURG_l.glcd differ diff --git a/graphlcd/logos/RBB BRANDENBURG_m.glcd b/graphlcd/logos/RBB BRANDENBURG_m.glcd new file mode 100644 index 0000000..98fe110 Binary files /dev/null and b/graphlcd/logos/RBB BRANDENBURG_m.glcd differ diff --git a/graphlcd/logos/REALMADRID_l.glcd b/graphlcd/logos/REALMADRID_l.glcd new file mode 100644 index 0000000..1b57228 Binary files /dev/null and b/graphlcd/logos/REALMADRID_l.glcd differ diff --git a/graphlcd/logos/REALMADRID_m.glcd b/graphlcd/logos/REALMADRID_m.glcd new file mode 100644 index 0000000..40c4d80 Binary files /dev/null and b/graphlcd/logos/REALMADRID_m.glcd differ diff --git a/graphlcd/logos/REPLAY-CD-v2_l.glcd b/graphlcd/logos/REPLAY-CD-v2_l.glcd new file mode 100644 index 0000000..2e8453f Binary files /dev/null and b/graphlcd/logos/REPLAY-CD-v2_l.glcd differ diff --git a/graphlcd/logos/REPLAY-CD-v2_m.glcd b/graphlcd/logos/REPLAY-CD-v2_m.glcd new file mode 100644 index 0000000..fb7d75a Binary files /dev/null and b/graphlcd/logos/REPLAY-CD-v2_m.glcd differ diff --git a/graphlcd/logos/REPLAY-CD_l.glcd b/graphlcd/logos/REPLAY-CD_l.glcd new file mode 100644 index 0000000..95ef265 Binary files /dev/null and b/graphlcd/logos/REPLAY-CD_l.glcd differ diff --git a/graphlcd/logos/REPLAY-CD_m.glcd b/graphlcd/logos/REPLAY-CD_m.glcd new file mode 100644 index 0000000..2bd4022 Binary files /dev/null and b/graphlcd/logos/REPLAY-CD_m.glcd differ diff --git a/graphlcd/logos/REPLAY-DVD-v2_l.glcd b/graphlcd/logos/REPLAY-DVD-v2_l.glcd new file mode 100644 index 0000000..5b7af21 Binary files /dev/null and b/graphlcd/logos/REPLAY-DVD-v2_l.glcd differ diff --git a/graphlcd/logos/REPLAY-DVD_l.glcd b/graphlcd/logos/REPLAY-DVD_l.glcd new file mode 100644 index 0000000..af19b0f Binary files /dev/null and b/graphlcd/logos/REPLAY-DVD_l.glcd differ diff --git a/graphlcd/logos/REPLAY-DVD_m.glcd b/graphlcd/logos/REPLAY-DVD_m.glcd new file mode 100644 index 0000000..6d43fa8 Binary files /dev/null and b/graphlcd/logos/REPLAY-DVD_m.glcd differ diff --git a/graphlcd/logos/REPLAY-FILE_l.glcd b/graphlcd/logos/REPLAY-FILE_l.glcd new file mode 100644 index 0000000..cf60fc4 Binary files /dev/null and b/graphlcd/logos/REPLAY-FILE_l.glcd differ diff --git a/graphlcd/logos/REPLAY-FILE_m.glcd b/graphlcd/logos/REPLAY-FILE_m.glcd new file mode 100644 index 0000000..3a397c1 Binary files /dev/null and b/graphlcd/logos/REPLAY-FILE_m.glcd differ diff --git a/graphlcd/logos/REPLAY-IMAGE_l.glcd b/graphlcd/logos/REPLAY-IMAGE_l.glcd new file mode 100644 index 0000000..6f9ddd1 Binary files /dev/null and b/graphlcd/logos/REPLAY-IMAGE_l.glcd differ diff --git a/graphlcd/logos/REPLAY-IMAGE_m.glcd b/graphlcd/logos/REPLAY-IMAGE_m.glcd new file mode 100644 index 0000000..3f240e5 Binary files /dev/null and b/graphlcd/logos/REPLAY-IMAGE_m.glcd differ diff --git a/graphlcd/logos/REPLAY-MUSIC_l.glcd b/graphlcd/logos/REPLAY-MUSIC_l.glcd new file mode 100644 index 0000000..f1b2266 Binary files /dev/null and b/graphlcd/logos/REPLAY-MUSIC_l.glcd differ diff --git a/graphlcd/logos/REPLAY-MUSIC_m.glcd b/graphlcd/logos/REPLAY-MUSIC_m.glcd new file mode 100644 index 0000000..1ea4d01 Binary files /dev/null and b/graphlcd/logos/REPLAY-MUSIC_m.glcd differ diff --git a/graphlcd/logos/REPLAY-VDR_l.glcd b/graphlcd/logos/REPLAY-VDR_l.glcd new file mode 100644 index 0000000..d879417 Binary files /dev/null and b/graphlcd/logos/REPLAY-VDR_l.glcd differ diff --git a/graphlcd/logos/REPLAY-VDR_m.glcd b/graphlcd/logos/REPLAY-VDR_m.glcd new file mode 100644 index 0000000..7d3a947 Binary files /dev/null and b/graphlcd/logos/REPLAY-VDR_m.glcd differ diff --git a/graphlcd/logos/RFM-TV_m.glcd b/graphlcd/logos/RFM-TV_m.glcd new file mode 100644 index 0000000..eb731f7 Binary files /dev/null and b/graphlcd/logos/RFM-TV_m.glcd differ diff --git a/graphlcd/logos/RHEIN MAIN TV_l.glcd b/graphlcd/logos/RHEIN MAIN TV_l.glcd new file mode 100644 index 0000000..d539d6b Binary files /dev/null and b/graphlcd/logos/RHEIN MAIN TV_l.glcd differ diff --git a/graphlcd/logos/RHEIN MAIN TV_m.glcd b/graphlcd/logos/RHEIN MAIN TV_m.glcd new file mode 100644 index 0000000..b1ddd98 Binary files /dev/null and b/graphlcd/logos/RHEIN MAIN TV_m.glcd differ diff --git a/graphlcd/logos/RHEIN MAIN TV_v2_m.glcd b/graphlcd/logos/RHEIN MAIN TV_v2_m.glcd new file mode 100644 index 0000000..121942f Binary files /dev/null and b/graphlcd/logos/RHEIN MAIN TV_v2_m.glcd differ diff --git a/graphlcd/logos/RIRE ET CHANSONS_l.glcd b/graphlcd/logos/RIRE ET CHANSONS_l.glcd new file mode 100644 index 0000000..47a0168 Binary files /dev/null and b/graphlcd/logos/RIRE ET CHANSONS_l.glcd differ diff --git a/graphlcd/logos/RIRE ET CHANSONS_m.glcd b/graphlcd/logos/RIRE ET CHANSONS_m.glcd new file mode 100644 index 0000000..149cbd8 Binary files /dev/null and b/graphlcd/logos/RIRE ET CHANSONS_m.glcd differ diff --git a/graphlcd/logos/ROCK ANTENNE_l.glcd b/graphlcd/logos/ROCK ANTENNE_l.glcd new file mode 100644 index 0000000..1a7f249 Binary files /dev/null and b/graphlcd/logos/ROCK ANTENNE_l.glcd differ diff --git a/graphlcd/logos/ROCK ANTENNE_m.glcd b/graphlcd/logos/ROCK ANTENNE_m.glcd new file mode 100644 index 0000000..5ef1b5d Binary files /dev/null and b/graphlcd/logos/ROCK ANTENNE_m.glcd differ diff --git a/graphlcd/logos/ROCK ANTENNE_v2_m.glcd b/graphlcd/logos/ROCK ANTENNE_v2_m.glcd new file mode 100644 index 0000000..c1a67d7 Binary files /dev/null and b/graphlcd/logos/ROCK ANTENNE_v2_m.glcd differ diff --git a/graphlcd/logos/RSR COULEUR 3_l.glcd b/graphlcd/logos/RSR COULEUR 3_l.glcd new file mode 100644 index 0000000..7179318 Binary files /dev/null and b/graphlcd/logos/RSR COULEUR 3_l.glcd differ diff --git a/graphlcd/logos/RSR COULEUR 3_m.glcd b/graphlcd/logos/RSR COULEUR 3_m.glcd new file mode 100644 index 0000000..bcd4494 Binary files /dev/null and b/graphlcd/logos/RSR COULEUR 3_m.glcd differ diff --git a/graphlcd/logos/RTBF SAT_l.glcd b/graphlcd/logos/RTBF SAT_l.glcd new file mode 100644 index 0000000..3e3bab1 Binary files /dev/null and b/graphlcd/logos/RTBF SAT_l.glcd differ diff --git a/graphlcd/logos/RTBF SAT_m.glcd b/graphlcd/logos/RTBF SAT_m.glcd new file mode 100644 index 0000000..f84b460 Binary files /dev/null and b/graphlcd/logos/RTBF SAT_m.glcd differ diff --git a/graphlcd/logos/RTL 2 AUSTRIA_l.glcd b/graphlcd/logos/RTL 2 AUSTRIA_l.glcd new file mode 100644 index 0000000..a054c59 Binary files /dev/null and b/graphlcd/logos/RTL 2 AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/RTL 2 AUSTRIA_m.glcd b/graphlcd/logos/RTL 2 AUSTRIA_m.glcd new file mode 100644 index 0000000..13f12a1 Binary files /dev/null and b/graphlcd/logos/RTL 2 AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/RTL 2_l.glcd b/graphlcd/logos/RTL 2_l.glcd new file mode 100644 index 0000000..a054c59 Binary files /dev/null and b/graphlcd/logos/RTL 2_l.glcd differ diff --git a/graphlcd/logos/RTL 2_m.glcd b/graphlcd/logos/RTL 2_m.glcd new file mode 100644 index 0000000..13f12a1 Binary files /dev/null and b/graphlcd/logos/RTL 2_m.glcd differ diff --git a/graphlcd/logos/RTL AUSTRIA_l.glcd b/graphlcd/logos/RTL AUSTRIA_l.glcd new file mode 100644 index 0000000..5c54cfe Binary files /dev/null and b/graphlcd/logos/RTL AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/RTL AUSTRIA_m.glcd b/graphlcd/logos/RTL AUSTRIA_m.glcd new file mode 100644 index 0000000..8c51123 Binary files /dev/null and b/graphlcd/logos/RTL AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/RTL AUSTRIA_v2_m.glcd b/graphlcd/logos/RTL AUSTRIA_v2_m.glcd new file mode 100644 index 0000000..25ee6ea Binary files /dev/null and b/graphlcd/logos/RTL AUSTRIA_v2_m.glcd differ diff --git a/graphlcd/logos/RTL FM_l.glcd b/graphlcd/logos/RTL FM_l.glcd new file mode 100644 index 0000000..a483538 Binary files /dev/null and b/graphlcd/logos/RTL FM_l.glcd differ diff --git a/graphlcd/logos/RTL FM_m.glcd b/graphlcd/logos/RTL FM_m.glcd new file mode 100644 index 0000000..f480738 Binary files /dev/null and b/graphlcd/logos/RTL FM_m.glcd differ diff --git a/graphlcd/logos/RTL RADIO_l.glcd b/graphlcd/logos/RTL RADIO_l.glcd new file mode 100644 index 0000000..d72fc78 Binary files /dev/null and b/graphlcd/logos/RTL RADIO_l.glcd differ diff --git a/graphlcd/logos/RTL RADIO_m.glcd b/graphlcd/logos/RTL RADIO_m.glcd new file mode 100644 index 0000000..865126e Binary files /dev/null and b/graphlcd/logos/RTL RADIO_m.glcd differ diff --git a/graphlcd/logos/RTL SHOP_l.glcd b/graphlcd/logos/RTL SHOP_l.glcd new file mode 100644 index 0000000..18241d6 Binary files /dev/null and b/graphlcd/logos/RTL SHOP_l.glcd differ diff --git a/graphlcd/logos/RTL SHOP_m.glcd b/graphlcd/logos/RTL SHOP_m.glcd new file mode 100644 index 0000000..0fd8fcc Binary files /dev/null and b/graphlcd/logos/RTL SHOP_m.glcd differ diff --git a/graphlcd/logos/RTL SHOP_v2_m.glcd b/graphlcd/logos/RTL SHOP_v2_m.glcd new file mode 100644 index 0000000..1a3c945 Binary files /dev/null and b/graphlcd/logos/RTL SHOP_v2_m.glcd differ diff --git a/graphlcd/logos/RTL TELE LETZEBURG_l.glcd b/graphlcd/logos/RTL TELE LETZEBURG_l.glcd new file mode 100644 index 0000000..3381dfb Binary files /dev/null and b/graphlcd/logos/RTL TELE LETZEBURG_l.glcd differ diff --git a/graphlcd/logos/RTL TELE LETZEBURG_m.glcd b/graphlcd/logos/RTL TELE LETZEBURG_m.glcd new file mode 100644 index 0000000..4b4b4dc Binary files /dev/null and b/graphlcd/logos/RTL TELE LETZEBURG_m.glcd differ diff --git a/graphlcd/logos/RTL TELE LETZEBURG_v2_l.glcd b/graphlcd/logos/RTL TELE LETZEBURG_v2_l.glcd new file mode 100644 index 0000000..9a29b21 Binary files /dev/null and b/graphlcd/logos/RTL TELE LETZEBURG_v2_l.glcd differ diff --git a/graphlcd/logos/RTL TELEVISION_l.glcd b/graphlcd/logos/RTL TELEVISION_l.glcd new file mode 100644 index 0000000..5c54cfe Binary files /dev/null and b/graphlcd/logos/RTL TELEVISION_l.glcd differ diff --git a/graphlcd/logos/RTL TELEVISION_m.glcd b/graphlcd/logos/RTL TELEVISION_m.glcd new file mode 100644 index 0000000..9b13aa2 Binary files /dev/null and b/graphlcd/logos/RTL TELEVISION_m.glcd differ diff --git a/graphlcd/logos/RTL4_l.glcd b/graphlcd/logos/RTL4_l.glcd new file mode 100644 index 0000000..b84524f Binary files /dev/null and b/graphlcd/logos/RTL4_l.glcd differ diff --git a/graphlcd/logos/RTL4_m.glcd b/graphlcd/logos/RTL4_m.glcd new file mode 100644 index 0000000..81c34b5 Binary files /dev/null and b/graphlcd/logos/RTL4_m.glcd differ diff --git a/graphlcd/logos/RTL5_l.glcd b/graphlcd/logos/RTL5_l.glcd new file mode 100644 index 0000000..ab42540 Binary files /dev/null and b/graphlcd/logos/RTL5_l.glcd differ diff --git a/graphlcd/logos/RTL5_m.glcd b/graphlcd/logos/RTL5_m.glcd new file mode 100644 index 0000000..351a26a Binary files /dev/null and b/graphlcd/logos/RTL5_m.glcd differ diff --git a/graphlcd/logos/RTM-MAROC_l.glcd b/graphlcd/logos/RTM-MAROC_l.glcd new file mode 100644 index 0000000..ff303d1 Binary files /dev/null and b/graphlcd/logos/RTM-MAROC_l.glcd differ diff --git a/graphlcd/logos/RTP INT_l.glcd b/graphlcd/logos/RTP INT_l.glcd new file mode 100644 index 0000000..51695de Binary files /dev/null and b/graphlcd/logos/RTP INT_l.glcd differ diff --git a/graphlcd/logos/RTP INT_m.glcd b/graphlcd/logos/RTP INT_m.glcd new file mode 100644 index 0000000..4b7263b Binary files /dev/null and b/graphlcd/logos/RTP INT_m.glcd differ diff --git a/graphlcd/logos/SAILING CHANNEL_l.glcd b/graphlcd/logos/SAILING CHANNEL_l.glcd new file mode 100644 index 0000000..20f8b7e Binary files /dev/null and b/graphlcd/logos/SAILING CHANNEL_l.glcd differ diff --git a/graphlcd/logos/SAT1 AUSTRIA_l.glcd b/graphlcd/logos/SAT1 AUSTRIA_l.glcd new file mode 100644 index 0000000..041b996 Binary files /dev/null and b/graphlcd/logos/SAT1 AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/SAT1 AUSTRIA_m.glcd b/graphlcd/logos/SAT1 AUSTRIA_m.glcd new file mode 100644 index 0000000..2882006 Binary files /dev/null and b/graphlcd/logos/SAT1 AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/SAT1 AUSTRIA_v2_m.glcd b/graphlcd/logos/SAT1 AUSTRIA_v2_m.glcd new file mode 100644 index 0000000..fea6fb2 Binary files /dev/null and b/graphlcd/logos/SAT1 AUSTRIA_v2_m.glcd differ diff --git a/graphlcd/logos/SAT1 SCHWEIZ_l.glcd b/graphlcd/logos/SAT1 SCHWEIZ_l.glcd new file mode 100644 index 0000000..6c7469d Binary files /dev/null and b/graphlcd/logos/SAT1 SCHWEIZ_l.glcd differ diff --git a/graphlcd/logos/SAT1 SCHWEIZ_m.glcd b/graphlcd/logos/SAT1 SCHWEIZ_m.glcd new file mode 100644 index 0000000..d3a5dec Binary files /dev/null and b/graphlcd/logos/SAT1 SCHWEIZ_m.glcd differ diff --git a/graphlcd/logos/SAT1_l.glcd b/graphlcd/logos/SAT1_l.glcd new file mode 100644 index 0000000..bfcead0 Binary files /dev/null and b/graphlcd/logos/SAT1_l.glcd differ diff --git a/graphlcd/logos/SAT1_m.glcd b/graphlcd/logos/SAT1_m.glcd new file mode 100644 index 0000000..f57e0ff Binary files /dev/null and b/graphlcd/logos/SAT1_m.glcd differ diff --git a/graphlcd/logos/SBS6_l.glcd b/graphlcd/logos/SBS6_l.glcd new file mode 100644 index 0000000..d2893da Binary files /dev/null and b/graphlcd/logos/SBS6_l.glcd differ diff --git a/graphlcd/logos/SBS6_m.glcd b/graphlcd/logos/SBS6_m.glcd new file mode 100644 index 0000000..8b10d0f Binary files /dev/null and b/graphlcd/logos/SBS6_m.glcd differ diff --git a/graphlcd/logos/SILVERLINE_l.glcd b/graphlcd/logos/SILVERLINE_l.glcd new file mode 100644 index 0000000..9536a08 Binary files /dev/null and b/graphlcd/logos/SILVERLINE_l.glcd differ diff --git a/graphlcd/logos/SKY RADIO NL_l.glcd b/graphlcd/logos/SKY RADIO NL_l.glcd new file mode 100644 index 0000000..5bf1fef Binary files /dev/null and b/graphlcd/logos/SKY RADIO NL_l.glcd differ diff --git a/graphlcd/logos/SKY RADIO NL_m.glcd b/graphlcd/logos/SKY RADIO NL_m.glcd new file mode 100644 index 0000000..d55eac7 Binary files /dev/null and b/graphlcd/logos/SKY RADIO NL_m.glcd differ diff --git a/graphlcd/logos/SONNENKLAR TV_l.glcd b/graphlcd/logos/SONNENKLAR TV_l.glcd new file mode 100644 index 0000000..31491c9 Binary files /dev/null and b/graphlcd/logos/SONNENKLAR TV_l.glcd differ diff --git a/graphlcd/logos/SONNENKLAR TV_m.glcd b/graphlcd/logos/SONNENKLAR TV_m.glcd new file mode 100644 index 0000000..c0d3943 Binary files /dev/null and b/graphlcd/logos/SONNENKLAR TV_m.glcd differ diff --git a/graphlcd/logos/SONNENKLAR TV_v2_m.glcd b/graphlcd/logos/SONNENKLAR TV_v2_m.glcd new file mode 100644 index 0000000..588c83a Binary files /dev/null and b/graphlcd/logos/SONNENKLAR TV_v2_m.glcd differ diff --git a/graphlcd/logos/SPIEGEL TV XXP_l.glcd b/graphlcd/logos/SPIEGEL TV XXP_l.glcd new file mode 100644 index 0000000..0b937d6 Binary files /dev/null and b/graphlcd/logos/SPIEGEL TV XXP_l.glcd differ diff --git a/graphlcd/logos/SPUTNIK_l.glcd b/graphlcd/logos/SPUTNIK_l.glcd new file mode 100644 index 0000000..08467e4 Binary files /dev/null and b/graphlcd/logos/SPUTNIK_l.glcd differ diff --git a/graphlcd/logos/SPUTNIK_m.glcd b/graphlcd/logos/SPUTNIK_m.glcd new file mode 100644 index 0000000..4e40b73 Binary files /dev/null and b/graphlcd/logos/SPUTNIK_m.glcd differ diff --git a/graphlcd/logos/SPUTNIK_v2_l.glcd b/graphlcd/logos/SPUTNIK_v2_l.glcd new file mode 100644 index 0000000..c785171 Binary files /dev/null and b/graphlcd/logos/SPUTNIK_v2_l.glcd differ diff --git a/graphlcd/logos/SPUTNIK_v2_m.glcd b/graphlcd/logos/SPUTNIK_v2_m.glcd new file mode 100644 index 0000000..2f45511 Binary files /dev/null and b/graphlcd/logos/SPUTNIK_v2_m.glcd differ diff --git a/graphlcd/logos/SR 1_l.glcd b/graphlcd/logos/SR 1_l.glcd new file mode 100644 index 0000000..92ec5cc Binary files /dev/null and b/graphlcd/logos/SR 1_l.glcd differ diff --git a/graphlcd/logos/SR 1_m.glcd b/graphlcd/logos/SR 1_m.glcd new file mode 100644 index 0000000..b852f51 Binary files /dev/null and b/graphlcd/logos/SR 1_m.glcd differ diff --git a/graphlcd/logos/SR FERNSEHEN SW_l.glcd b/graphlcd/logos/SR FERNSEHEN SW_l.glcd new file mode 100644 index 0000000..a543eda Binary files /dev/null and b/graphlcd/logos/SR FERNSEHEN SW_l.glcd differ diff --git a/graphlcd/logos/SR FERNSEHEN SW_m.glcd b/graphlcd/logos/SR FERNSEHEN SW_m.glcd new file mode 100644 index 0000000..a320e1d Binary files /dev/null and b/graphlcd/logos/SR FERNSEHEN SW_m.glcd differ diff --git a/graphlcd/logos/SR FERNSEHEN SW_v2_m.glcd b/graphlcd/logos/SR FERNSEHEN SW_v2_m.glcd new file mode 100644 index 0000000..942a6a7 Binary files /dev/null and b/graphlcd/logos/SR FERNSEHEN SW_v2_m.glcd differ diff --git a/graphlcd/logos/STUDIO UNIVERSAL_l.glcd b/graphlcd/logos/STUDIO UNIVERSAL_l.glcd new file mode 100644 index 0000000..83bf5e9 Binary files /dev/null and b/graphlcd/logos/STUDIO UNIVERSAL_l.glcd differ diff --git a/graphlcd/logos/STUDIO UNIVERSAL_m.glcd b/graphlcd/logos/STUDIO UNIVERSAL_m.glcd new file mode 100644 index 0000000..5161ac6 Binary files /dev/null and b/graphlcd/logos/STUDIO UNIVERSAL_m.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS BW_l.glcd b/graphlcd/logos/SUEDWEST FS BW_l.glcd new file mode 100644 index 0000000..db4a379 Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS BW_l.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS BW_m.glcd b/graphlcd/logos/SUEDWEST FS BW_m.glcd new file mode 100644 index 0000000..aad0a8b Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS BW_m.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS BW_v2_l.glcd b/graphlcd/logos/SUEDWEST FS BW_v2_l.glcd new file mode 100644 index 0000000..8ba6648 Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS BW_v2_l.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS RP_l.glcd b/graphlcd/logos/SUEDWEST FS RP_l.glcd new file mode 100644 index 0000000..59529d2 Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS RP_l.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS RP_m.glcd b/graphlcd/logos/SUEDWEST FS RP_m.glcd new file mode 100644 index 0000000..ef6109d Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS RP_m.glcd differ diff --git a/graphlcd/logos/SUEDWEST FS RP_v2_l.glcd b/graphlcd/logos/SUEDWEST FS RP_v2_l.glcd new file mode 100644 index 0000000..6a2302a Binary files /dev/null and b/graphlcd/logos/SUEDWEST FS RP_v2_l.glcd differ diff --git a/graphlcd/logos/SUNSHINE LIVE_l.glcd b/graphlcd/logos/SUNSHINE LIVE_l.glcd new file mode 100644 index 0000000..fd152b0 Binary files /dev/null and b/graphlcd/logos/SUNSHINE LIVE_l.glcd differ diff --git a/graphlcd/logos/SUNSHINE LIVE_m.glcd b/graphlcd/logos/SUNSHINE LIVE_m.glcd new file mode 100644 index 0000000..39d0871 Binary files /dev/null and b/graphlcd/logos/SUNSHINE LIVE_m.glcd differ diff --git a/graphlcd/logos/SUNSHINE LIVE_v2_m.glcd b/graphlcd/logos/SUNSHINE LIVE_v2_m.glcd new file mode 100644 index 0000000..a8a92f4 Binary files /dev/null and b/graphlcd/logos/SUNSHINE LIVE_v2_m.glcd differ diff --git a/graphlcd/logos/SUPER RTL AUSTRIA_l.glcd b/graphlcd/logos/SUPER RTL AUSTRIA_l.glcd new file mode 100644 index 0000000..fbb8a0f Binary files /dev/null and b/graphlcd/logos/SUPER RTL AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/SUPER RTL AUSTRIA_m.glcd b/graphlcd/logos/SUPER RTL AUSTRIA_m.glcd new file mode 100644 index 0000000..5caba7c Binary files /dev/null and b/graphlcd/logos/SUPER RTL AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/SUPER RTL_l.glcd b/graphlcd/logos/SUPER RTL_l.glcd new file mode 100644 index 0000000..fbb8a0f Binary files /dev/null and b/graphlcd/logos/SUPER RTL_l.glcd differ diff --git a/graphlcd/logos/SUPER RTL_m.glcd b/graphlcd/logos/SUPER RTL_m.glcd new file mode 100644 index 0000000..24fb28b Binary files /dev/null and b/graphlcd/logos/SUPER RTL_m.glcd differ diff --git a/graphlcd/logos/SUPER RTL_v2_l.glcd b/graphlcd/logos/SUPER RTL_v2_l.glcd new file mode 100644 index 0000000..2e08d09 Binary files /dev/null and b/graphlcd/logos/SUPER RTL_v2_l.glcd differ diff --git a/graphlcd/logos/SWR2_l.glcd b/graphlcd/logos/SWR2_l.glcd new file mode 100644 index 0000000..2925575 Binary files /dev/null and b/graphlcd/logos/SWR2_l.glcd differ diff --git a/graphlcd/logos/SWR2_m.glcd b/graphlcd/logos/SWR2_m.glcd new file mode 100644 index 0000000..c874f4c Binary files /dev/null and b/graphlcd/logos/SWR2_m.glcd differ diff --git a/graphlcd/logos/SWR2_v2_m.glcd b/graphlcd/logos/SWR2_v2_m.glcd new file mode 100644 index 0000000..224d21d Binary files /dev/null and b/graphlcd/logos/SWR2_v2_m.glcd differ diff --git a/graphlcd/logos/Sat1 SCHWEIZ_v2_m.glcd b/graphlcd/logos/Sat1 SCHWEIZ_v2_m.glcd new file mode 100644 index 0000000..a01a9e0 Binary files /dev/null and b/graphlcd/logos/Sat1 SCHWEIZ_v2_m.glcd differ diff --git a/graphlcd/logos/TANGO TV_l.glcd b/graphlcd/logos/TANGO TV_l.glcd new file mode 100644 index 0000000..e90433a Binary files /dev/null and b/graphlcd/logos/TANGO TV_l.glcd differ diff --git a/graphlcd/logos/TANGO TV_m.glcd b/graphlcd/logos/TANGO TV_m.glcd new file mode 100644 index 0000000..402945a Binary files /dev/null and b/graphlcd/logos/TANGO TV_m.glcd differ diff --git a/graphlcd/logos/TELE 5_l.glcd b/graphlcd/logos/TELE 5_l.glcd new file mode 100644 index 0000000..2ecac47 Binary files /dev/null and b/graphlcd/logos/TELE 5_l.glcd differ diff --git a/graphlcd/logos/TELE 5_m.glcd b/graphlcd/logos/TELE 5_m.glcd new file mode 100644 index 0000000..0409527 Binary files /dev/null and b/graphlcd/logos/TELE 5_m.glcd differ diff --git a/graphlcd/logos/TELE 5_v2_m.glcd b/graphlcd/logos/TELE 5_v2_m.glcd new file mode 100644 index 0000000..cdbb250 Binary files /dev/null and b/graphlcd/logos/TELE 5_v2_m.glcd differ diff --git a/graphlcd/logos/TMF_l.glcd b/graphlcd/logos/TMF_l.glcd new file mode 100644 index 0000000..5f32063 Binary files /dev/null and b/graphlcd/logos/TMF_l.glcd differ diff --git a/graphlcd/logos/TMF_m.glcd b/graphlcd/logos/TMF_m.glcd new file mode 100644 index 0000000..70b2d0e Binary files /dev/null and b/graphlcd/logos/TMF_m.glcd differ diff --git a/graphlcd/logos/TRACE TV_l.glcd b/graphlcd/logos/TRACE TV_l.glcd new file mode 100644 index 0000000..c9bfb2a Binary files /dev/null and b/graphlcd/logos/TRACE TV_l.glcd differ diff --git a/graphlcd/logos/TRW AM_l.glcd b/graphlcd/logos/TRW AM_l.glcd new file mode 100644 index 0000000..ffdfad5 Binary files /dev/null and b/graphlcd/logos/TRW AM_l.glcd differ diff --git a/graphlcd/logos/TRW AM_m.glcd b/graphlcd/logos/TRW AM_m.glcd new file mode 100644 index 0000000..c2b8d15 Binary files /dev/null and b/graphlcd/logos/TRW AM_m.glcd differ diff --git a/graphlcd/logos/TV 5_l.glcd b/graphlcd/logos/TV 5_l.glcd new file mode 100644 index 0000000..ee181f5 Binary files /dev/null and b/graphlcd/logos/TV 5_l.glcd differ diff --git a/graphlcd/logos/TV BERLIN_l.glcd b/graphlcd/logos/TV BERLIN_l.glcd new file mode 100644 index 0000000..32de271 Binary files /dev/null and b/graphlcd/logos/TV BERLIN_l.glcd differ diff --git a/graphlcd/logos/TV BERLIN_m.glcd b/graphlcd/logos/TV BERLIN_m.glcd new file mode 100644 index 0000000..84c5d07 Binary files /dev/null and b/graphlcd/logos/TV BERLIN_m.glcd differ diff --git a/graphlcd/logos/TV BERLIN_v2_l.glcd b/graphlcd/logos/TV BERLIN_v2_l.glcd new file mode 100644 index 0000000..5b0839f Binary files /dev/null and b/graphlcd/logos/TV BERLIN_v2_l.glcd differ diff --git a/graphlcd/logos/TV BERLIN_v2_m.glcd b/graphlcd/logos/TV BERLIN_v2_m.glcd new file mode 100644 index 0000000..a26a9db Binary files /dev/null and b/graphlcd/logos/TV BERLIN_v2_m.glcd differ diff --git a/graphlcd/logos/TV BERLIN_v3_m.glcd b/graphlcd/logos/TV BERLIN_v3_m.glcd new file mode 100644 index 0000000..779b35e Binary files /dev/null and b/graphlcd/logos/TV BERLIN_v3_m.glcd differ diff --git a/graphlcd/logos/TV GALICIA_m.glcd b/graphlcd/logos/TV GALICIA_m.glcd new file mode 100644 index 0000000..2f8c65a Binary files /dev/null and b/graphlcd/logos/TV GALICIA_m.glcd differ diff --git a/graphlcd/logos/TV GUSTO_l.glcd b/graphlcd/logos/TV GUSTO_l.glcd new file mode 100644 index 0000000..d344f37 Binary files /dev/null and b/graphlcd/logos/TV GUSTO_l.glcd differ diff --git a/graphlcd/logos/TV TRAVEL SHOP_l.glcd b/graphlcd/logos/TV TRAVEL SHOP_l.glcd new file mode 100644 index 0000000..ba4fd8a Binary files /dev/null and b/graphlcd/logos/TV TRAVEL SHOP_l.glcd differ diff --git a/graphlcd/logos/TV TRAVEL SHOP_m.glcd b/graphlcd/logos/TV TRAVEL SHOP_m.glcd new file mode 100644 index 0000000..e143ea2 Binary files /dev/null and b/graphlcd/logos/TV TRAVEL SHOP_m.glcd differ diff --git a/graphlcd/logos/TV TRAVEL SHOP_v2_m.glcd b/graphlcd/logos/TV TRAVEL SHOP_v2_m.glcd new file mode 100644 index 0000000..c38eab2 Binary files /dev/null and b/graphlcd/logos/TV TRAVEL SHOP_v2_m.glcd differ diff --git a/graphlcd/logos/TV5 EUROPE_l.glcd b/graphlcd/logos/TV5 EUROPE_l.glcd new file mode 100644 index 0000000..55d1905 Binary files /dev/null and b/graphlcd/logos/TV5 EUROPE_l.glcd differ diff --git a/graphlcd/logos/TV5 EUROPE_m.glcd b/graphlcd/logos/TV5 EUROPE_m.glcd new file mode 100644 index 0000000..11a32ae Binary files /dev/null and b/graphlcd/logos/TV5 EUROPE_m.glcd differ diff --git a/graphlcd/logos/TV6_l.glcd b/graphlcd/logos/TV6_l.glcd new file mode 100644 index 0000000..ff202ab Binary files /dev/null and b/graphlcd/logos/TV6_l.glcd differ diff --git a/graphlcd/logos/TV6_m.glcd b/graphlcd/logos/TV6_m.glcd new file mode 100644 index 0000000..bc14ec3 Binary files /dev/null and b/graphlcd/logos/TV6_m.glcd differ diff --git a/graphlcd/logos/TV7_l.glcd b/graphlcd/logos/TV7_l.glcd new file mode 100644 index 0000000..30c8d92 Binary files /dev/null and b/graphlcd/logos/TV7_l.glcd differ diff --git a/graphlcd/logos/TVC INT_l.glcd b/graphlcd/logos/TVC INT_l.glcd new file mode 100644 index 0000000..c809267 Binary files /dev/null and b/graphlcd/logos/TVC INT_l.glcd differ diff --git a/graphlcd/logos/TVC INT_m.glcd b/graphlcd/logos/TVC INT_m.glcd new file mode 100644 index 0000000..c528d62 Binary files /dev/null and b/graphlcd/logos/TVC INT_m.glcd differ diff --git a/graphlcd/logos/TVE INT_l.glcd b/graphlcd/logos/TVE INT_l.glcd new file mode 100644 index 0000000..f8056bc Binary files /dev/null and b/graphlcd/logos/TVE INT_l.glcd differ diff --git a/graphlcd/logos/TVE INT_m.glcd b/graphlcd/logos/TVE INT_m.glcd new file mode 100644 index 0000000..a38ddbd Binary files /dev/null and b/graphlcd/logos/TVE INT_m.glcd differ diff --git a/graphlcd/logos/TW1_l.glcd b/graphlcd/logos/TW1_l.glcd new file mode 100644 index 0000000..5928b5f Binary files /dev/null and b/graphlcd/logos/TW1_l.glcd differ diff --git a/graphlcd/logos/TW1_m.glcd b/graphlcd/logos/TW1_m.glcd new file mode 100644 index 0000000..fabea79 Binary files /dev/null and b/graphlcd/logos/TW1_m.glcd differ diff --git a/graphlcd/logos/TW1_v2_m.glcd b/graphlcd/logos/TW1_v2_m.glcd new file mode 100644 index 0000000..ac93a8c Binary files /dev/null and b/graphlcd/logos/TW1_v2_m.glcd differ diff --git a/graphlcd/logos/V8_l.glcd b/graphlcd/logos/V8_l.glcd new file mode 100644 index 0000000..6cadbf8 Binary files /dev/null and b/graphlcd/logos/V8_l.glcd differ diff --git a/graphlcd/logos/V8_m.glcd b/graphlcd/logos/V8_m.glcd new file mode 100644 index 0000000..c51daf9 Binary files /dev/null and b/graphlcd/logos/V8_m.glcd differ diff --git a/graphlcd/logos/VERONICA RADIO_l.glcd b/graphlcd/logos/VERONICA RADIO_l.glcd new file mode 100644 index 0000000..a34e1fa Binary files /dev/null and b/graphlcd/logos/VERONICA RADIO_l.glcd differ diff --git a/graphlcd/logos/VERONICA RADIO_m.glcd b/graphlcd/logos/VERONICA RADIO_m.glcd new file mode 100644 index 0000000..01767c2 Binary files /dev/null and b/graphlcd/logos/VERONICA RADIO_m.glcd differ diff --git a/graphlcd/logos/VH1 CLASSIC_l.glcd b/graphlcd/logos/VH1 CLASSIC_l.glcd new file mode 100644 index 0000000..63cb4a9 Binary files /dev/null and b/graphlcd/logos/VH1 CLASSIC_l.glcd differ diff --git a/graphlcd/logos/VH1 CLASSIC_m.glcd b/graphlcd/logos/VH1 CLASSIC_m.glcd new file mode 100644 index 0000000..c2ca403 Binary files /dev/null and b/graphlcd/logos/VH1 CLASSIC_m.glcd differ diff --git a/graphlcd/logos/VH1_l.glcd b/graphlcd/logos/VH1_l.glcd new file mode 100644 index 0000000..b48d07c Binary files /dev/null and b/graphlcd/logos/VH1_l.glcd differ diff --git a/graphlcd/logos/VH1_m.glcd b/graphlcd/logos/VH1_m.glcd new file mode 100644 index 0000000..a092a41 Binary files /dev/null and b/graphlcd/logos/VH1_m.glcd differ diff --git a/graphlcd/logos/VIBRATION_l.glcd b/graphlcd/logos/VIBRATION_l.glcd new file mode 100644 index 0000000..ddba5c6 Binary files /dev/null and b/graphlcd/logos/VIBRATION_l.glcd differ diff --git a/graphlcd/logos/VIBRATION_m.glcd b/graphlcd/logos/VIBRATION_m.glcd new file mode 100644 index 0000000..7118bc7 Binary files /dev/null and b/graphlcd/logos/VIBRATION_m.glcd differ diff --git a/graphlcd/logos/VIVA PLUS_l.glcd b/graphlcd/logos/VIVA PLUS_l.glcd new file mode 100644 index 0000000..8e9d4d0 Binary files /dev/null and b/graphlcd/logos/VIVA PLUS_l.glcd differ diff --git a/graphlcd/logos/VIVA PLUS_m.glcd b/graphlcd/logos/VIVA PLUS_m.glcd new file mode 100644 index 0000000..fc087da Binary files /dev/null and b/graphlcd/logos/VIVA PLUS_m.glcd differ diff --git a/graphlcd/logos/VIVA PLUS_v2_m.glcd b/graphlcd/logos/VIVA PLUS_v2_m.glcd new file mode 100644 index 0000000..c823d68 Binary files /dev/null and b/graphlcd/logos/VIVA PLUS_v2_m.glcd differ diff --git a/graphlcd/logos/VIVA_l.glcd b/graphlcd/logos/VIVA_l.glcd new file mode 100644 index 0000000..b0ebf2c Binary files /dev/null and b/graphlcd/logos/VIVA_l.glcd differ diff --git a/graphlcd/logos/VIVA_m.glcd b/graphlcd/logos/VIVA_m.glcd new file mode 100644 index 0000000..2cd6258 Binary files /dev/null and b/graphlcd/logos/VIVA_m.glcd differ diff --git a/graphlcd/logos/VOLTAGE_l.glcd b/graphlcd/logos/VOLTAGE_l.glcd new file mode 100644 index 0000000..f5e5ea8 Binary files /dev/null and b/graphlcd/logos/VOLTAGE_l.glcd differ diff --git a/graphlcd/logos/VOLTAGE_m.glcd b/graphlcd/logos/VOLTAGE_m.glcd new file mode 100644 index 0000000..8e45857 Binary files /dev/null and b/graphlcd/logos/VOLTAGE_m.glcd differ diff --git a/graphlcd/logos/VOX AUSTRIA_l.glcd b/graphlcd/logos/VOX AUSTRIA_l.glcd new file mode 100644 index 0000000..6a884a5 Binary files /dev/null and b/graphlcd/logos/VOX AUSTRIA_l.glcd differ diff --git a/graphlcd/logos/VOX AUSTRIA_m.glcd b/graphlcd/logos/VOX AUSTRIA_m.glcd new file mode 100644 index 0000000..11049d8 Binary files /dev/null and b/graphlcd/logos/VOX AUSTRIA_m.glcd differ diff --git a/graphlcd/logos/VOX_l.glcd b/graphlcd/logos/VOX_l.glcd new file mode 100644 index 0000000..6a884a5 Binary files /dev/null and b/graphlcd/logos/VOX_l.glcd differ diff --git a/graphlcd/logos/VOX_m.glcd b/graphlcd/logos/VOX_m.glcd new file mode 100644 index 0000000..1202e85 Binary files /dev/null and b/graphlcd/logos/VOX_m.glcd differ diff --git a/graphlcd/logos/VOX_v2_m.glcd b/graphlcd/logos/VOX_v2_m.glcd new file mode 100644 index 0000000..f2a3bd2 Binary files /dev/null and b/graphlcd/logos/VOX_v2_m.glcd differ diff --git a/graphlcd/logos/WDR3_l.glcd b/graphlcd/logos/WDR3_l.glcd new file mode 100644 index 0000000..12264fb Binary files /dev/null and b/graphlcd/logos/WDR3_l.glcd differ diff --git a/graphlcd/logos/WDR3_m.glcd b/graphlcd/logos/WDR3_m.glcd new file mode 100644 index 0000000..dcc883a Binary files /dev/null and b/graphlcd/logos/WDR3_m.glcd differ diff --git a/graphlcd/logos/WDR5_l.glcd b/graphlcd/logos/WDR5_l.glcd new file mode 100644 index 0000000..f38cde9 Binary files /dev/null and b/graphlcd/logos/WDR5_l.glcd differ diff --git a/graphlcd/logos/WDR5_m.glcd b/graphlcd/logos/WDR5_m.glcd new file mode 100644 index 0000000..7a2f3c8 Binary files /dev/null and b/graphlcd/logos/WDR5_m.glcd differ diff --git a/graphlcd/logos/WDR_l.glcd b/graphlcd/logos/WDR_l.glcd new file mode 100644 index 0000000..b44031c Binary files /dev/null and b/graphlcd/logos/WDR_l.glcd differ diff --git a/graphlcd/logos/WDR_m.glcd b/graphlcd/logos/WDR_m.glcd new file mode 100644 index 0000000..7bad7c0 Binary files /dev/null and b/graphlcd/logos/WDR_m.glcd differ diff --git a/graphlcd/logos/WDR_v2_l.glcd b/graphlcd/logos/WDR_v2_l.glcd new file mode 100644 index 0000000..f1af02a Binary files /dev/null and b/graphlcd/logos/WDR_v2_l.glcd differ diff --git a/graphlcd/logos/WDR_v2_m.glcd b/graphlcd/logos/WDR_v2_m.glcd new file mode 100644 index 0000000..0dd0d82 Binary files /dev/null and b/graphlcd/logos/WDR_v2_m.glcd differ diff --git a/graphlcd/logos/WDR_v3_m.glcd b/graphlcd/logos/WDR_v3_m.glcd new file mode 100644 index 0000000..0f04d43 Binary files /dev/null and b/graphlcd/logos/WDR_v3_m.glcd differ diff --git a/graphlcd/logos/WEIN TV_l.glcd b/graphlcd/logos/WEIN TV_l.glcd new file mode 100644 index 0000000..b537280 Binary files /dev/null and b/graphlcd/logos/WEIN TV_l.glcd differ diff --git a/graphlcd/logos/WETTER FERNSEHEN_l.glcd b/graphlcd/logos/WETTER FERNSEHEN_l.glcd new file mode 100644 index 0000000..0095d81 Binary files /dev/null and b/graphlcd/logos/WETTER FERNSEHEN_l.glcd differ diff --git a/graphlcd/logos/WISHLINE_l.glcd b/graphlcd/logos/WISHLINE_l.glcd new file mode 100644 index 0000000..d9d6b5c Binary files /dev/null and b/graphlcd/logos/WISHLINE_l.glcd differ diff --git a/graphlcd/logos/WISHLINE_m.glcd b/graphlcd/logos/WISHLINE_m.glcd new file mode 100644 index 0000000..2d281a8 Binary files /dev/null and b/graphlcd/logos/WISHLINE_m.glcd differ diff --git a/graphlcd/logos/X-ZONE_l.glcd b/graphlcd/logos/X-ZONE_l.glcd new file mode 100644 index 0000000..43c1866 Binary files /dev/null and b/graphlcd/logos/X-ZONE_l.glcd differ diff --git a/graphlcd/logos/X-ZONE_m.glcd b/graphlcd/logos/X-ZONE_m.glcd new file mode 100644 index 0000000..e8ff623 Binary files /dev/null and b/graphlcd/logos/X-ZONE_m.glcd differ diff --git a/graphlcd/logos/XXL_l.glcd b/graphlcd/logos/XXL_l.glcd new file mode 100644 index 0000000..3232a51 Binary files /dev/null and b/graphlcd/logos/XXL_l.glcd differ diff --git a/graphlcd/logos/XXL_m.glcd b/graphlcd/logos/XXL_m.glcd new file mode 100644 index 0000000..04d1224 Binary files /dev/null and b/graphlcd/logos/XXL_m.glcd differ diff --git a/graphlcd/logos/XXP_l.glcd b/graphlcd/logos/XXP_l.glcd new file mode 100644 index 0000000..70d2d28 Binary files /dev/null and b/graphlcd/logos/XXP_l.glcd differ diff --git a/graphlcd/logos/XXP_m.glcd b/graphlcd/logos/XXP_m.glcd new file mode 100644 index 0000000..84eb572 Binary files /dev/null and b/graphlcd/logos/XXP_m.glcd differ diff --git a/graphlcd/logos/XXP_v2_m.glcd b/graphlcd/logos/XXP_v2_m.glcd new file mode 100644 index 0000000..55b0897 Binary files /dev/null and b/graphlcd/logos/XXP_v2_m.glcd differ diff --git a/graphlcd/logos/YAM FM_l.glcd b/graphlcd/logos/YAM FM_l.glcd new file mode 100644 index 0000000..e6206b7 Binary files /dev/null and b/graphlcd/logos/YAM FM_l.glcd differ diff --git a/graphlcd/logos/YAM FM_m.glcd b/graphlcd/logos/YAM FM_m.glcd new file mode 100644 index 0000000..f059f03 Binary files /dev/null and b/graphlcd/logos/YAM FM_m.glcd differ diff --git a/graphlcd/logos/YORIN FM_l.glcd b/graphlcd/logos/YORIN FM_l.glcd new file mode 100644 index 0000000..5d1d13e Binary files /dev/null and b/graphlcd/logos/YORIN FM_l.glcd differ diff --git a/graphlcd/logos/YORIN FM_m.glcd b/graphlcd/logos/YORIN FM_m.glcd new file mode 100644 index 0000000..66d2eee Binary files /dev/null and b/graphlcd/logos/YORIN FM_m.glcd differ diff --git a/graphlcd/logos/YOU FM_l.glcd b/graphlcd/logos/YOU FM_l.glcd new file mode 100644 index 0000000..a038514 Binary files /dev/null and b/graphlcd/logos/YOU FM_l.glcd differ diff --git a/graphlcd/logos/YOU FM_m.glcd b/graphlcd/logos/YOU FM_m.glcd new file mode 100644 index 0000000..e99fd9c Binary files /dev/null and b/graphlcd/logos/YOU FM_m.glcd differ diff --git a/graphlcd/logos/ZDF DOKU-KIKA_l.glcd b/graphlcd/logos/ZDF DOKU-KIKA_l.glcd new file mode 100644 index 0000000..e542a01 Binary files /dev/null and b/graphlcd/logos/ZDF DOKU-KIKA_l.glcd differ diff --git a/graphlcd/logos/ZDF DOKU-KIKA_m.glcd b/graphlcd/logos/ZDF DOKU-KIKA_m.glcd new file mode 100644 index 0000000..552d2f9 Binary files /dev/null and b/graphlcd/logos/ZDF DOKU-KIKA_m.glcd differ diff --git a/graphlcd/logos/ZDF DOKUKANAL_l.glcd b/graphlcd/logos/ZDF DOKUKANAL_l.glcd new file mode 100644 index 0000000..2ccd76e Binary files /dev/null and b/graphlcd/logos/ZDF DOKUKANAL_l.glcd differ diff --git a/graphlcd/logos/ZDF DOKUKANAL_m.glcd b/graphlcd/logos/ZDF DOKUKANAL_m.glcd new file mode 100644 index 0000000..d822d2d Binary files /dev/null and b/graphlcd/logos/ZDF DOKUKANAL_m.glcd differ diff --git a/graphlcd/logos/ZDF DOKUKANAL_v2_l.glcd b/graphlcd/logos/ZDF DOKUKANAL_v2_l.glcd new file mode 100644 index 0000000..b3f0dda Binary files /dev/null and b/graphlcd/logos/ZDF DOKUKANAL_v2_l.glcd differ diff --git a/graphlcd/logos/ZDF DOKUKANAL_v2_m.glcd b/graphlcd/logos/ZDF DOKUKANAL_v2_m.glcd new file mode 100644 index 0000000..93dac7b Binary files /dev/null and b/graphlcd/logos/ZDF DOKUKANAL_v2_m.glcd differ diff --git a/graphlcd/logos/ZDF INFO-3SAT_l.glcd b/graphlcd/logos/ZDF INFO-3SAT_l.glcd new file mode 100644 index 0000000..1bb5c30 Binary files /dev/null and b/graphlcd/logos/ZDF INFO-3SAT_l.glcd differ diff --git a/graphlcd/logos/ZDF INFO-3SAT_m.glcd b/graphlcd/logos/ZDF INFO-3SAT_m.glcd new file mode 100644 index 0000000..fce44d8 Binary files /dev/null and b/graphlcd/logos/ZDF INFO-3SAT_m.glcd differ diff --git a/graphlcd/logos/ZDF INFOKANAL_l.glcd b/graphlcd/logos/ZDF INFOKANAL_l.glcd new file mode 100644 index 0000000..7ba43e8 Binary files /dev/null and b/graphlcd/logos/ZDF INFOKANAL_l.glcd differ diff --git a/graphlcd/logos/ZDF INFOKANAL_m.glcd b/graphlcd/logos/ZDF INFOKANAL_m.glcd new file mode 100644 index 0000000..58ebe28 Binary files /dev/null and b/graphlcd/logos/ZDF INFOKANAL_m.glcd differ diff --git a/graphlcd/logos/ZDF INFOKANAL_v2_l.glcd b/graphlcd/logos/ZDF INFOKANAL_v2_l.glcd new file mode 100644 index 0000000..5f515b9 Binary files /dev/null and b/graphlcd/logos/ZDF INFOKANAL_v2_l.glcd differ diff --git a/graphlcd/logos/ZDF INFOKANAL_v2_m.glcd b/graphlcd/logos/ZDF INFOKANAL_v2_m.glcd new file mode 100644 index 0000000..1a35629 Binary files /dev/null and b/graphlcd/logos/ZDF INFOKANAL_v2_m.glcd differ diff --git a/graphlcd/logos/ZDF THEATERKANAL_l.glcd b/graphlcd/logos/ZDF THEATERKANAL_l.glcd new file mode 100644 index 0000000..30caeee Binary files /dev/null and b/graphlcd/logos/ZDF THEATERKANAL_l.glcd differ diff --git a/graphlcd/logos/ZDF THEATERKANAL_v2_l.glcd b/graphlcd/logos/ZDF THEATERKANAL_v2_l.glcd new file mode 100644 index 0000000..8e0cd92 Binary files /dev/null and b/graphlcd/logos/ZDF THEATERKANAL_v2_l.glcd differ diff --git a/graphlcd/logos/ZDF THEATERKANAL_v2_m.glcd b/graphlcd/logos/ZDF THEATERKANAL_v2_m.glcd new file mode 100644 index 0000000..646e9a4 Binary files /dev/null and b/graphlcd/logos/ZDF THEATERKANAL_v2_m.glcd differ diff --git a/graphlcd/logos/ZDF_THEATERKANAL_m.glcd b/graphlcd/logos/ZDF_THEATERKANAL_m.glcd new file mode 100644 index 0000000..8363a6c Binary files /dev/null and b/graphlcd/logos/ZDF_THEATERKANAL_m.glcd differ diff --git a/graphlcd/logos/ZDF_l.glcd b/graphlcd/logos/ZDF_l.glcd new file mode 100644 index 0000000..4529df6 Binary files /dev/null and b/graphlcd/logos/ZDF_l.glcd differ diff --git a/graphlcd/logos/ZDF_m.glcd b/graphlcd/logos/ZDF_m.glcd new file mode 100644 index 0000000..bc57463 Binary files /dev/null and b/graphlcd/logos/ZDF_m.glcd differ diff --git a/graphlcd/logos/ZIK_l.glcd b/graphlcd/logos/ZIK_l.glcd new file mode 100644 index 0000000..98315b7 Binary files /dev/null and b/graphlcd/logos/ZIK_l.glcd differ diff --git a/graphlcd/logos/ZIK_m.glcd b/graphlcd/logos/ZIK_m.glcd new file mode 100644 index 0000000..3def476 Binary files /dev/null and b/graphlcd/logos/ZIK_m.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-CD_l.glcd b/graphlcd/logos/animated/REPLAY-CD_l.glcd new file mode 100644 index 0000000..9c09643 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-CD_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-DVD_l.glcd b/graphlcd/logos/animated/REPLAY-DVD_l.glcd new file mode 100644 index 0000000..0385097 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-DVD_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-FILE_l.glcd b/graphlcd/logos/animated/REPLAY-FILE_l.glcd new file mode 100644 index 0000000..fd2e9d6 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-FILE_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-IMAGE_l.glcd b/graphlcd/logos/animated/REPLAY-IMAGE_l.glcd new file mode 100644 index 0000000..f5b5270 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-IMAGE_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-MUSIC_l.glcd b/graphlcd/logos/animated/REPLAY-MUSIC_l.glcd new file mode 100644 index 0000000..8013bb3 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-MUSIC_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-VDR_l.glcd b/graphlcd/logos/animated/REPLAY-VDR_l.glcd new file mode 100644 index 0000000..5144e13 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-VDR_l.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-VDR_m.glcd b/graphlcd/logos/animated/REPLAY-VDR_m.glcd new file mode 100644 index 0000000..4e81191 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-VDR_m.glcd differ diff --git a/graphlcd/logos/animated/REPLAY-VDR_v2_l.glcd b/graphlcd/logos/animated/REPLAY-VDR_v2_l.glcd new file mode 100644 index 0000000..07c7f03 Binary files /dev/null and b/graphlcd/logos/animated/REPLAY-VDR_v2_l.glcd differ diff --git a/graphlcd/logos/animated/SAT1_l.glcd b/graphlcd/logos/animated/SAT1_l.glcd new file mode 100644 index 0000000..32b1cf6 Binary files /dev/null and b/graphlcd/logos/animated/SAT1_l.glcd differ diff --git a/i18n.c b/i18n.c new file mode 100644 index 0000000..0d75e2e --- /dev/null +++ b/i18n.c @@ -0,0 +1,970 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * i18n.c - Internationalization + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include "i18n.h" + + +const tI18nPhrase Phrases[] = +{ + { + "Output to graphic LCD",// English + "Ausgabe auf einem Grafik-LCD",// Deutsch + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Affichage sur un écran LCD",// Français + "",// TODO Norsk + "Ohjaa graafista LCD-näyttöä",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Ecran grafic LCD/VFD",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Plugin active", + "Plugin aktiv", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Plugin actif", + "",// TODO Norsk + "Laajennos aktiivinen",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Plugin activat",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "JanFebMarAprMayJunJulAugSepOctNovDec", + "JanFebMärAprMaiJunJulAugSepOktNovDez", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "JanFevMarAvrMaiJunJuiAouSepOctNovDec", + "",// TODO Norsk + "TamHelMaaHuhTouKesHeiEloSyyLokMarJou",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "IanFebMarAprMaiIunIulAugSepOctNoiDec",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Date/Time", + "Zeige Datum/Uhrzeit", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher Date/Heure", + "",// TODO Norsk + "Näytä päivämäärä/kello",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã Data/Ora",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "not in menu", + "nicht im Menu", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "pas dans le menu" + "",// TODO Norsk + "ei valikossa",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "nu în meniu",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Channel", + "Zeige Kanal", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher le nom de la Chaine", + "",// TODO Norsk + "Näytä kanava",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã canalul",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Logo", + "Zeige Logo", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher le Logo", + "",// TODO Norsk + "Näytä logo",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã logo",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Logo on Replay", + "Zeige Logo bei Wiedergabe", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher le Logo en lecture", + "",// TODO Norsk + "Näytä logo toistotilassa",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã logo în timpul redãrii",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Symbols", + "Zeige Symbole", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les Symboles", + "",// TODO Norsk + "Näytä symbolit",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã simboluri",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show ET Symbols", + "Zeige ET Symbole", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les Symboles ET", + "",// TODO Norsk + "Näytä ET-symbolit",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã simboluri externe",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Program", + "Zeige Programm", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les programmes", + "",// TODO Norsk + "Näytä ohjelma",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã programul",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Timebar", + "Zeige Zeitbalken", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher la barre de progression", + "",// TODO Norsk + "Näytä aikajana",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã linia timp",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Menu", + "Zeige Menüs", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher le menu", + "",// TODO Norsk + "Näytä valikko",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã meniuri",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Messages", + "Zeige Nachrichten", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les messages", + "",// TODO Norsk + "Näytä viestit",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã mesaje",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Color Buttons", + "Zeige farbige Tasten", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les boutons couleurs", + "",// TODO Norsk + "Näytä väripainikkeet",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã butoanele colorate",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show Volume", + "Zeige Lautstärke", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher le Volume", + "",// TODO Norsk + "Näytä äänenvoimakkuus",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã volumul",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "compressed", + "komprimiert", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Compressé", + "",// TODO Norsk + "pakattu",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "comprimat",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "auto", + "auto", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "auto", + "",// TODO Norsk + "automaattinen",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "auto",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "medium", + "mittel", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "moyen", + "",// TODO Norsk + "keskikokoinen",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "mediu",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "large", + "groß", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "grand", + "",// TODO Norsk + "suuri",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "mare",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Show free Cards", + "Zeige freie Karten", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Afficher les cartes disponibles", + "",// TODO Norsk + "Näytä vapaat vastaanottimet",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Aratã receptoare libere",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Replay", + "Spiele", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Lecture", + "",// TODO Norsk + "Toistotila",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Redare",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "DVD", + "DVD", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "DVD", + "",// TODO Norsk + "DVD",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "DVD",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Music", + "Musik", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Musique", + "",// TODO Norsk + "Musiikki",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Muzicã",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "File", + "Datei", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Fichier:", + "",// TODO Norsk + "Tiedostot",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Fiºier",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Image", + "Bild", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Image", + "",// TODO Norsk + "Kuvat",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Imagine",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "CD", + "CD", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "CD", + "",// TODO Norsk + "CD",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "CD",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Unknown title", + "Unbekannter Titel", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Titre inconnu", + "",// TODO Norsk + "Tuntematon nimi",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Titlu necunoscut",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Identify replay type", + "Wiedergabetyp erkennen", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Identifier le type de lecture", + "",// TODO Norsk + "Tunnista toistotilan tyyppi",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Identificarea tipului redãrii",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Modify replay string", + "Wiedergabetext verändern", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Modifier la chaine de lecture", + "",// TODO Norsk + "Muokkaa toistotilan merkkijonoa",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Modifica textul redãrii",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Scroll text lines", + "Textzeilen scrollen", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Faire défiler le texte", + "",// TODO Norsk + "Vieritä tekstirivejä",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Deruleazã liniile text",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Scroll speed", + "Scrollgeschwindigkeit", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Vitesse de défilement", + "",// TODO Norsk + "Vieritysnopeus",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Viteza derulãrii",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Scroll time interval", + "Zeitabstand beim Scrollen", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Intervalle de défilement", + "",// TODO Norsk + "Vierityksen päivitysväli",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Interval derulare",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "never", + "niemals", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "jamais", + "",// TODO Norsk + "ei koskaan",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "niciodatã",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "once", + "einmal", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "une fois", + "",// TODO Norsk + "kerran",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "odatã",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "always", + "ständig", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "toujours", + "",// TODO Norsk + "aina",// Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "întotdeauna",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Brightness on user activity", + "Helligkeit bei Nutzeraktivität", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Luminosité en utilisation", + "",// TODO Norsk + "",// TODO Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Luminozitate la utilizare",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Brightness on user inactivity", + "Helligkeit bei Nutzerinaktivität", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Luminosité en non-utilisation", + "",// TODO Norsk + "",// TODO Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Luminozitate la inactivitate",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { + "Brightness delay [s]", + "Verzögerung der Helligkeit [s]", + "",// TODO Slovenski + "",// TODO Italiano + "",// TODO Nederlands + "",// TODO Português + "Delai de Luminosité [s]", + "",// TODO Norsk + "",// TODO Suomi + "",// TODO Polski + "",// TODO Español + "",// TODO Ellinika + "",// TODO Svenska + "Limita luminozitate",// Românã + "",// TODO Magyar + "",// TODO Català +#if VDRVERSNUM > 10302 + "",// TODO Russian +# if VDRVERSNUM > 10307 + "",// TODO Croatian +# endif +#endif + }, + { NULL } +}; diff --git a/i18n.h b/i18n.h new file mode 100644 index 0000000..97d9f7f --- /dev/null +++ b/i18n.h @@ -0,0 +1,20 @@ +/* + * GraphLCD plugin for the Video Disk Recorder + * + * i18n.h - Internationalization + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + */ + +#ifndef _GRAPHLCD_I18N_H_ +#define _GRAPHLCD_I18N_H_ + +#include + +extern const tI18nPhrase Phrases[]; + +#endif diff --git a/layout.c b/layout.c new file mode 100644 index 0000000..1928bcb --- /dev/null +++ b/layout.c @@ -0,0 +1,166 @@ +/* + * GraphLCD plugin for Video Disc Recorder + * + * layout.c - layout classes + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2005 Andreas Regel + */ + +#include + +#include + +#include "global.h" +#include "layout.h" +#include "strfct.h" + +#include +#include +#include + + +cFontElement::cFontElement(const std::string & fontName) +: name(fontName), + type(0), + file(""), + size(0) +{ +} + +bool cFontElement::Load(const std::string & url) +{ + if (url.find("fnt:") == 0) + { + type = ftFNT; + if (url[4] == '/') + file = url.substr(4); + else + { + file = cPlugin::ConfigDirectory(PLUGIN_NAME); + file += "/fonts/"; + file += url.substr(4); + } + size = 0; + return font.LoadFNT(file); + } + else if (url.find("ft2:") == 0) + { + type = ftFT2; + std::string::size_type pos = url.find(":", 4); + if (pos == std::string::npos) + { + syslog(LOG_ERR, "cFontElement::Load(): No font size specified in %s\n", url.c_str()); + return false; + } + std::string tmp = url.substr(pos + 1); + size = atoi(tmp.c_str()); + if (url[4] == '/') + file = url.substr(4, pos - 4); + else + { + file = cPlugin::ConfigDirectory(PLUGIN_NAME); + file += "/fonts/"; + file += url.substr(4, pos - 4); + } + return font.LoadFT2(file, I18nCharSets()[Setup.OSDLanguage], size); + } + else + { + syslog(LOG_ERR, "cFontElement::Load(): Unknown font type in %s\n", url.c_str()); + return false; + } +} + + +cFontList::cFontList() +{ +} + +cFontList::~cFontList() +{ + std::list ::iterator it; + cFontElement * elem; + + for (it = fonts.begin(); it != fonts.end(); it++) + { + elem = *it; + delete elem; + } + fonts.clear(); +} + +bool cFontList::Load(const std::string & fileName) +{ + std::fstream file; + char readLine[1000]; + std::string line; + +#if (__GNUC__ < 3) + file.open(fileName.c_str(), std::ios::in); +#else + file.open(fileName.c_str(), std::ios_base::in); +#endif + if (!file.is_open()) + return false; + + while (!file.eof()) + { + file.getline(readLine, 1000); + line = trim(readLine); + if (line.length() == 0) + continue; + if (line[0] == '#') + continue; + Parse(line); + } + + file.close(); + return true; +} + +bool cFontList::Parse(const std::string & line) +{ + std::string::size_type pos; + std::string fontName; + std::string fontUrl; + cFontElement * elem; + + pos = line.find("="); + if (pos == std::string::npos) + return false; + fontName = trim(line.substr(0, pos)); + fontUrl = trim(line.substr(pos + 1)); + //printf("%s = %s\n", fontName.c_str(), fontUrl.c_str()); + + elem = new cFontElement(fontName); + if (elem->Load(fontUrl)) + { + fonts.push_back(elem); + return true; + } + else + { + delete elem; + return false; + } +} + +const GLCD::cFont * cFontList::GetFont(const std::string & name) const +{ + std::list ::const_iterator it; + cFontElement * elem; + + for (it = fonts.begin(); it != fonts.end(); it++) + { + elem = *it; + if (elem->Name() == name) + { + return elem->Font(); + } + } + return NULL; +} + diff --git a/layout.h b/layout.h new file mode 100644 index 0000000..95269a8 --- /dev/null +++ b/layout.h @@ -0,0 +1,54 @@ +/* + * GraphLCD plugin for Video Disc Recorder + * + * layout.h - layout classes + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2005 Andreas Regel + */ + +#include +#include + +#include + +typedef enum +{ + ftFNT, + ftFT2 +} eFontTypes; + +class cFontElement +{ +private: + std::string name; + int type; + std::string file; + int size; + GLCD::cFont font; +public: + cFontElement(const std::string & fontName); + bool Load(const std::string & url); + + const std::string & Name() const { return name; } + int Type() const { return type; } + const std::string & File() const { return file; } + int Size() const { return size; } + const GLCD::cFont * Font() const { return &font; } +}; + + +class cFontList +{ +private: + std::list fonts; +public: + cFontList(); + ~cFontList(); + bool Load(const std::string & fileName); + bool Parse(const std::string & line); + + const GLCD::cFont * GetFont(const std::string & name) const; +}; diff --git a/logo.c b/logo.c new file mode 100644 index 0000000..3be6198 --- /dev/null +++ b/logo.c @@ -0,0 +1,35 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * logo.c - logo class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include "logo.h" + +cGraphLCDLogo::cGraphLCDLogo(const std::string & id) +: GLCD::cImage(), + id(id) +{ +} + diff --git a/logo.h b/logo.h new file mode 100644 index 0000000..0b213ba --- /dev/null +++ b/logo.h @@ -0,0 +1,44 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * logo.h - logo class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_LOGO_H_ +#define _GRAPHLCD_LOGO_H_ + +#include + +#include + +class cGraphLCDLogo : public GLCD::cImage +{ +private: + std::string id; +public: + cGraphLCDLogo(const std::string & id); + const std::string & ID() const { return id; } +}; + +#endif diff --git a/logolist.c b/logolist.c new file mode 100644 index 0000000..2491f7f --- /dev/null +++ b/logolist.c @@ -0,0 +1,175 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * logolist.c - logo list class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include + +#include +#include +#include + +#include "logolist.h" +#include "strfct.h" + +#include + +const char * kGLCDFileExtension = ".glcd"; +const char * kAliasFileName = "logonames.alias"; + +cGraphLCDLogoList::cGraphLCDLogoList(const std::string & logodir, const std::string & cfgdir) +{ + std::fstream file; + char readLine[1000]; + std::string line; + std::string aliasFileName; + std::string::size_type pos; + tAliasListElement * newAlias; + + logoDir = logodir; + aliasFileName = AddDirectory(cfgdir.c_str(), kAliasFileName); + +#if (__GNUC__ < 3) + file.open(aliasFileName.c_str(), std::ios::in); +#else + file.open(aliasFileName.c_str(), std::ios_base::in); +#endif + if (!file.is_open()) + return; + + while (!file.eof()) + { + file.getline(readLine, 1000); + line = trim(readLine); + if (line.length() == 0) + continue; + if (line[0] == '#') + continue; + pos = line.find(":"); + if (pos == std::string::npos) + continue; + newAlias = new tAliasListElement; + if (newAlias) + { + newAlias->channelID = trim(line.substr(0, pos)); + newAlias->fileName = trim(line.substr(pos + 1)); + aliasList.push_back(newAlias); + } + } + file.close(); +/* + std::list ::iterator it; + for (it = aliasList.begin(); it != aliasList.end(); it++) + { + newAlias = *it; + printf(">>>>>> AliasList: >%s< : >%s<\n", newAlias->channelID.c_str(), newAlias->fileName.c_str()); + } +*/ +} + +cGraphLCDLogoList::~cGraphLCDLogoList() +{ + std::list ::iterator itAlias; + std::list ::iterator itLogo; + + for (itAlias = aliasList.begin(); itAlias != aliasList.end(); itAlias++) + { + delete *itAlias; + } + aliasList.empty(); + + for (itLogo = logoList.begin(); itLogo != logoList.end(); itLogo++) + { + delete *itLogo; + } + logoList.empty(); +} + +std::string cGraphLCDLogoList::CreateFullFileName(const std::string & baseName, ePicType type) +{ + std::string tmp; + + tmp = AddDirectory(logoDir.c_str(), baseName.c_str()); + + switch (type) + { + case ptPictureFixed: // do not attach anything + break; + case ptLogoSmall: + tmp += "_s"; + break; + case ptLogoMedium: + tmp += "_m"; + break; + case ptLogoLarge: + tmp += "_l"; + break; + } + tmp += kGLCDFileExtension; + + return tmp; +} + +cGraphLCDLogo * cGraphLCDLogoList::GetLogo(const std::string & chID, ePicType type) +{ + std::list ::iterator itLogo; + std::list ::iterator itAlias; + std::string logoFileName = ""; + cGraphLCDLogo * newLogo; + GLCD::cGLCDFile glcd; + + for (itLogo = logoList.begin(); itLogo != logoList.end(); itLogo++) + { + if ((*itLogo)->ID() == chID) + { + return *itLogo; + } + } + + for (itAlias = aliasList.begin(); itAlias != aliasList.end(); itAlias++) + { + if ((*itAlias)->channelID == chID) + { + logoFileName = CreateFullFileName((*itAlias)->fileName, type); + break; + } + } + if (itAlias == aliasList.end()) + logoFileName = CreateFullFileName(chID, type); + + // try to load logo + newLogo = new cGraphLCDLogo(chID); + if (glcd.Load(*newLogo, logoFileName)) + { + logoList.push_back(newLogo); + return newLogo; + } + else + { + delete newLogo; + return NULL; + } + return NULL; +} diff --git a/logolist.h b/logolist.h new file mode 100644 index 0000000..47044c4 --- /dev/null +++ b/logolist.h @@ -0,0 +1,65 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * logolist.h - logo list class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_LOGOLIST_H_ +#define _GRAPHLCD_LOGOLIST_H_ + +#include + +#include "logo.h" + +enum ePicType +{ + ptPictureFixed, + ptLogoSmall, + ptLogoMedium, + ptLogoLarge +}; + +class cGraphLCDLogoList +{ +private: + struct tAliasListElement + { + std::string channelID; + std::string fileName; + }; + + std::string logoDir; + std::list logoList; + std::list aliasList; + + std::string CreateFullFileName(const std::string & baseName, ePicType type); + +public: + cGraphLCDLogoList(const std::string & logodir, const std::string & cfgdir); + ~cGraphLCDLogoList(); + + cGraphLCDLogo * GetLogo(const std::string & chID, ePicType type); +}; + +#endif diff --git a/menu.c b/menu.c new file mode 100644 index 0000000..5394346 --- /dev/null +++ b/menu.c @@ -0,0 +1,104 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * menu.c - setup menu class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include "menu.h" + + +cGraphLCDMenuSetup::cGraphLCDMenuSetup() +{ + static const char * showDateTimeValues[3]; + showDateTimeValues[0] = tr("no"); + showDateTimeValues[1] = tr("yes"); + showDateTimeValues[2] = tr("not in menu"); + static const char * showSymbolsValues[3]; + showSymbolsValues[0] = tr("no"); + showSymbolsValues[1] = tr("yes"); + showSymbolsValues[2] = tr("compressed"); + static const char * showLogoValues[4]; + showLogoValues[0] = tr("no"); + showLogoValues[1] = tr("auto"); + showLogoValues[2] = tr("medium"); + showLogoValues[3] = tr("large"); + static const char * scrollModeValues[3]; + scrollModeValues[0] = tr("never"); + scrollModeValues[1] = tr("once"); + scrollModeValues[2] = tr("always"); + + newGraphLCDSetup = GraphLCDSetup; + + Add(new cMenuEditBoolItem(tr("Plugin active"), &newGraphLCDSetup.PluginActive)); + Add(new cMenuEditStraItem(tr("Show Date/Time"), &newGraphLCDSetup.ShowDateTime, 3, showDateTimeValues)); + Add(new cMenuEditBoolItem(tr("Show Channel"), &newGraphLCDSetup.ShowChannel)); + Add(new cMenuEditStraItem(tr("Show Logo"), &newGraphLCDSetup.ShowLogo, 4, showLogoValues)); + Add(new cMenuEditStraItem(tr("Show Symbols"), &newGraphLCDSetup.ShowSymbols, 3, showSymbolsValues)); + Add(new cMenuEditBoolItem(tr("Show ET Symbols"), &newGraphLCDSetup.ShowETSymbols)); + Add(new cMenuEditBoolItem(tr("Show Program"), &newGraphLCDSetup.ShowProgram)); + Add(new cMenuEditBoolItem(tr("Show Timebar"), &newGraphLCDSetup.ShowTimebar)); + Add(new cMenuEditBoolItem(tr("Show Menu"), &newGraphLCDSetup.ShowMenu)); + Add(new cMenuEditBoolItem(tr("Show Messages"), &newGraphLCDSetup.ShowMessages)); + Add(new cMenuEditBoolItem(tr("Show Color Buttons"), &newGraphLCDSetup.ShowColorButtons)); + Add(new cMenuEditBoolItem(tr("Show Volume"), &newGraphLCDSetup.ShowVolume)); + Add(new cMenuEditBoolItem(tr("Show free Cards"), &newGraphLCDSetup.ShowNotRecording)); + Add(new cMenuEditBoolItem(tr("Identify replay type"), &newGraphLCDSetup.IdentifyReplayType)); + if (newGraphLCDSetup.IdentifyReplayType) + { + Add(new cMenuEditBoolItem(tr("Modify replay string"), &newGraphLCDSetup.ModifyReplayString)); + Add(new cMenuEditStraItem(tr("Show Logo on Replay"), &newGraphLCDSetup.ReplayLogo, 4, showLogoValues)); + } + Add(new cMenuEditStraItem(tr("Scroll text lines"), &newGraphLCDSetup.ScrollMode, 3, scrollModeValues)); + Add(new cMenuEditIntItem(tr("Scroll speed"), &newGraphLCDSetup.ScrollSpeed, 1, 10)); + Add(new cMenuEditIntItem(tr("Scroll time interval"), &newGraphLCDSetup.ScrollTime, 100, 2000)); + Add(new cMenuEditIntItem(tr("Brightness on user activity"), &newGraphLCDSetup.BrightnessActive, 0, 100)); + Add(new cMenuEditIntItem(tr("Brightness on user inactivity"), &newGraphLCDSetup.BrightnessIdle, 0, 100)); + Add(new cMenuEditIntItem(tr("Brightness delay [s]"), &newGraphLCDSetup.BrightnessDelay, 0, 600)); +} + +void cGraphLCDMenuSetup::Store() +{ + SetupStore("PluginActive", GraphLCDSetup.PluginActive = newGraphLCDSetup.PluginActive); + SetupStore("ShowDateTime",GraphLCDSetup.ShowDateTime = newGraphLCDSetup.ShowDateTime); + SetupStore("ShowChannel", GraphLCDSetup.ShowChannel = newGraphLCDSetup.ShowChannel); + SetupStore("ShowLogo", GraphLCDSetup.ShowLogo = newGraphLCDSetup.ShowLogo); + SetupStore("ShowSymbols", GraphLCDSetup.ShowSymbols = newGraphLCDSetup.ShowSymbols); + SetupStore("ShowETSymbols",GraphLCDSetup.ShowETSymbols = newGraphLCDSetup.ShowETSymbols); + SetupStore("ShowProgram", GraphLCDSetup.ShowProgram = newGraphLCDSetup.ShowProgram); + SetupStore("ShowTimebar", GraphLCDSetup.ShowTimebar = newGraphLCDSetup.ShowTimebar); + SetupStore("ShowMenu", GraphLCDSetup.ShowMenu = newGraphLCDSetup.ShowMenu); + SetupStore("ShowMessages",GraphLCDSetup.ShowMessages = newGraphLCDSetup.ShowMessages); + SetupStore("ShowColorButtons",GraphLCDSetup.ShowColorButtons = newGraphLCDSetup.ShowColorButtons); + SetupStore("ShowVolume", GraphLCDSetup.ShowVolume = newGraphLCDSetup.ShowVolume); + SetupStore("ShowNotRecording", GraphLCDSetup.ShowNotRecording = newGraphLCDSetup.ShowNotRecording); + SetupStore("IdentifyReplayType", GraphLCDSetup.IdentifyReplayType = newGraphLCDSetup.IdentifyReplayType); + SetupStore("ReplayLogo", GraphLCDSetup.ReplayLogo = newGraphLCDSetup.ReplayLogo); + SetupStore("ModifyReplayString", GraphLCDSetup.ModifyReplayString = newGraphLCDSetup.ModifyReplayString); + SetupStore("ScrollMode", GraphLCDSetup.ScrollMode = newGraphLCDSetup.ScrollMode); + SetupStore("ScrollSpeed", GraphLCDSetup.ScrollSpeed = newGraphLCDSetup.ScrollSpeed); + SetupStore("ScrollTime", GraphLCDSetup.ScrollTime = newGraphLCDSetup.ScrollTime); + SetupStore("BrightnessActive", GraphLCDSetup.BrightnessActive = newGraphLCDSetup.BrightnessActive); + SetupStore("BrightnessIdle", GraphLCDSetup.BrightnessIdle = newGraphLCDSetup.BrightnessIdle); + SetupStore("BrightnessDelay", GraphLCDSetup.BrightnessDelay = newGraphLCDSetup.BrightnessDelay); +} diff --git a/menu.h b/menu.h new file mode 100644 index 0000000..0e125bf --- /dev/null +++ b/menu.h @@ -0,0 +1,46 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * menu.h - setup menu class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_MENU_H_ +#define _GRAPHLCD_MENU_H_ + +#include "setup.h" + +#include + + +class cGraphLCDMenuSetup : public cMenuSetupPage +{ +private: + cGraphLCDSetup newGraphLCDSetup; +protected: + virtual void Store(); +public: + cGraphLCDMenuSetup(); +}; + +#endif diff --git a/plugin.c b/plugin.c new file mode 100644 index 0000000..293f6c9 --- /dev/null +++ b/plugin.c @@ -0,0 +1,246 @@ +/* + * GraphLCD plugin for the Video Disk Recorder + * + * plugin.c - main plugin class + * + * This file is released under the GNU General Public License. Refer + * to the COPYING file distributed with this package. + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + */ + +#include + +#include +#include + +#include "display.h" +#include "global.h" +#include "i18n.h" +#include "menu.h" + +#include + + +static const char *VERSION = "0.1.5"; +static const char *DESCRIPTION = "Output to graphic LCD"; +static const char *MAINMENUENTRY = NULL; + +static const char * kDefaultConfigFile = "/etc/graphlcd.conf"; + + +class cPluginGraphLCD : public cPlugin +{ +private: + // Add any member variables or functions you may need here. + std::string mConfigName; + std::string mDisplayName; + GLCD::cDriver * mLcd; + cGraphLCDDisplay * mDisplay; + +public: + cPluginGraphLCD(); + virtual ~cPluginGraphLCD(); + virtual const char * Version() { return VERSION; } + virtual const char * Description() { return tr(DESCRIPTION); } + virtual const char * CommandLineHelp(); + virtual bool ProcessArgs(int argc, char * argv[]); + virtual bool Initialize(); + virtual bool Start(); + virtual void Housekeeping(); + virtual void MainThreadHook(void); + virtual const char * MainMenuEntry() { return MAINMENUENTRY; } + virtual cOsdObject * MainMenuAction(); + virtual cMenuSetupPage * SetupMenu(); + virtual bool SetupParse(const char * Name, const char * Value); +}; + +cPluginGraphLCD::cPluginGraphLCD() +: mConfigName(""), + mDisplayName("") +{ + mLcd = NULL; +} + +cPluginGraphLCD::~cPluginGraphLCD() +{ + delete mDisplay; + if (mLcd) + mLcd->DeInit(); + delete mLcd; +} + +const char * cPluginGraphLCD::CommandLineHelp() +{ + return " -c CFG, --config=CFG use CFG as driver config file\n" + " -d DISP, --display=DISP use display DISP for output\n"; +} + +bool cPluginGraphLCD::ProcessArgs(int argc, char * argv[]) +{ + static struct option long_options[] = + { + {"config", required_argument, NULL, 'c'}, + {"display", required_argument, NULL, 'd'}, + {NULL} + }; + + int c; + int option_index = 0; + while ((c = getopt_long(argc, argv, "c:d:", long_options, &option_index)) != -1) + { + switch (c) + { + case 'c': + mConfigName = optarg; + break; + + case 'd': + mDisplayName = optarg; + break; + + default: + return false; + } + } + + return true; +} + +bool cPluginGraphLCD::Initialize() +{ + unsigned int displayNumber = 0; + const char * cfgDir; + + RegisterI18n(Phrases); + + if (mConfigName.length() == 0) + { + mConfigName = kDefaultConfigFile; + isyslog("graphlcd plugin: No config file specified, using default (%s).\n", mConfigName.c_str()); + } + if (GLCD::Config.Load(mConfigName) == false) + { + esyslog("graphlcd plugin: Error loading config file!\n"); + return false; + } + if (GLCD::Config.driverConfigs.size() > 0) + { + if (mDisplayName.length() > 0) + { + for (displayNumber = 0; displayNumber < GLCD::Config.driverConfigs.size(); displayNumber++) + { + if (GLCD::Config.driverConfigs[displayNumber].name == mDisplayName) + break; + } + if (displayNumber == GLCD::Config.driverConfigs.size()) + { + esyslog("graphlcd plugin: ERROR: Specified display %s not found in config file!\n", mDisplayName.c_str()); + return false; + } + } + else + { + isyslog("graphlcd plugin: WARNING: No display specified, using first one (%s).\n", GLCD::Config.driverConfigs[0].name.c_str()); + displayNumber = 0; + mDisplayName = GLCD::Config.driverConfigs[0].name; + } + } + else + { + esyslog("graphlcd plugin: ERROR: No displays specified in config file!\n"); + return false; + } + + mLcd = GLCD::CreateDriver(GLCD::Config.driverConfigs[displayNumber].id, &GLCD::Config.driverConfigs[displayNumber]); + if (!mLcd) + { + esyslog("graphlcd plugin: ERROR: Failed creating display object %s\n", mDisplayName.c_str()); + return false; + } + + cfgDir = ConfigDirectory(PLUGIN_NAME); + if (!cfgDir) + return false; + + mDisplay = new cGraphLCDDisplay(); + if (!mDisplay) + return false; + if (mDisplay->Init(mLcd, cfgDir) != 0) + return false; + + return true; +} + +bool cPluginGraphLCD::Start() +{ + int count; + + dsyslog("graphlcd plugin: waiting for display thread to get ready"); + for (count = 0; count < 1200; count++) + { + if (mDisplay->Active()) + { + dsyslog ("graphlcd plugin: display thread ready"); + return true; + } +#if VDRVERSNUM < 10314 + usleep(100000); +#else + cCondWait::SleepMs(100); +#endif + } + dsyslog ("graphlcd plugin: timeout while waiting for display thread"); + return false; +} + +void cPluginGraphLCD::Housekeeping() +{ +} + +void cPluginGraphLCD::MainThreadHook() +{ + if (mDisplay) + mDisplay->Tick(); +} + +cOsdObject * cPluginGraphLCD::MainMenuAction() +{ + return NULL; +} + +cMenuSetupPage * cPluginGraphLCD::SetupMenu() +{ + return new cGraphLCDMenuSetup(); +} + +bool cPluginGraphLCD::SetupParse(const char * Name, const char * Value) +{ + if (!strcasecmp(Name, "PluginActive")) GraphLCDSetup.PluginActive = atoi(Value); + else if (!strcasecmp(Name, "ShowDateTime")) GraphLCDSetup.ShowDateTime = atoi(Value); + else if (!strcasecmp(Name, "ShowChannel")) GraphLCDSetup.ShowChannel = atoi(Value); + else if (!strcasecmp(Name, "ShowLogo")) GraphLCDSetup.ShowLogo = atoi(Value); + else if (!strcasecmp(Name, "ShowSymbols")) GraphLCDSetup.ShowSymbols = atoi(Value); + else if (!strcasecmp(Name, "ShowETSymbols")) GraphLCDSetup.ShowETSymbols = atoi(Value); + else if (!strcasecmp(Name, "ShowProgram")) GraphLCDSetup.ShowProgram = atoi(Value); + else if (!strcasecmp(Name, "ShowTimebar")) GraphLCDSetup.ShowTimebar = atoi(Value); + else if (!strcasecmp(Name, "ShowMenu")) GraphLCDSetup.ShowMenu = atoi(Value); + else if (!strcasecmp(Name, "ShowMessages")) GraphLCDSetup.ShowMessages = atoi(Value); + else if (!strcasecmp(Name, "ShowColorButtons")) GraphLCDSetup.ShowColorButtons = atoi(Value); + else if (!strcasecmp(Name, "ShowVolume")) GraphLCDSetup.ShowVolume = atoi(Value); + else if (!strcasecmp(Name, "ShowNotRecording")) GraphLCDSetup.ShowNotRecording = atoi(Value); + else if (!strcasecmp(Name, "IdentifyReplayType")) GraphLCDSetup.IdentifyReplayType = atoi(Value); + else if (!strcasecmp(Name, "ModifyReplayString")) GraphLCDSetup.ModifyReplayString = atoi(Value); + else if (!strcasecmp(Name, "ReplayLogo")) GraphLCDSetup.ReplayLogo = atoi(Value); + else if (!strcasecmp(Name, "ScrollMode")) GraphLCDSetup.ScrollMode = atoi(Value); + else if (!strcasecmp(Name, "ScrollSpeed")) GraphLCDSetup.ScrollSpeed = atoi(Value); + else if (!strcasecmp(Name, "ScrollTime")) GraphLCDSetup.ScrollTime = atoi(Value); + else if (!strcasecmp(Name, "BrightnessActive")) GraphLCDSetup.BrightnessActive = atoi(Value); + else if (!strcasecmp(Name, "BrightnessIdle")) GraphLCDSetup.BrightnessIdle = atoi(Value); + else if (!strcasecmp(Name, "BrightnessDelay")) GraphLCDSetup.BrightnessDelay = atoi(Value); + else return false; + return true; +} + +VDRPLUGINCREATOR(cPluginGraphLCD); // Don't touch this! diff --git a/setup.c b/setup.c new file mode 100644 index 0000000..6f3e57c --- /dev/null +++ b/setup.c @@ -0,0 +1,93 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * setup.c - Setup + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include "setup.h" + + +cGraphLCDSetup GraphLCDSetup; + +cGraphLCDSetup::cGraphLCDSetup(void) +: PluginActive(1), + ShowDateTime(1), + ShowChannel(1), + ShowLogo(1), + ShowSymbols(1), + ShowETSymbols(0), + ShowProgram(1), + ShowTimebar(1), + ShowMenu(1), + ShowMessages(1), + ShowColorButtons(1), + ShowVolume(1), + ShowNotRecording(0), + IdentifyReplayType(1), + ModifyReplayString(1), + ReplayLogo(1), + ScrollMode(0), + ScrollSpeed(2), + ScrollTime(500), + BrightnessActive(100), + BrightnessIdle(100), + BrightnessDelay(30) +{ +} + +cGraphLCDSetup::~cGraphLCDSetup(void) +{ +} + +cGraphLCDSetup & cGraphLCDSetup::operator=(const cGraphLCDSetup & setup) +{ + CopyFrom(&setup); + return *this; +} + +void cGraphLCDSetup::CopyFrom(const cGraphLCDSetup * source) +{ + PluginActive = source->PluginActive; + ShowDateTime = source->ShowDateTime; + ShowChannel = source->ShowChannel; + ShowLogo = source->ShowLogo; + ShowSymbols = source->ShowSymbols; + ShowETSymbols = source->ShowETSymbols; + ShowProgram = source->ShowProgram; + ShowTimebar = source->ShowTimebar; + ShowMenu = source->ShowMenu; + ShowMessages = source->ShowMessages; + ShowColorButtons = source->ShowColorButtons; + ShowVolume = source->ShowVolume; + ShowNotRecording = source->ShowNotRecording; + IdentifyReplayType = source->IdentifyReplayType; + ModifyReplayString = source->ModifyReplayString; + ReplayLogo = source->ReplayLogo; + ScrollMode = source->ScrollMode; + ScrollSpeed = source->ScrollSpeed; + ScrollTime = source->ScrollTime; + BrightnessActive = source->BrightnessActive; + BrightnessIdle = source->BrightnessIdle; + BrightnessDelay = source->BrightnessDelay; +} diff --git a/setup.h b/setup.h new file mode 100644 index 0000000..184aa02 --- /dev/null +++ b/setup.h @@ -0,0 +1,67 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * setup.h - Setup + * + * (c) 2001-2004 Carsten Siebholz + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_SETUP_H_ +#define _GRAPHLCD_SETUP_H_ + + +class cGraphLCDSetup +{ +public: + int PluginActive; + int ShowDateTime; + int ShowChannel; + int ShowLogo; + int ShowSymbols; + int ShowETSymbols; + int ShowProgram; + int ShowTimebar; + int ShowMenu; + int ShowMessages; + int ShowColorButtons; + int ShowVolume; + int ShowNotRecording; // Empty frame around not recording card's empty icons? + int IdentifyReplayType; + int ModifyReplayString; + int ReplayLogo; + int ScrollMode; + int ScrollSpeed; + int ScrollTime; + int BrightnessActive; + int BrightnessIdle; + int BrightnessDelay; + +public: + cGraphLCDSetup(void); + virtual ~cGraphLCDSetup(void); + cGraphLCDSetup & operator= (const cGraphLCDSetup & setup); + void CopyFrom(const cGraphLCDSetup * source); +}; + +extern cGraphLCDSetup GraphLCDSetup; + +#endif diff --git a/state.c b/state.c new file mode 100644 index 0000000..fe76adb --- /dev/null +++ b/state.c @@ -0,0 +1,830 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * status.c - status monitor class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +#include + +#include + +#include "display.h" +#include "state.h" +#include "strfct.h" + +#include +#include + +#include "compat.h" + +cGraphLCDState::cGraphLCDState(cGraphLCDDisplay * Display) +: mDisplay(Display), + first(true), + tickUsed(false) +{ + channel.number = 0; + channel.str = ""; + channel.strTmp = ""; + + event.presentTime = 0; + event.presentTitle = ""; + event.presentSubtitle = ""; + event.followingTime = 0; + event.followingTitle = ""; + event.followingSubtitle = ""; + + replay.name = ""; + replay.loopmode = ""; + replay.control = NULL; + replay.mode = eReplayNormal; + replay.current = 0; + replay.currentLast = FRAMESPERSEC; + replay.total = 0; + replay.totalLast = 1; + + for (int i = 0; i < MAXDEVICES; i++) + { + card[i].recordingCount = 0; + card[i].recordingName = ""; + } + + osd.currentItem = ""; + osd.title = ""; + for (int i = 0; i < 4; i++) + osd.colorButton[i] = ""; + osd.message = ""; + osd.textItem = ""; + osd.currentItemIndex = 0; + + volume.value = -1; + volume.lastChange = 0; + + SetChannel(cDevice::CurrentChannel()); +} + +cGraphLCDState::~cGraphLCDState() +{ +} + +void cGraphLCDState::ChannelSwitch(const cDevice * Device, int ChannelNumber) +{ + //printf("graphlcd plugin: cGraphLCDState::ChannelSwitch %d %d\n", Device->CardIndex(), ChannelNumber); + if (GraphLCDSetup.PluginActive) + { + if (ChannelNumber > 0 && Device->IsPrimaryDevice() && !EITScanner.UsesDevice(Device)) + { + if (ChannelNumber == cDevice::CurrentChannel()) + { + SetChannel(ChannelNumber); + } + } + } +} + +#if VDRVERSNUM < 10338 +void cGraphLCDState::Recording(const cDevice * Device, const char * Name) +#else +void cGraphLCDState::Recording(const cDevice * Device, const char * Name, const char *FileName, bool On) +#endif +{ + //printf("graphlcd plugin: cGraphLCDState::Recording %d %s\n", Device->CardIndex(), Name); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); +#if VDRVERSNUM < 10338 + if (Name) +#else + if (On) +#endif + { + card[Device->DeviceNumber()].recordingCount++; +#if VDRVERSNUM < 10338 + card[Device->DeviceNumber()].recordingName = Name; +#else + card[Device->DeviceNumber()].recordingName = Name ? Name : ""; +#endif + } + else + { + if (card[Device->DeviceNumber()].recordingCount > 0) + card[Device->DeviceNumber()].recordingCount--; + card[Device->DeviceNumber()].recordingName = ""; + } + mutex.Unlock(); + + mDisplay->Update(); + } +} + +#if VDRVERSNUM < 10338 +void cGraphLCDState::Replaying(const cControl * Control, const char * Name) +#else +void cGraphLCDState::Replaying(const cControl * Control, const char * Name, const char *FileName, bool On) +#endif +{ + //printf("graphlcd plugin: cGraphLCDState::Replaying %s\n", Name); + if (GraphLCDSetup.PluginActive) + { +#if VDRVERSNUM < 10338 + if (Name) +#else + if (On) +#endif + { + mutex.Lock(); + replay.control = (cControl *) Control; + replay.mode = eReplayNormal; + replay.name = ""; + replay.loopmode = ""; +#if VDRVERSNUM < 10338 + if (!isempty(Name)) +#else + if (Name && !isempty(Name)) +#endif + { + if (GraphLCDSetup.IdentifyReplayType) + { + int slen = strlen(Name); + bool bFound = false; + /////////////////////////////////////////////////////////////////////// + //Looking for mp3-Plugin Replay : [LS] (444/666) title + // + if (slen > 6 && + *(Name+0)=='[' && + *(Name+3)==']' && + *(Name+5)=='(') + { + unsigned int i; + for (i=6; *(Name + i) != '\0'; ++i) //search for [xx] (xxxx) title + { + if (*(Name+i)==' ' && *(Name+i-1)==')') + { + bFound = true; + break; + } + } + if (bFound) //found MP3-Plugin replaymessage + { + unsigned int j; + // get loopmode + replay.loopmode = Name; + replay.loopmode = replay.loopmode.substr (0, 5); + if (replay.loopmode[2] == '.') + replay.loopmode.erase (2, 1); + if (replay.loopmode[1] == '.') + replay.loopmode.erase (1, 1); + if (replay.loopmode[1] == ']') + replay.loopmode = ""; + //printf ("loopmode=<%s>\n", replay.loopmode.c_str ()); + for (j=0;*(Name+i+j) != '\0';++j) //trim name + { + if (*(Name+i+j)!=' ') + break; + } + + if (strlen(Name+i+j) > 0) + { //if name isn't empty, then copy + replay.name = Name + i + j; + } + else + { //if Name empty, set fallback title + replay.name = tr("Unknown title"); + } + replay.mode = eReplayMusic; + } + } + /////////////////////////////////////////////////////////////////////// + //Looking for DVD-Plugin Replay : 1/8 4/28, de 2/5 ac3, no 0/7, 16:9, VOLUMENAME + //cDvdPlayerControl::GerDisplayHeaderLine + // titleinfo, audiolang, spulang, aspect, title + if (!bFound) + { + if (slen>7) + { + unsigned int i,n; + for (n=0,i=0;*(Name+i) != '\0';++i) + { //search volumelabel after 4*", " => xxx, xxx, xxx, xxx, title + if (*(Name+i)==' ' && *(Name+i-1)==',') + { + if (++n == 4) + { + bFound = true; + break; + } + } + } + if (bFound) //found DVD replaymessage + { + unsigned int j;bool b; + for (j=0;*(Name+i+j) != '\0';++j) //trim name + { + if (*(Name+i+j)!=' ') + break; + } + + if (strlen(Name+i+j) > 0) + { // if name isn't empty, then copy + replay.name = Name + i + j; + // replace all '_' with ' ' + replace(replay.name.begin(), replay.name.end(), '_', ' '); + for (j = 0, b = true; j < replay.name.length(); ++j) + { + // KAPITALIZE -> Kaptialize + if (replay.name[j] == ' ') + b = true; + else if (b) + b = false; + else replay.name[j] = tolower(replay.name[j]); + } + } + else + { //if Name empty, set fallback title + replay.name = tr("Unknown title"); + } + replay.mode = eReplayDVD; + } + } + } + if (!bFound) + { + int i; + for (i=slen-1;i>0;--i) + { //Reversesearch last Subtitle + // - filename contains '~' => subdirectory + // or filename contains '/' => subdirectory + switch (*(Name+i)) + { + case '/': + { + // look for file extentsion like .xxx or .xxxx + if (slen>5 && ((*(Name+slen-4) == '.') || (*(Name+slen-5) == '.'))) + { + replay.mode = eReplayFile; + } + else + { + break; + } + } + case '~': + { + replay.name = Name + i + 1; + bFound = true; + i = 0; + } + default: + break; + } + } + } + + if (0 == strncmp(Name,"[image] ",8)) + { + if (replay.mode != eReplayFile) //if'nt already Name stripped-down as filename + replay.name = Name + 8; + replay.mode = eReplayImage; + bFound = true; + } + else if (0 == strncmp(Name,"[audiocd] ",10)) + { + replay.name = Name + 10; + replay.mode = eReplayAudioCD; + bFound = true; + } + if (!bFound || !GraphLCDSetup.ModifyReplayString) + { + replay.name = Name; + } + } + else + { + replay.name = Name; + } + } + replay.currentLast = FRAMESPERSEC; + replay.totalLast = 1; + mutex.Unlock(); + } + else + { + mutex.Lock(); + replay.control = NULL; + mutex.Unlock(); + SetChannel(channel.number); + } +#if VDRVERSNUM < 10338 + mDisplay->Replaying(Name ? true : false, replay.mode); +#else + mDisplay->Replaying(On, replay.mode); +#endif + } +} + +void cGraphLCDState::SetVolume(int Volume, bool Absolute) +{ + //printf("graphlcd plugin: cGraphLCDState::SetVolume %d %d\n", Volume, Absolute); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + +#if VDRVERSNUM < 10402 + volume.value = Volume; +#else + if (!Absolute) + { + volume.value += Volume; + } + else + { + volume.value = Volume; + } +#endif + if (!first) + { + volume.lastChange = cTimeMs::Now(); + mutex.Unlock(); + mDisplay->Update(); + } + else + { + // first time + first = false; + mutex.Unlock(); + } + } +} + +void cGraphLCDState::Tick() +{ + //printf("graphlcd plugin: cGraphLCDState::Tick\n"); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + + tickUsed = true; + + if (replay.control) + { + if (replay.control->GetIndex(replay.current, replay.total, false)) + { + replay.total = (replay.total == 0) ? 1 : replay.total; + } + else + { + replay.control = NULL; + } + } + + mutex.Unlock(); + } +} + +void cGraphLCDState::OsdClear() +{ + //printf("graphlcd plugin: cGraphLCDState::OsdClear\n"); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + + channel.strTmp = ""; + + osd.title = ""; + osd.items.clear(); + for (int i = 0; i < 4; i++) + osd.colorButton[i] = ""; + osd.message = ""; + osd.textItem = ""; + + mutex.Unlock(); + mDisplay->SetClear(); + } +} + +void cGraphLCDState::OsdTitle(const char * Title) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdTitle '%s'\n", Title); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + + osd.message = ""; + osd.title = ""; + if (Title) + { + osd.title = Title; + // remove the time + std::string::size_type pos = osd.title.find('\t'); + if (pos != std::string::npos) + osd.title.resize(pos); + osd.title = compactspace(osd.title); + } + + mutex.Unlock(); + mDisplay->SetOsdTitle(); + } +} + +void cGraphLCDState::OsdStatusMessage(const char * Message) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdStatusMessage '%s'\n", Message); + if (GraphLCDSetup.PluginActive) + { + if (GraphLCDSetup.ShowMessages) + { + mutex.Lock(); + + if (Message) + osd.message = compactspace(Message); + else + osd.message = ""; + + mutex.Unlock(); + mDisplay->Update(); + } + } +} + +void cGraphLCDState::OsdHelpKeys(const char * Red, const char * Green, const char * Yellow, const char * Blue) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdHelpKeys %s - %s - %s - %s\n", Red, Green, Yellow, Blue); + if (GraphLCDSetup.PluginActive) + { + if (GraphLCDSetup.ShowColorButtons) + { + mutex.Lock(); + + for (int i = 0; i < 4; i++) + osd.colorButton[i] = ""; + + if (Red) + osd.colorButton[0] = compactspace(Red); + if (Green) + osd.colorButton[1] = compactspace(Green); + if (Yellow) + osd.colorButton[2] = compactspace(Yellow); + if (Blue) + osd.colorButton[3] = compactspace(Blue); + + mutex.Unlock(); + } + } +} + +void cGraphLCDState::OsdItem(const char * Text, int Index) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdItem %s, %d\n", Text, Index); + if (GraphLCDSetup.PluginActive) + { + if (GraphLCDSetup.ShowMenu) + { + mutex.Lock(); + + osd.message = ""; + + if (Text) + osd.items.push_back(Text); + + mutex.Unlock(); + if (Text) + mDisplay->SetOsdItem(Text); + } + } +} + +void cGraphLCDState::OsdCurrentItem(const char * Text) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdCurrentItem %s\n", Text); + if (GraphLCDSetup.PluginActive) + { + if (GraphLCDSetup.ShowMenu) + { + int tabs; + std::string::size_type pos; + + mutex.Lock(); + + osd.message = ""; + osd.currentItem = ""; + if (Text) + { + osd.currentItem = Text; + + // count nr of tabs in text + tabs = 0; + for (unsigned int i = 0; i < osd.currentItem.length(); i++) + { + if (osd.currentItem[i] == '\t') + tabs++; + } + if (tabs == 1) + { + // only one tab => prob. Setup Menu + pos = osd.currentItem.find('\t'); + osd.currentItemIndex = 0; + if (pos != std::string::npos) + { + for (unsigned int i = 0; i < osd.items.size(); i++) + { + if (osd.items[i].find(osd.currentItem.c_str(), 0, pos) == 0) + { + osd.currentItemIndex = i; + osd.items[i] = osd.currentItem; + break; + } + } + } + } + else + { + osd.currentItemIndex = 0; + for (unsigned int i = 0; i < osd.items.size(); i++) + { + if (osd.items[i].compare(osd.currentItem) == 0) + { + osd.currentItemIndex = i; + break; + } + } + } + } + mutex.Unlock(); + if (Text) + mDisplay->SetOsdCurrentItem(); + } + } +} + +void cGraphLCDState::OsdTextItem(const char * Text, bool Scroll) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdTextItem %s %d\n", Text, Scroll); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + if (Text) + { + osd.textItem = trim(Text); +#if 0 + // replace '\n' with ' ' + for (unsigned int i = 0; i < osd.textItem.length(); i++) + if (osd.textItem[i] == '\n' && (i + 1) < osd.textItem.length() && osd.textItem[i + 1] != '\n') + osd.textItem[i] = ' '; +#endif + } + mutex.Unlock(); + mDisplay->SetOsdTextItem(Text, Scroll); + } +} + + +void cGraphLCDState::OsdChannel(const char * Text) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdChannel %s\n", Text); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + if (Text) + { + channel.strTmp = Text; + channel.strTmp = compactspace(channel.strTmp); + } + else + { + channel.strTmp = ""; + } + mutex.Unlock(); + + if (Text) + mDisplay->Update(); + } +} + +void cGraphLCDState::OsdProgramme(time_t PresentTime, const char * PresentTitle, const char * PresentSubtitle, time_t FollowingTime, const char * FollowingTitle, const char * FollowingSubtitle) +{ + //printf("graphlcd plugin: cGraphLCDState::OsdProgramme PT : %s\n", PresentTitle); + //printf("graphlcd plugin: cGraphLCDState::OsdProgramme PST: %s\n", PresentSubtitle); + //printf("graphlcd plugin: cGraphLCDState::OsdProgramme FT : %s\n", FollowingTitle); + //printf("graphlcd plugin: cGraphLCDState::OsdProgramme FST: %s\n", FollowingSubtitle); + if (GraphLCDSetup.PluginActive) + { + mutex.Lock(); + event.presentTime = PresentTime; + event.presentTitle = ""; + if (!isempty(PresentTitle)) + event.presentTitle = PresentTitle; + event.presentSubtitle = ""; + if (!isempty(PresentSubtitle)) + event.presentSubtitle = PresentSubtitle; + + event.followingTime = FollowingTime; + event.followingTitle = ""; + if (!isempty(FollowingTitle)) + event.followingTitle = FollowingTitle; + event.followingSubtitle = ""; + if (!isempty(FollowingSubtitle)) + event.followingSubtitle = FollowingSubtitle; + mutex.Unlock(); + mDisplay->Update(); + } +} + +void cGraphLCDState::SetChannel(int ChannelNumber) +{ + char tmp[16]; + + if (ChannelNumber == 0) + return; + + mutex.Lock(); + + channel.number = ChannelNumber; + cChannel * ch = Channels.GetByNumber(channel.number); + channel.id = ch->GetChannelID(); + sprintf(tmp, "%d ", channel.number); + channel.str = tmp; + channel.str += ch->Name(); + event.presentTime = 0; + event.followingTime = 0; + + mutex.Unlock(); + + mDisplay->SetChannel(ChannelNumber); +} + +void cGraphLCDState::GetProgramme() +{ + mutex.Lock(); +#if VDRVERSNUM < 10300 + const cEventInfo * present = NULL, * following = NULL; + cMutexLock mutexLock; + const cSchedules * schedules = cSIProcessor::Schedules(mutexLock); + if (channel.id.Valid()) + { + if (schedules) + { + const cSchedule * schedule = schedules->GetSchedule(channel.id); + if (schedule) + { + if ((present = schedule->GetPresentEvent()) != NULL) + { + event.presentTime = present->GetTime(); + event.presentTitle = ""; + if (!isempty(present->GetTitle())) + event.presentTitle = present->GetTitle(); + event.presentSubtitle = ""; + if (!isempty(present->GetSubtitle())) + event.presentSubtitle = present->GetSubtitle(); + } + if ((following = schedule->GetFollowingEvent()) != NULL) + { + event.followingTime = following->GetTime(); + event.followingTitle = ""; + if (!isempty(following->GetTitle())) + event.followingTitle = following->GetTitle(); + event.followingSubtitle = ""; + if (!isempty(following->GetSubtitle())) + event.followingSubtitle = following->GetSubtitle(); + } + } + } + } +#else + const cEvent * present = NULL, * following = NULL; + cSchedulesLock schedulesLock; + const cSchedules * schedules = cSchedules::Schedules(schedulesLock); + if (channel.id.Valid()) + { + if (schedules) + { + const cSchedule * schedule = schedules->GetSchedule(channel.id); + if (schedule) + { + if ((present = schedule->GetPresentEvent()) != NULL) + { + event.presentTime = present->StartTime(); + event.presentTitle = ""; + if (!isempty(present->Title())) + event.presentTitle = present->Title(); + event.presentSubtitle = ""; + if (!isempty(present->ShortText())) + event.presentSubtitle = present->ShortText(); + } + if ((following = schedule->GetFollowingEvent()) != NULL) + { + event.followingTime = following->StartTime(); + event.followingTitle = ""; + if (!isempty(following->Title())) + event.followingTitle = following->Title(); + event.followingSubtitle = ""; + if (!isempty(following->ShortText())) + event.followingSubtitle = following->ShortText(); + } + } + } + } +#endif + mutex.Unlock(); +} + +tChannelState cGraphLCDState::GetChannelState() +{ + tChannelState ret; + + mutex.Lock(); + ret = channel; + mutex.Unlock(); + + return ret; +} + +tEventState cGraphLCDState::GetEventState() +{ + tEventState ret; + + GetProgramme(); + mutex.Lock(); + ret = event; + mutex.Unlock(); + + return ret; +} + +tReplayState cGraphLCDState::GetReplayState() +{ + tReplayState ret; + + mutex.Lock(); + + if (tickUsed) + { + if (replay.control) + { + ret = replay; + replay.currentLast = replay.current; + replay.totalLast = replay.total; + } + else + { + ret = replay; + } + } + else + { + if (replay.control) + { + if (replay.control->GetIndex(replay.current, replay.total, false)) + { + replay.total = (replay.total == 0) ? 1 : replay.total; + ret = replay; + replay.currentLast = replay.current; + replay.totalLast = replay.total; + } + else + { + replay.control = NULL; + ret = replay; + } + } + else + { + ret = replay; + } + } + mutex.Unlock(); + + return ret; +} + +tCardState cGraphLCDState::GetCardState(int number) +{ + tCardState ret; + + mutex.Lock(); + ret = card[number]; + mutex.Unlock(); + + return ret; +} + +tOsdState cGraphLCDState::GetOsdState() +{ + tOsdState ret; + + mutex.Lock(); + ret = osd; + mutex.Unlock(); + + return ret; +} + +tVolumeState cGraphLCDState::GetVolumeState() +{ + tVolumeState ret; + + mutex.Lock(); + ret = volume; + mutex.Unlock(); + + return ret; +} diff --git a/state.h b/state.h new file mode 100644 index 0000000..35e79f2 --- /dev/null +++ b/state.h @@ -0,0 +1,134 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * state.h - status monitor class + * + * (c) 2001-2004 Carsten Siebholz + **/ + +#ifndef _GRAPHLCD_STATE_H_ +#define _GRAPHLCD_STATE_H_ + +#include +#include + +#include + + +struct tChannelState +{ + tChannelID id; + int number; + std::string str; + std::string strTmp; +}; + +struct tEventState +{ + time_t presentTime; + std::string presentTitle; + std::string presentSubtitle; + time_t followingTime; + std::string followingTitle; + std::string followingSubtitle; +}; + +enum eReplayMode +{ + eReplayNormal, + eReplayMusic, + eReplayDVD, + eReplayFile, + eReplayImage, + eReplayAudioCD +}; + +struct tReplayState +{ + std::string name; + std::string loopmode; + cControl * control; + eReplayMode mode; + int current; + int currentLast; + int total; + int totalLast; +}; + +struct tCardState +{ + int recordingCount; + std::string recordingName; +}; + +struct tOsdState +{ + std::string currentItem; + std::vector items; + std::string title; + std::string colorButton[4]; + std::string textItem; + std::string message; + int currentItemIndex; +}; + +struct tVolumeState +{ + int value; + uint64_t lastChange; +}; + +class cGraphLCDDisplay; + +class cGraphLCDState : public cStatus +{ +private: + cGraphLCDDisplay * mDisplay; + bool first; + bool tickUsed; + + cMutex mutex; + + tChannelState channel; + tEventState event; + tReplayState replay; + tCardState card[MAXDEVICES]; + tOsdState osd; + tVolumeState volume; + + void SetChannel(int ChannelNumber); + void GetProgramme(); +protected: + virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber); +#if VDRVERSNUM < 10338 + virtual void Recording(const cDevice *Device, const char *Name); + virtual void Replaying(const cControl *Control, const char *Name); +#else + virtual void Recording(const cDevice *Device, const char *Name, const char *FileName, bool On); + virtual void Replaying(const cControl *Control, const char *Name, const char *FileName, bool On); +#endif + virtual void SetVolume(int Volume, bool Absolute); + virtual void OsdClear(); + virtual void OsdTitle(const char *Title); + virtual void OsdStatusMessage(const char *Message); + virtual void OsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue); + virtual void OsdItem(const char *Text, int Index); + virtual void OsdCurrentItem(const char *Text); + virtual void OsdTextItem(const char *Text, bool Scroll); + virtual void OsdChannel(const char *Text); + virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle); + +public: + cGraphLCDState(cGraphLCDDisplay * Display); + virtual ~cGraphLCDState(); + + void Tick(); + tChannelState GetChannelState(); + tEventState GetEventState(); + tReplayState GetReplayState(); + tCardState GetCardState(int number); + tOsdState GetOsdState(); + tVolumeState GetVolumeState(); +}; + +#endif diff --git a/strfct.c b/strfct.c new file mode 100644 index 0000000..fd49086 --- /dev/null +++ b/strfct.c @@ -0,0 +1,91 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * strfct.c - various string functions + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#include +#include + +#include "strfct.h" + + +char * strncopy(char * dest , const char * src , size_t n) +{ + strncpy(dest, src, n); + if (strlen(src) >= n) + { + *(dest + n - 1) = 0; + } + return dest; +} + + +std::string trim(const std::string & s) +{ + std::string::size_type start, end; + + start = 0; + while (start < s.length()) + { + if (!isspace(s[start])) + break; + start++; + } + end = s.length() - 1; + while (end >= 0) + { + if (!isspace(s[end])) + break; + end--; + } + return s.substr(start, end - start + 1); +} + +std::string compactspace(const std::string & s) +{ + std::string str = ""; + std::string tmp; + unsigned int pos = 0; + unsigned int cnt = 0; + tmp = trim(s); + while (pos < tmp.length()) + { + if (!isspace(tmp[pos])) + { + str += tmp[pos]; + cnt = 0; + } + else if (cnt == 0) + { + str += tmp[pos]; + cnt++; + } + else + cnt++; + pos++; + } + return str; +} diff --git a/strfct.h b/strfct.h new file mode 100644 index 0000000..aae2e3c --- /dev/null +++ b/strfct.h @@ -0,0 +1,40 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * strfct.h - various string functions + * + * (c) 2001-2004 Carsten Siebholz + * (c) 2004 Andreas Regel + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_FCT_H_ +#define _GRAPHLCD_FCT_H_ + +#include + + +char * strncopy(char * dest , const char * src , size_t n); +std::string trim(const std::string & s); +std::string compactspace(const std::string & s); + +#endif + diff --git a/widgets.c b/widgets.c new file mode 100644 index 0000000..68193d5 --- /dev/null +++ b/widgets.c @@ -0,0 +1,95 @@ +#include "setup.h" +#include "widgets.h" + +#include +#include + +#include "compat.h" + + +cScroller::cScroller() +{ + Reset(); +} + +void cScroller::Reset() +{ + x = 0; + y = 0; + xmax = 0; + font = NULL; + text = ""; + active = false; + update = false; + position = 0; + increment = 0; + lastUpdate = 0; +} + +bool cScroller::NeedsUpdate() +{ + if (active && + TimeMs() - lastUpdate > (uint64_t) GraphLCDSetup.ScrollTime) + { + update = true; + return true; + } + return false; +} + +void cScroller::Init(int X, int Y, int Xmax, const GLCD::cFont * Font, const std::string & Text) +{ + x = X; + y = Y; + xmax = Xmax; + font = Font; + text = Text; + increment = GraphLCDSetup.ScrollSpeed; + position = 0; + if (GraphLCDSetup.ScrollMode != 0 && + font->Width(text) > xmax - x + 1) + active = true; + else + active = false; + update = false; + lastUpdate = TimeMs() + 2000; +} + +void cScroller::Draw(GLCD::cBitmap * bitmap) +{ + if (!active) + { + bitmap->DrawText(x, y, xmax, text, font); + } + else + { + if (update) + { + if (increment > 0) + { + if (font->Width(text) - position + font->TotalWidth() * 5 < increment) + { + increment = 0; + position = 0; + } + } + else + { + if (GraphLCDSetup.ScrollMode == 2) + { + increment = GraphLCDSetup.ScrollSpeed; + } + else + { + active = false; + } + } + position += increment; + lastUpdate = TimeMs(); + update = false; + } + bitmap->DrawText(x, y, xmax, text, font, GLCD::clrBlack, true, position); + if (font->Width(text) - position <= xmax - x + 10 + font->TotalWidth() * 5) + bitmap->DrawText(x + font->Width(text) - position + font->TotalWidth() * 5, y, xmax, text, font); + } +} diff --git a/widgets.h b/widgets.h new file mode 100644 index 0000000..d6fd3a4 --- /dev/null +++ b/widgets.h @@ -0,0 +1,61 @@ +/** + * GraphLCD plugin for the Video Disk Recorder + * + * widgets.h - display widgets + * + * (c) 2004 Andreas Regel + **/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; * + * if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * * + ***************************************************************************/ + +#ifndef _GRAPHLCD_WIDGETS_H_ +#define _GRAPHLCD_WIDGETS_H_ + +#include + +#include + +#include +#include + +class cScroller +{ +private: + int x; + int y; + int xmax; + const GLCD::cFont * font; + std::string text; + bool active; + bool update; + int position; + int increment; + uint64_t lastUpdate; +public: + cScroller(); + const std::string & Text() const { return text; } + bool NeedsUpdate(); + void Reset(); + void Init(int x, int y, int xmax, const GLCD::cFont * font, const std::string & text); + void Draw(GLCD::cBitmap * bitmap); +}; + +#endif + -- cgit v1.2.3