# ChangeLog for media-plugins/vdr-graphlcd
# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-plugins/vdr-graphlcd/ChangeLog,v 1.13 2007/02/05 10:43:55 zzam Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/vdr-graphlcd/ChangeLog,v 1.14 2007/03/02 17:48:59 hd_brummy Exp $
+
+*vdr-graphlcd-0.1.5 (02 Mar 2007)
+
+ 02 Mar 2007; Joerg Bornkessel <hd_brummy@gentoo.org>
+ +files/0.1.5/vdr-graphlcd-0.1.5-missing-include.patch,
+ +files/0.1.5/graphlcd-0.1.5-radiotext-lcr-service.diff,
+ +files/0.1.5/graphlcd-0.1.5-span.diff, +vdr-graphlcd-0.1.5.ebuild:
+ version bump; ebuild will add user 'vdr' to group 'lp' for full access to
+ parport device
05 Feb 2007; Matthias Schwarzott <zzam@gentoo.org>
vdr-graphlcd-0.1.4.ebuild:
MD5 afcb680c6883ff8f08d84a952a7270cc files/0.1.4/vdr-graphlcd-0.1.4-missing-include.patch 316
RMD160 099abb5f1cf7d6e81af41d6a3f5ab3ca029fd5b5 files/0.1.4/vdr-graphlcd-0.1.4-missing-include.patch 316
SHA256 f5db943352b5cfb505e0a505659e267c9c046314c5006f53044e0abd7fe1b131 files/0.1.4/vdr-graphlcd-0.1.4-missing-include.patch 316
+AUX 0.1.5/graphlcd-0.1.5-radiotext-lcr-service.diff 4396 RMD160 fc9d56c25e619a366b093ca0074fa8227fc89ccf SHA1 1ceab6545461158d526ace1d7028198a20d7a8d2 SHA256 9f5d27b974c3432e2dd3c0cf9987b74ce5635ea3fa33823444b68ab8f05fc5d3
+MD5 20740cf60e47e586ce298086d47fc2db files/0.1.5/graphlcd-0.1.5-radiotext-lcr-service.diff 4396
+RMD160 fc9d56c25e619a366b093ca0074fa8227fc89ccf files/0.1.5/graphlcd-0.1.5-radiotext-lcr-service.diff 4396
+SHA256 9f5d27b974c3432e2dd3c0cf9987b74ce5635ea3fa33823444b68ab8f05fc5d3 files/0.1.5/graphlcd-0.1.5-radiotext-lcr-service.diff 4396
+AUX 0.1.5/graphlcd-0.1.5-span.diff 13307 RMD160 ad56e604871b0ad681b46d2efb8e4b934bddec8a SHA1 f0714211195f7f6da09b563734c7fba2f056c189 SHA256 20016c754c948664dd0fad53f70f68a5e9b95d1b8d14b9d0f959d664194d6876
+MD5 282df25630e2f3bf9212a6b73a9d9482 files/0.1.5/graphlcd-0.1.5-span.diff 13307
+RMD160 ad56e604871b0ad681b46d2efb8e4b934bddec8a files/0.1.5/graphlcd-0.1.5-span.diff 13307
+SHA256 20016c754c948664dd0fad53f70f68a5e9b95d1b8d14b9d0f959d664194d6876 files/0.1.5/graphlcd-0.1.5-span.diff 13307
+AUX 0.1.5/vdr-graphlcd-0.1.5-missing-include.patch 316 RMD160 099abb5f1cf7d6e81af41d6a3f5ab3ca029fd5b5 SHA1 bb48fddb12ab2dcb6a25789c9d6049951d73c369 SHA256 f5db943352b5cfb505e0a505659e267c9c046314c5006f53044e0abd7fe1b131
+MD5 afcb680c6883ff8f08d84a952a7270cc files/0.1.5/vdr-graphlcd-0.1.5-missing-include.patch 316
+RMD160 099abb5f1cf7d6e81af41d6a3f5ab3ca029fd5b5 files/0.1.5/vdr-graphlcd-0.1.5-missing-include.patch 316
+SHA256 f5db943352b5cfb505e0a505659e267c9c046314c5006f53044e0abd7fe1b131 files/0.1.5/vdr-graphlcd-0.1.5-missing-include.patch 316
AUX confd 681 RMD160 db009f002ee7608a45dbfd16097d0746fb3aa14d SHA1 220bbb0afa62dad0ab384fc16e5dcc5e5f2ec2b6 SHA256 77daae38d4a0a98b214365620c4397ef81516f2f62b7a131a2d0aa1af378f4d3
MD5 b52e340ed185e77044523dcee028aae6 files/confd 681
RMD160 db009f002ee7608a45dbfd16097d0746fb3aa14d files/confd 681
DIST vdr-graphlcd-0.1.2-pre6.tgz 232345 RMD160 5e47c30c9a7b5f7649a8cf12c38da73fa9bf76ae SHA1 4bfe58e96964f3563d018266a472075a20608b1b SHA256 3f5d772d392373c744a2945254039cfc4846f505683d90569845ef8be8c8aafd
DIST vdr-graphlcd-0.1.3.tgz 244387 RMD160 6856258bc3938a4a817fc583f2624c499f595013 SHA1 d8264ed9e1ceb2b5ddc8093252bfbe5d03cfa65f SHA256 70cac20084f5613b8f9a5bf08b10564c0e0ce890a87062d323e08739017c74ef
DIST vdr-graphlcd-0.1.4.tgz 240053 RMD160 88114a3bbf68231428de441c4cf5cc45b0d2e6a4 SHA1 24caadf77e84e11df05296b9477f19ae8e8f96b0 SHA256 f5cbe57b559d5b68492301bf89eca9ec16022a4bb8c09ccd2727cfeb273ac146
+DIST vdr-graphlcd-0.1.5.tgz 240133 RMD160 9d8c6753fca9881d6eb204a88128bc4e8a508966 SHA1 022c2c56dbca9742ec55f5d32756d3223aa1d29d SHA256 63ccb6e195be639a12cc2b6bb6550acc05eca161226e6692c22c31ec5e7c2769
EBUILD vdr-graphlcd-0.1.2_pre6-r1.ebuild 2361 RMD160 db5131f61c5029d1b3009f5b5154de9ee4d87cd3 SHA1 c99f9aa6e45b57b87851f4d8c5777c1a3cd06ee9 SHA256 c1d0c75c3435ad41b362157369ff3cde69f2f456d57f0b8ef3e92c698f480cb4
MD5 6b840029d1b8f94ce2461ead5e8b36aa vdr-graphlcd-0.1.2_pre6-r1.ebuild 2361
RMD160 db5131f61c5029d1b3009f5b5154de9ee4d87cd3 vdr-graphlcd-0.1.2_pre6-r1.ebuild 2361
MD5 06dd2a428b7b59a55426529204e73f1e vdr-graphlcd-0.1.4.ebuild 2389
RMD160 8a9f568fb0488d4fc998a5f85c3311bb3a33147c vdr-graphlcd-0.1.4.ebuild 2389
SHA256 881101a3e7f5aa6e6525dbeeba2c8381f4780ff45cffea0be0f97bfe611e3781 vdr-graphlcd-0.1.4.ebuild 2389
-MISC ChangeLog 2660 RMD160 a730c5ba03952374849200c5d42d5c9804abbe13 SHA1 152d9af950d8e165f22f656440c602d24973d5e8 SHA256 5a7ae355ff3b7f2a312d1c8c055fa96b9c0c235200eb9febcfdfb8941dd44789
-MD5 296b753112f337c9c9ef92ef0165c0f2 ChangeLog 2660
-RMD160 a730c5ba03952374849200c5d42d5c9804abbe13 ChangeLog 2660
-SHA256 5a7ae355ff3b7f2a312d1c8c055fa96b9c0c235200eb9febcfdfb8941dd44789 ChangeLog 2660
+EBUILD vdr-graphlcd-0.1.5.ebuild 2627 RMD160 28834bbe277631bd52c239eb92788846bda89241 SHA1 2ca8b9dbb6cfa10fa0ebee3dd44bd5380d55b270 SHA256 4f155e11e06c8c3ba7ab43008c4706edfea45c76aa304651fe2e972b5fa6ac52
+MD5 e621c4877a77c75e43f692cd3f7b35fa vdr-graphlcd-0.1.5.ebuild 2627
+RMD160 28834bbe277631bd52c239eb92788846bda89241 vdr-graphlcd-0.1.5.ebuild 2627
+SHA256 4f155e11e06c8c3ba7ab43008c4706edfea45c76aa304651fe2e972b5fa6ac52 vdr-graphlcd-0.1.5.ebuild 2627
+MISC ChangeLog 3033 RMD160 c6bf68c9252fa1c148eaa8b2b77cee8f3c1e77cf SHA1 a307305a6cf65ce7585a7d8cc1eb24aa4a0670ae SHA256 7f506fc26cb520f2cb4fc1004ed932eb91f9769ff326f41fde50360689e1a68f
+MD5 7b1c0c762778a7d02b2ec3a3c74c6160 ChangeLog 3033
+RMD160 c6bf68c9252fa1c148eaa8b2b77cee8f3c1e77cf ChangeLog 3033
+SHA256 7f506fc26cb520f2cb4fc1004ed932eb91f9769ff326f41fde50360689e1a68f ChangeLog 3033
MISC metadata.xml 399 RMD160 da803ab914b85f48f99cd09321a577b2ae2df876 SHA1 ed8cb826e20b52e381e5926e3f5df01da6d02fd8 SHA256 fb14b64f0c614498c334e60f3774e886fbb5a6143bce4f162f39bb61fee0be67
MD5 d620f1598e91e4b0e15a579df112c8f0 metadata.xml 399
RMD160 da803ab914b85f48f99cd09321a577b2ae2df876 metadata.xml 399
MD5 9bf29d35bc734f973ebbcb5fe8c7d586 files/digest-vdr-graphlcd-0.1.4 247
RMD160 34b54054fdf74bfab72ea20b395317a9d48640cb files/digest-vdr-graphlcd-0.1.4 247
SHA256 53fd99ce448b67cb1014be71d9da0ee3ff1008b65fd01cc9d4e4dafbba8bdbe0 files/digest-vdr-graphlcd-0.1.4 247
+MD5 3349175bffbaec993b2c4c0023b5f206 files/digest-vdr-graphlcd-0.1.5 247
+RMD160 a36f175f993d027556dcb4d99f16768ebf3c286d files/digest-vdr-graphlcd-0.1.5 247
+SHA256 2cc332c11be2cfe0eede68779893edcbfafdb0a1cb479df2fcf1288611d48c19 files/digest-vdr-graphlcd-0.1.5 247
-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.2 (GNU/Linux)
+Version: GnuPG v1.4.5 (GNU/Linux)
+Comment: added by hd_brummy@gentoo.org
-iD8DBQFFxwpzt2vP6XvVdOcRAqvJAJ9pN5aVUO0Q/THrw7TIFbpVxddx8wCeOvhv
-l+lXoDXSI5T6sNsdXNaIpYE=
-=ZRVv
+iD8DBQFF6GOWdn07HTTCgIoRAqvGAJ9SfAyd3uNW/ECPwKK53+p6X81bnACgsW3B
+Rjk0uRbJVRdQMATcx2dCHxQ=
+=D8tr
-----END PGP SIGNATURE-----
--- /dev/null
+diff -Naur graphlcd-0.1.4.orig/state.c graphlcd-0.1.4/state.c
+--- graphlcd-0.1.4.orig/state.c 2007-02-04 23:35:16.317687570 +0100
++++ graphlcd-0.1.4/state.c 2007-02-04 23:42:12.065780817 +0100
+@@ -16,6 +16,7 @@
+
+ #include <vdr/eitscan.h>
+ #include <vdr/i18n.h>
++#include <vdr/plugin.h>
+
+ #include "compat.h"
+
+@@ -654,6 +655,8 @@
+
+ void cGraphLCDState::GetProgramme()
+ {
++ bool ptitle = false;
++
+ mutex.Lock();
+ #if VDRVERSNUM < 10300
+ const cEventInfo * present = NULL, * following = NULL;
+@@ -670,9 +673,11 @@
+ {
+ event.presentTime = present->GetTime();
+ event.presentTitle = "";
+- if (!isempty(present->GetTitle()))
++ if (!isempty(present->GetTitle())) {
+ event.presentTitle = present->GetTitle();
+ event.presentSubtitle = "";
++ ptitle = true;
++ }
+ if (!isempty(present->GetSubtitle()))
+ event.presentSubtitle = present->GetSubtitle();
+ }
+@@ -704,9 +709,11 @@
+ {
+ event.presentTime = present->StartTime();
+ event.presentTitle = "";
+- if (!isempty(present->Title()))
++ if (!isempty(present->Title())) {
+ event.presentTitle = present->Title();
+ event.presentSubtitle = "";
++ ptitle = true;
++ }
+ if (!isempty(present->ShortText()))
+ event.presentSubtitle = present->ShortText();
+ }
+@@ -724,6 +731,54 @@
+ }
+ }
+ #endif
++
++#if VDRVERSNUM >= 10330
++ { // get&display Radiotext
++ cPlugin *p;
++ p = cPluginManager::CallFirstService("RadioTextService-v1.0", NULL);
++ if (p) {
++ RadioTextService_v1_0 rtext;
++ if (cPluginManager::CallFirstService("RadioTextService-v1.0", &rtext)) {
++ if (rtext.rds_info == 2 && strstr(rtext.rds_title, "---") == NULL) {
++ char rtpinfo[2][65], rtstr[140];
++ strcpy(rtpinfo[0], rtext.rds_title);
++ strcpy(rtpinfo[1], rtext.rds_artist);
++ sprintf(rtstr, "%02d:%02d %s | %s", rtext.title_start->tm_hour, rtext.title_start->tm_min, trim(((std::string)(rtpinfo[0]))).c_str(), trim(((std::string)(rtpinfo[1]))).c_str());
++ ptitle ? event.presentSubtitle = rtstr : event.presentTitle = rtstr;
++ }
++ else if (rtext.rds_info > 0) {
++ char rtstr[65];
++ strcpy(rtstr, rtext.rds_text);
++ ptitle ? event.presentSubtitle = trim(rtstr) : event.presentTitle = trim(rtstr);
++ }
++ }
++ }
++ }
++#endif
++
++#if VDRVERSNUM >= 10330
++ { // get&display LcrData
++ cPlugin *p;
++ p = cPluginManager::CallFirstService("LcrService-v1.0", NULL);
++ if (p)
++ {
++ LcrService_v1_0 lcrData;
++ if (cPluginManager::CallFirstService("LcrService-v1.0", &lcrData))
++ {
++ if ( strstr( lcrData.destination, "---" ) == NULL )
++ {
++ char lcrStringParts[3][25], lcrString[100];
++ strcpy( lcrStringParts[0], (const char *)lcrData.destination );
++ strcpy( lcrStringParts[1], (const char *)lcrData.price );
++ strcpy( lcrStringParts[2], (const char *)lcrData.pulse );
++ sprintf(lcrString, "%s | %s", trim((std::string)(lcrStringParts[1])).c_str(), trim((std::string)(lcrStringParts[2])).c_str());
++ event.presentTitle = trim(lcrStringParts[0]);
++ event.presentSubtitle = trim(lcrString);
++ }
++ }
++ }
++ }
++#endif
+ mutex.Unlock();
+ }
+
+diff -Naur graphlcd-0.1.4.orig/state.h graphlcd-0.1.4/state.h
+--- graphlcd-0.1.4.orig/state.h 2007-02-04 23:35:16.317687570 +0100
++++ graphlcd-0.1.4/state.h 2007-02-04 23:43:05.728759351 +0100
+@@ -130,4 +130,21 @@
+ tVolumeState GetVolumeState();
+ };
+
++// Radiotext
++struct RadioTextService_v1_0 {
++ int rds_info;
++ int rds_pty;
++ char *rds_text;
++ char *rds_title;
++ char *rds_artist;
++ struct tm *title_start;
++};
++
++// LcrData
++struct LcrService_v1_0 {
++ cString destination;
++ cString price;
++ cString pulse;
++};
++
+ #endif
--- /dev/null
+diff -Naur graphlcd-0.1.4.orig/display.c graphlcd-0.1.4/display.c
+--- graphlcd-0.1.4.orig/display.c 2007-02-04 23:10:36.609384554 +0100
++++ graphlcd-0.1.4/display.c 2007-02-04 23:17:48.756350745 +0100
+@@ -115,6 +115,7 @@
+ nCurrentBrightness = -1;
+ LastTimeBrightness = 0;
+ bBrightnessActive = true;
++ LastTimeSA.Set(0);
+ }
+
+ cGraphLCDDisplay::~cGraphLCDDisplay()
+@@ -373,6 +374,11 @@
+ update = true;
+ }
+
++ if ( LastTimeSA.TimedOut() )
++ {
++ update = true;
++ LastTimeSA.Set(1000);
++ }
+ // update Display every second or due to an update
+ if (CurrTime != LastTime || update)
+ {
+@@ -1460,6 +1466,8 @@
+ nTopY + nProgressbarHeight,
+ GLCD::clrBlack, false);
+
++ DisplaySA();
++
+ if (1 < replay.total && 1 < replay.current) // Don't show full progressbar for endless streams
+ {
+ bitmap->DrawRectangle(FRAME_SPACE_X,
+@@ -1945,3 +1953,141 @@
+ }
+ mutex.Unlock();
+ }
++
++void cGraphLCDDisplay::DisplaySA()
++{
++// Spectrum Analyzer visualization
++ if ( GraphLCDSetup.enableSpectrumAnalyzer )
++ {
++ if (cPluginManager::CallFirstService(SPAN_GET_BAR_HEIGHTS_ID, NULL))
++ {
++ Span_GetBarHeights_v1_0 GetBarHeights;
++
++ int bandsSA = 20;
++ int falloffSA = 8;
++ int channelsSA = 1;
++
++ unsigned int bar;
++ unsigned int *barHeights = new unsigned int[bandsSA];
++ unsigned int *barHeightsLeftChannel = new unsigned int[bandsSA];
++ unsigned int *barHeightsRightChannel = new unsigned int[bandsSA];
++ unsigned int volumeLeftChannel;
++ unsigned int volumeRightChannel;
++ unsigned int volumeBothChannels;
++ unsigned int *barPeaksBothChannels = new unsigned int[bandsSA];
++ unsigned int *barPeaksLeftChannel = new unsigned int[bandsSA];
++ unsigned int *barPeaksRightChannel = new unsigned int[bandsSA];
++
++ GetBarHeights.bands = bandsSA;
++ GetBarHeights.barHeights = barHeights;
++ GetBarHeights.barHeightsLeftChannel = barHeightsLeftChannel;
++ GetBarHeights.barHeightsRightChannel = barHeightsRightChannel;
++ GetBarHeights.volumeLeftChannel = &volumeLeftChannel;
++ GetBarHeights.volumeRightChannel = &volumeRightChannel;
++ GetBarHeights.volumeBothChannels = &volumeBothChannels;
++ GetBarHeights.name = "graphlcd";
++ GetBarHeights.falloff = falloffSA;
++ GetBarHeights.barPeaksBothChannels = barPeaksBothChannels;
++ GetBarHeights.barPeaksLeftChannel = barPeaksLeftChannel;
++ GetBarHeights.barPeaksRightChannel = barPeaksRightChannel;
++
++ if ( cPluginManager::CallFirstService(SPAN_GET_BAR_HEIGHTS_ID, &GetBarHeights ))
++ {
++ int i;
++ int barWidth = 2;
++ int saStartX = FRAME_SPACE_X;
++ int saEndX = saStartX + barWidth*bandsSA*2 + bandsSA/4 - 1;
++ int saStartY = FRAME_SPACE_Y;
++ int saEndY = FRAME_SPACE_Y + bitmap->Height()/2 - 3;
++
++ LastTimeSA.Set(100);
++
++ if ( GraphLCDSetup.SAShowVolume )
++ {
++
++ saStartX = FRAME_SPACE_X + bitmap->Width()/2 - (barWidth*bandsSA*2 + bandsSA/4)/2 - 2;
++ saEndX = saStartX + barWidth*bandsSA*2 + bandsSA/4 - 1;
++
++ // left volume
++ bitmap->DrawRectangle(FRAME_SPACE_X,
++ saStartY,
++ saStartX-1,
++ saEndY + 1,
++ GLCD::clrWhite, true);
++
++ for ( i=0; (i<logo->Width()/2-2) && (i<3*(volumeLeftChannel*saStartX)/100); i++)
++ {
++ bitmap->DrawRectangle(saStartX - i - 2,
++ saStartY + saEndY/2 - i,
++ saStartX - i - 4,
++ saStartY + saEndY/2 + i,
++ GLCD::clrBlack, true);
++ }
++
++ // right volume
++ bitmap->DrawRectangle(saEndX + 1,
++ saStartY,
++ bitmap->Width() - 1,
++ saEndY + 1,
++ GLCD::clrWhite, true);
++
++ for ( i=0; (i<logo->Width()/2-2) && (i<3*(volumeRightChannel*saStartX)/100); i++)
++ {
++ bitmap->DrawRectangle(saEndX + 2 + i,
++ saStartY + saEndY/2 - i,
++ saEndX + i + 4,
++ saStartY + saEndY/2 + i,
++ GLCD::clrBlack, true);
++ }
++ }
++ // black background
++ bitmap->DrawRectangle(saStartX,
++ saStartY,
++ saEndX,
++ saEndY + 1,
++ GLCD::clrBlack, true);
++
++ for ( i=0; i < bandsSA; i++ )
++ {
++/* if ( channelsSA == 2 )
++ {
++ bar = barHeightsLeftChannel[i];
++ bar = barHeightsRightChannel[i];
++ }*/
++ if ( channelsSA == 1)
++ {
++ // the bar
++ bar = (barHeights[i]*(saEndY-saStartY))/100;
++ bitmap->DrawRectangle(saStartX + barWidth*2*(i)+ barWidth + 1,
++ saEndY,
++ saStartX + barWidth*2*(i) + barWidth+ barWidth + 1,
++ saEndY - bar,
++ GLCD::clrWhite, true);
++
++ // the peak
++ bar = (barPeaksBothChannels[i]*(saEndY-saStartY))/100;
++ if ( bar > 0 )
++ {
++ bitmap->DrawRectangle(saStartX + barWidth*2*(i)+ barWidth + 1,
++ saEndY - bar,
++ saStartX + barWidth*2*(i) + barWidth+ barWidth + 1,
++ saEndY - bar+1,
++ GLCD::clrWhite, true);
++ }
++ }
++ }
++ }
++
++ delete [] barHeights;
++ delete [] barHeightsLeftChannel;
++ delete [] barHeightsRightChannel;
++ delete [] barPeaksBothChannels;
++ delete [] barPeaksLeftChannel;
++ delete [] barPeaksRightChannel;
++ }
++ }
++}
++
++//#############################################################################################
++
++
+diff -Naur graphlcd-0.1.4.orig/display.h graphlcd-0.1.4/display.h
+--- graphlcd-0.1.4.orig/display.h 2007-02-04 23:10:36.609384554 +0100
++++ graphlcd-0.1.4/display.h 2007-02-04 23:20:24.209000170 +0100
+@@ -29,10 +29,33 @@
+ #include <vdr/thread.h>
+ #include <vdr/player.h>
+
++#define SPAN_CLIENT_CHECK_ID "Span-ClientCheck-v1.0"
++#define SPAN_GET_BAR_HEIGHTS_ID "Span-GetBarHeights-v1.0"
+
+ #define LCDMAXCARDS 4
+ static const int kMaxTabCount = 10;
+
++struct Span_Client_Check_1_0 {
++ bool *isActive;
++ bool *isRunning;
++};
++
++struct Span_GetBarHeights_v1_0 {
++ unsigned int bands; // number of bands to compute
++ unsigned int *barHeights; // the heights of the bars of the two channels combined
++ unsigned int *barHeightsLeftChannel; // the heights of the bars of the left channel
++ unsigned int *barHeightsRightChannel; // the heights of the bars of the right channel
++ unsigned int *volumeLeftChannel; // the volume of the left channels
++ unsigned int *volumeRightChannel; // the volume of the right channels
++ unsigned int *volumeBothChannels; // the combined volume of the two channels
++ const char *name; // name of the plugin that wants to get the data
++ // (must be unique for each client!)
++ unsigned int falloff; // bar falloff value
++ unsigned int *barPeaksBothChannels; // bar peaks of the two channels combined
++ unsigned int *barPeaksLeftChannel; // bar peaks of the left channel
++ unsigned int *barPeaksRightChannel; // bar peaks of the right channel
++};
++
+ enum ThreadState
+ {
+ Normal,
+@@ -104,6 +127,7 @@
+ time_t LastTime;
+ time_t LastTimeCheckSym;
+ time_t LastTimeModSym;
++ cTimeMs LastTimeSA;
+ struct timeval CurrTimeval;
+ struct timeval UpdateAt;
+
+@@ -125,6 +149,7 @@
+ void DisplayTextItem();
+ void DisplayColorButtons();
+ void DisplayVolume();
++ void DisplaySA();
+
+ void UpdateIn(long usec);
+ bool CheckAndUpdateSymbols();
+diff -Naur graphlcd-0.1.4.orig/i18n.c graphlcd-0.1.4/i18n.c
+--- graphlcd-0.1.4.orig/i18n.c 2007-02-04 23:10:38.792567843 +0100
++++ graphlcd-0.1.4/i18n.c 2007-02-04 23:23:31.966096053 +0100
+@@ -966,5 +966,53 @@
+ # endif
+ #endif
+ },
++{
++ "Show spectrum analyzer",
++ "Zeige Spectrum Analyzer",
++ "",// TODO Slovenski
++ "",// TODO Italiano
++ "",// TODO Nederlands
++ "",// TODO Portuguçês
++ "",// TODO Franais
++ "",// TODO Norsk
++ "",// TODO Suomi
++ "",// TODO Polski
++ "",// TODO Español
++ "",// TODO Ellinika
++ "",// TODO Svenska
++ "",// TODO Romnâã
++ "",// TODO Magyar
++ "",// TODO Catalàà
++#if VDRVERSNUM > 10302
++ "",// TODO Russian
++# if VDRVERSNUM > 10307
++ "",// TODO Croatian
++# endif
++#endif
++ },
++ {
++ "Show SA volume",
++ "Zeige SA Lautstrke",
++ "",// TODO Slovenski
++ "",// TODO Italiano
++ "",// TODO Nederlands
++ "",// TODO Portugus
++ "",// TODO Franêçais
++ "",// TODO Norsk
++ "",// TODO Suomi
++ "",// TODO Polski
++ "",// TODO Español
++ "",// TODO Ellinika
++ "",// TODO Svenska
++ "",// TODO Romnâã
++ "",// TODO Magyar
++ "",// TODO Catal
++#if VDRVERSNUM > 10302
++ "",// TODO Russian
++# if VDRVERSNUM > 10307
++ "",// TODO Croatian
++# endif
++#endif
++ },
+ { NULL }
+ };
+diff -Naur graphlcd-0.1.4.orig/menu.c graphlcd-0.1.4/menu.c
+--- graphlcd-0.1.4.orig/menu.c 2007-02-04 23:10:38.862563031 +0100
++++ graphlcd-0.1.4/menu.c 2007-02-04 23:24:53.710477952 +0100
+@@ -101,4 +101,6 @@
+ SetupStore("BrightnessActive", GraphLCDSetup.BrightnessActive = newGraphLCDSetup.BrightnessActive);
+ SetupStore("BrightnessIdle", GraphLCDSetup.BrightnessIdle = newGraphLCDSetup.BrightnessIdle);
+ SetupStore("BrightnessDelay", GraphLCDSetup.BrightnessDelay = newGraphLCDSetup.BrightnessDelay);
++ SetupStore("enableSpectrumAnalyzer", GraphLCDSetup.enableSpectrumAnalyzer = newGraphLCDSetup.enableSpectrumAnalyzer);
++ SetupStore("SAShowVolume", GraphLCDSetup.SAShowVolume = newGraphLCDSetup.SAShowVolume);
+ }
+diff -Naur graphlcd-0.1.4.orig/plugin.c graphlcd-0.1.4/plugin.c
+--- graphlcd-0.1.4.orig/plugin.c 2007-02-04 23:10:38.862563031 +0100
++++ graphlcd-0.1.4/plugin.c 2007-02-04 23:26:57.655292837 +0100
+@@ -54,6 +54,7 @@
+ virtual cOsdObject * MainMenuAction();
+ virtual cMenuSetupPage * SetupMenu();
+ virtual bool SetupParse(const char * Name, const char * Value);
++ virtual bool Service(const char *Id, void *Data);
+ };
+
+ cPluginGraphLCD::cPluginGraphLCD()
+@@ -243,8 +244,24 @@
+ 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 if (!strcasecmp(Name, "enableSpectrumAnalyzer")) GraphLCDSetup.enableSpectrumAnalyzer = atoi(Value);
++ else if (!strcasecmp(Name, "SAShowVolume")) GraphLCDSetup.SAShowVolume = atoi(Value);
+ else return false;
+ return true;
+ }
+
++bool cPluginGraphLCD::Service(const char *Id, void *Data)
++{
++ if (strcmp(Id, SPAN_CLIENT_CHECK_ID) == 0)
++ {
++ if ( GraphLCDSetup.enableSpectrumAnalyzer && (Data != NULL) )
++ {
++ *((Span_Client_Check_1_0*)Data)->isActive = true;
++ }
++ return true;
++ }
++
++ return false;
++}
++
+ VDRPLUGINCREATOR(cPluginGraphLCD); // Don't touch this!
+diff -Naur graphlcd-0.1.4.orig/setup.c graphlcd-0.1.4/setup.c
+--- graphlcd-0.1.4.orig/setup.c 2007-02-04 23:10:38.865896137 +0100
++++ graphlcd-0.1.4/setup.c 2007-02-04 23:27:59.671030635 +0100
+@@ -52,7 +52,9 @@
+ ScrollTime(500),
+ BrightnessActive(100),
+ BrightnessIdle(100),
+- BrightnessDelay(30)
++ BrightnessDelay(30),
++ enableSpectrumAnalyzer(1),
++ SAShowVolume(1)
+ {
+ }
+
+diff -Naur graphlcd-0.1.4.orig/setup.h graphlcd-0.1.4/setup.h
+--- graphlcd-0.1.4.orig/setup.h 2007-02-04 23:10:38.865896137 +0100
++++ graphlcd-0.1.4/setup.h 2007-02-04 23:28:55.347204140 +0100
+@@ -54,6 +54,8 @@
+ int BrightnessActive;
+ int BrightnessIdle;
+ int BrightnessDelay;
++ int enableSpectrumAnalyzer;
++ int SAShowVolume;
+
+ public:
+ cGraphLCDSetup(void);
--- /dev/null
+diff -ru graphlcd-0.1.4-orig/display.c graphlcd-0.1.4/display.c
+--- graphlcd-0.1.4-orig/display.c 2007-02-05 11:32:23.963790615 +0100
++++ graphlcd-0.1.4/display.c 2007-02-05 11:32:35.890079873 +0100
+@@ -29,6 +29,7 @@
+
+ #include <vdr/tools.h>
+ #include <vdr/menu.h>
++#include <vdr/plugin.h>
+
+ #include "compat.h"
+
--- /dev/null
+MD5 116c8c62847c2a83be250761f203ad4a vdr-graphlcd-0.1.5.tgz 240133
+RMD160 9d8c6753fca9881d6eb204a88128bc4e8a508966 vdr-graphlcd-0.1.5.tgz 240133
+SHA256 63ccb6e195be639a12cc2b6bb6550acc05eca161226e6692c22c31ec5e7c2769 vdr-graphlcd-0.1.5.tgz 240133
--- /dev/null
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/vdr-graphlcd/vdr-graphlcd-0.1.5.ebuild,v 1.1 2007/03/02 17:48:59 hd_brummy Exp $
+
+inherit eutils vdr-plugin
+
+DESCRIPTION="VDR Graphical LCD Plugin"
+HOMEPAGE="http://graphlcd.berlios.de/"
+SRC_URI="http://download.berlios.de/graphlcd/${P}.tgz"
+
+KEYWORDS="~x86 ~amd64"
+
+SLOT="0"
+LICENSE="GPL-2"
+IUSE="truetype"
+
+DEPEND=">=media-video/vdr-1.2.6
+ >=app-misc/graphlcd-base-${PV}"
+
+PATCHES="
+ ${FILESDIR}/${PV}/graphlcd-${PV}-span.diff
+ ${FILESDIR}/${PV}/graphlcd-${PV}-radiotext-lcr-service.diff
+ ${FILESDIR}/${PV}/${P}-missing-include.patch"
+
+pkg_setup() {
+ vdr-plugin_pkg_setup
+
+ if ! getent group lp | grep -q vdr; then
+ echo
+ einfo "Add user 'vdr' to group 'lp' for full user access to parport device"
+ echo
+ elog "User vdr added to group lp"
+ gpasswd -a vdr lp
+ fi
+}
+
+src_unpack() {
+ vdr-plugin_src_unpack
+
+ sed -i "s:/usr/local:/usr:" Makefile
+}
+
+src_install() {
+ vdr-plugin_src_install
+
+ insopts -m0644 -ovdr -gvdr
+
+ insinto /usr/share/vdr/${VDRPLUGIN}/logos
+ doins -r ${VDRPLUGIN}/logos/*
+
+ insinto /usr/share/vdr/${VDRPLUGIN}/fonts
+ doins ${VDRPLUGIN}/fonts/*.fnt
+
+ if use truetype; then
+ for font in /usr/share/fonts/corefonts/*.ttf; do
+ elog ${font}
+ dosym ${font} /usr/share/vdr/graphlcd/fonts
+ done
+ fi
+
+ insinto /etc/vdr/plugins/${VDRPLUGIN}
+ doins ${VDRPLUGIN}/logonames.alias.*
+ doins ${VDRPLUGIN}/fonts.conf.*
+
+ dosym /usr/share/vdr/${VDRPLUGIN}/fonts /etc/vdr/plugins/${VDRPLUGIN}/fonts
+ dosym /usr/share/vdr/${VDRPLUGIN}/logos /etc/vdr/plugins/${VDRPLUGIN}/logos
+ dosym /etc/graphlcd.conf /etc/vdr/plugins/${VDRPLUGIN}/graphlcd.conf
+
+ if has_version ">=media-video/vdr-1.3.2" ; then
+ dosym /etc/vdr/plugins/${VDRPLUGIN}/logonames.alias.1.3 /etc/vdr/plugins/${VDRPLUGIN}/logonames.alias
+ else
+ dosym /etc/vdr/plugins/${VDRPLUGIN}/logonames.alias.1.2 /etc/vdr/plugins/${VDRPLUGIN}/logonames.alias
+ fi
+}
+
+pkg_preinst() {
+
+ if [[ -e /etc/vdr/plugins/graphlcd/fonts ]] && [[ ! -L /etc/vdr/plugins/graphlcd/fonts ]] \
+ || [[ -e /etc/vdr/plugins/graphlcd/logos ]] && [[ ! -L /etc/vdr/plugins/graphlcd/logos ]] ;then
+
+ elog "Remove wrong DIR in /etc/vdr/plugins/graphlcd from prior install"
+ elog "Press CTRL+C to abbort"
+ epause
+ rmdir -R /etc/vdrplugins/graphlcd/{fonts,logos}
+ fi
+}
+
+pkg_postinst() {
+ vdr-plugin_pkg_postinst
+
+ elog "Add additional options in /etc/conf.d/vdr.graphlcd"
+ elog
+ elog "Please copy or link one of the supplied fonts.conf.*"
+ elog "files in /etc/vdr/plugins/graphlcd/ to"
+ elog "/etc/vdr/plugins/graphlcd/fonts.conf"
+}