From: GetAway Date: Sat, 17 Mar 2018 11:23:06 +0000 (+0100) Subject: logomask: analyze zoom factor in 4:3 mode X-Git-Url: https://git.webhop.me/?a=commitdiff_plain;h=3f2da332c304f88531a896edc3a05a76d5d1663e;p=logomask.git logomask: analyze zoom factor in 4:3 mode - thx SnowHead for source code - bump version logomask 1.2 - bump version logoset 1.2a --- diff --git a/gfx.c b/gfx.c index 8898b14..4fa1b49 100644 --- a/gfx.c +++ b/gfx.c @@ -19,28 +19,40 @@ void RenderBox(int sx, int sy, int ex, int ey, int mode, gpixel *pix) if (sx<0) { - printf("[gfx.c] RenderBox called with sx < 0 (%d)\n", dxx); +// printf("[gfx.c] RenderBox called with sx < 0 (%d)\n", dxx); sx=0; } if (sy<0) { - printf("[gfx.c] RenderBox called with sy < 0 (%d)\n", dxx); +// printf("[gfx.c] RenderBox called with sy < 0 (%d)\n", dxx); sy=0; } if (dxx<0) { - printf("[gfx.c] RenderBox called with dx < 0 (%d)\n", dxx); +// printf("[gfx.c] RenderBox called with dx < 0 (%d)\n", dxx); dxx=0; } if (dyy<0) { - printf("[gfx.c] RenderBox called with dyy < 0 (%d)\n", dxx); +// printf("[gfx.c] RenderBox called with dyy < 0 (%d)\n", dyy); dyy=0; } + if ((sx+dxx)>var_screeninfo.xres) + { +// printf("[gfx.c] RenderBox called with (sx+dx) > xres (%d)\n", sx+dxx); + dxx=var_screeninfo.xres-sx; + } + + if ((sy+dyy)>var_screeninfo.yres) + { +// printf("[gfx.c] RenderBox called with (sy+dy) > yres (%d)\n", sy+dyy); + dyy=var_screeninfo.yres-sy; + } + if(mode==FILL) { for (count=0; count=var_screeninfo.xres) + lxp=var_screeninfo.xres-1; + if(xe=var_screeninfo.xres) + xe=var_screeninfo.xres-1; + lxw=xe-lxp; + if((lxp+lxw)>=var_screeninfo.xres) + lxw=var_screeninfo.xres-lxw-1; + *xp=lxp; + *xw=lxw; +} + +void yscal(int *yp, int *yw, int syp, int syw, double scal) +{ + int ye=syp+syw,lyp,lyw; + + lyp=syp; + if(syp=var_screeninfo.yres) + lyp=var_screeninfo.yres-1; + if(ye=var_screeninfo.yres) + ye=var_screeninfo.yres-1; + lyw=ye-lyp; + if((lyp+lyw)>=var_screeninfo.yres) + lyw=var_screeninfo.yres-lyw-1; + *yp=lyp; + *yw=lyw; +} + /****************************************************************************** * logomask Main ******************************************************************************/ + int main (int argc, char **argv) { - int i,j,m,found,loop=1,mask=0,test=0,pmode=0,lmode=0,mchanged=1,cchanged=2,mwait; + int i,j,m,found,loop=1,mask=0,test=0,pmode=0,lmode=0,pmode43=1,lmode43=1,mchanged=1,mchanged43=1,cchanged=2,mwait,tv; unsigned char lastchan[20]="", actchan[20]=""/*,channel[128]=""*/; - int xp[MAX_MASK][8],yp[MAX_MASK][8],xw[MAX_MASK][8],yw[MAX_MASK][8],valid[MAX_MASK],xxp,xxw,yyp,yyw,nmsk=0; + int xp[4][MAX_MASK][8],yp[4][MAX_MASK][8],xw[4][MAX_MASK][8],yw[4][MAX_MASK][8],valid[MAX_MASK],xxp,xxw,yyp,yyw,nmsk=0; gpixel tp, cmc, mc[MAX_MASK]; + double sc131=1.16666666667, sc132=1.193, sc23=1.33333333333; FILE *fh; char *cpt1,*cpt2; @@ -106,8 +166,9 @@ int main (int argc, char **argv) printf("logomask Version %s\n",CL_VERSION); if((mwait=Read_Neutrino_Cfg("timing.infobar"))<0) mwait=6; - -// mwait-=1; + if((tv=Read_Neutrino_Cfg("video_Format"))<0) + tv=3; + --tv; fb = open(FB_DEVICE, O_RDWR); @@ -140,11 +201,31 @@ int main (int argc, char **argv) memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); // if problem with config file return from plugin + wxh=var_screeninfo.xres>>1; + wyh=var_screeninfo.yres>>1; while(loop) { sleep(1); mchanged=0; + if(access("/tmp/.logomask_pause",0)!=-1) + continue; + i=0; + system("wget -Y off -q -O /tmp/logomask.stat http://localhost/control/zapto?statussectionsd"); + if((fh=fopen("/tmp/logomask.stat","r"))!=NULL) + { + if(fgets(tstr,500,fh)) + { + TrimString(tstr); + if(strlen(tstr)) + { + sscanf(tstr,"%d",&i); + } + } + fclose(fh); + } + if(i!=1) + continue; system("pzapit -var > /tmp/logomaskset.stat"); if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) { @@ -168,6 +249,32 @@ int main (int argc, char **argv) fclose(fh); } + if(tv>1) + { + system("pzapit -vm43 > /tmp/logomaskset.stat"); + if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) + { + if(fgets(tstr,500,fh)) + { + TrimString(tstr); + if(strlen(tstr)) + { + lmode43=pmode43; + if(sscanf(tstr+strlen(tstr)-1,"%d",&i)!=1) + { + pmode43=0; + } + else + { + mchanged43=(pmode43!=i); + pmode43=i; + } + } + } + fclose(fh); + } + } + system("pzapit -gi > /tmp/logomask.chan"); if((fh=fopen("/tmp/logomask.chan","r"))!=NULL) { @@ -181,7 +288,7 @@ int main (int argc, char **argv) if(strlen(tstr)) { strcpy(actchan,tstr); - cchanged=(cchanged==2)?3:((strcmp(actchan,lastchan)?1:0)); + cchanged=(cchanged==2)?3:((mchanged43 || (strcmp(actchan,lastchan))?1:0)); if(mchanged || cchanged) { found=0; @@ -189,7 +296,7 @@ int main (int argc, char **argv) { if(cchanged==1) { - sleep(mwait); + sleep((mchanged43)?3:mwait); } cchanged=1; } @@ -199,16 +306,16 @@ int main (int argc, char **argv) { if(valid[m]) { - xxp=xp[m][lmode]; - xxw=xw[m][lmode]; - yyp=yp[m][lmode]; - yyw=yw[m][lmode]; + xxp=xp[lmode43][m][lmode]; + xxw=xw[lmode43][m][lmode]; + yyp=yp[lmode43][m][lmode]; + yyw=yw[lmode43][m][lmode]; make_color(TRANSP, &cmc); - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL,&cmc); + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL,&cmc); for(i=0;i<=yyw;i++) { j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if((j+(xxw<<2))1) + { // todo 14:9-Fernseher beruecksichtigen + // Pan & Scan + xscal(&(xp[0][nmsk][i]),&(xw[0][nmsk][i]),xxp,xxw,sc23); + yscal(&(yp[0][nmsk][i]),&(yw[0][nmsk][i]),yyp,yyw,sc23); + // Vollbild + xscal(&(xp[2][nmsk][i]),&(xw[2][nmsk][i]),xxp,xxw,sc23); + yp[2][nmsk][i]=yyp; + yw[2][nmsk][i]=yyw; + // Pan & Scan 14:9 + xscal(&(xp[3][nmsk][i]),&(xw[3][nmsk][i]),xxp,xxw,sc131); + yscal(&(yp[3][nmsk][i]),&(yw[3][nmsk][i]),yyp,yyw,sc132); + } mc[nmsk].lpixel=cmc.lpixel; found=1; valid[nmsk]=1; @@ -279,24 +399,29 @@ int main (int argc, char **argv) } if(mask) { +//printf("[logomask] pmode=%d,pmode43=%d\n",pmode,pmode43); for(m=0; m0) { - j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if((j+(xxw<<2)) #include +#include +#include #include "logoset.h" #include "io.h" #include "gfx.h" @@ -9,11 +11,13 @@ extern int FSIZE_BIG; extern int FSIZE_MED; extern int FSIZE_SMALL; -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define CFG_FILE "/var/tuxbox/config/logomask.conf" +static unsigned char NCF_FILE[]="/var/tuxbox/config/neutrino.conf"; +static unsigned char CFG_FILE[]="/var/tuxbox/config/logomask.conf"; +static unsigned char AST_FILE[]="/var/etc/init.d/S9L_logomask"; +static unsigned char AST_TEXT[]="#!/bin/sh\n(sleep 20; logomask) &\n"; unsigned char FONT[64]= "/share/fonts/pakenham.ttf"; -#define CL_VERSION "1.01" +#define CL_VERSION "1.2a" #define MAX_MASK 16 // TRANSP, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, TURQUOISE, @@ -63,18 +67,46 @@ char *pt1=strg, *pt2=strg; } } +int Read_Neutrino_Cfg(char *entry) +{ +FILE *nfh; +char *cfptr=NULL; +int rv=-1; + + if((nfh=fopen(NCF_FILE,"r"))!=NULL) + { + tstr[0]=0; + + while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) + { + fgets(tstr,500,nfh); + } + if(!feof(nfh) && cfptr) + { + ++cfptr; + if(sscanf(cfptr,"%d",&rv)!=1) + { + rv=-1; + } +// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); + } + fclose(nfh); + } + return rv; +} + /****************************************************************************** * logoset Main ******************************************************************************/ int main (int argc, char **argv) { - int i,j,found=0,m,mask=1,kmode=1,pmode=0, lc=-1, changed=0, todo=1, help=1, help_changed=0, move=0; + int i,j,found=0,m,mask=1,kmode=1,pmode=0, lc=-1, changed=0, todo=1, help=1, help_changed=0, move=0, autost,tv,pmode43,scr=1; unsigned char actchan[20]=""/*,channel[128]=""*/; FILE *fh,*fh2; char *cpt1,*cpt2; gpixel mp, mc[MAX_MASK], tp; - int tsx=430, tsy=120, tdy=24, tsz=28, txw=500, tcol=TURQUOISE; + int tsx=430, tsy=120, tdy=24, tsz=28, txw=500, tcol=LGREEN; int xp[MAX_MASK][8],yp[MAX_MASK][8],xw[MAX_MASK][8],yw[MAX_MASK][8],valid[MAX_MASK],cmc[MAX_MASK],xxp,xxw,yyp,yyw,nmsk=0,amsk=0; double xs=1.0, ys=1.0; time_t t1,t2; @@ -92,6 +124,17 @@ int main (int argc, char **argv) yw[j][i]=20; } } + if((tv=Read_Neutrino_Cfg("video_Format"))<0) + tv=3; + --tv; + if((i=Read_Neutrino_Cfg("screen_preset"))>=0) + scr=i; + if(!scr) + { + tsy=65; + tdy=20; + } + system("pzapit -var > /tmp/logomaskset.stat"); if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) { @@ -109,6 +152,28 @@ int main (int argc, char **argv) fclose(fh); } + if(tv>1) + { + system("pzapit -vm43 > /tmp/logomaskset.stat"); + if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) + { + if(fgets(tstr,500,fh)) + { + TrimString(tstr); + if(strlen(tstr)) + { + if(sscanf(tstr+strlen(tstr)-1,"%d",&pmode43)!=1) + { + pmode43=0; + } + } + } + fclose(fh); + } + if(pmode43!=1) + system("pzapit -vm43 1"); + } + system("touch /tmp/.logomask_kill"); fb = open(FB_DEVICE, O_RDWR); @@ -183,7 +248,6 @@ int main (int argc, char **argv) } memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); - system("pzapit -gi > /tmp/logomask.chan"); if((fh=fopen("/tmp/logomask.chan","r"))!=NULL) { @@ -271,20 +335,21 @@ int main (int argc, char **argv) yyp=yp[m][pmode]; yyw=yw[m][pmode]; tp.lpixel=mc[m].lpixel; - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, &tp); + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL, (xxw>0)?&tp:make_color(LRED,&tp)); if(m==amsk) - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, GRID, make_color(LBLUE,&tp)); + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, GRID, make_color((xxw>0)?LBLUE:LRED,&tp)); for(i=0;i<=yyw;i++) { j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if((j+(xxw<<2))0) { - case KEY_LEFT: - if(lc==KEY_LEFT) - { - xs+=0.3; - } - else - { - xs=1.0; - } - if(kmode) - { - if(xxp>0) - { - changed=1; - xxp-=xs; - } - } - else + switch(rc) { - if(xxw>6) - { - changed=1; - xxw-=xs; - } - } - move=1; - break; - - case KEY_RIGHT: - if((xxp+xxw)<(fix_screeninfo.line_length-1)) - { - changed=1; - if(lc==KEY_RIGHT) + case KEY_LEFT: + if(lc==KEY_LEFT) { xs+=0.3; } @@ -341,49 +377,57 @@ int main (int argc, char **argv) } if(kmode) { - xxp+=xs; + if(xxp>0) + { + changed=1; + xxp-=xs; + if(xxp<0) + xxp=0; + } } else { - xxw+=xs; + if(xxw>4) + { + changed=1; + xxw-=xs; + if(xxw<2) + xxw=2; + } } - } - move=1; + move=1; break; - - case KEY_UP: - if(lc==KEY_UP) - { - ys+=0.2; - } - else - { - ys=1.0; - } - if(kmode) - { - if(yyp>0) - { - changed=1; - yyp-=ys; - } - } - else - { - if(yyw>6) + + case KEY_RIGHT: + if((xxp+xxw)var_screeninfo.xres) + xxp=var_screeninfo.xres-xxw; + } + else + { + xxw+=xs; + if((xxp+xxw)>var_screeninfo.xres) + xxw=var_screeninfo.xres-xxp; + } } - } - move=1; + move=1; break; - case KEY_DOWN: - if((yyp+yyw)<(var_screeninfo.yres-1)) - { - changed=1; - if(lc==KEY_DOWN) + case KEY_UP: + if(lc==KEY_UP) { ys+=0.2; } @@ -393,134 +437,53 @@ int main (int argc, char **argv) } if(kmode) { - yyp+=ys; - } - else - { - yyw+=ys; - } - } - move=1; - break; - - case KEY_RED: - changed=1; - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, make_color(TRANSP,&tp)); - for(i=0;i<=yyw;i++) - { - j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if(((j+(xxw<<2)))0) { - memcpy(lfb+j, lbb+j, xxw<<2); + changed=1; + yyp-=ys; } - } - valid[amsk]=0; - nmsk--; - kmode=1; - if(nmsk) - { - todo=2; - amsk=-1; - for(m=0; m4) + { + changed=1; + yyw-=ys; + } + if(yyw<2) + yyw=2; } + move=1; break; - - case KEY_GREEN: - if(nmsk1) - { - m=amsk+1; - if(m>=MAX_MASK) + else { - m=0; + ys=1.0; } - while(!valid[m]) + if(kmode) { - if(++m>=MAX_MASK) - { - m=0; - } + yyp+=ys; + if((yyp+yyw)>var_screeninfo.yres) + yyp=var_screeninfo.yres-yyw; } - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, &lpix); - amsk=m; - xxp=xp[amsk][pmode]; - xxw=xw[amsk][pmode]; - yyp=yp[amsk][pmode]; - yyw=yw[amsk][pmode]; - lpix.lpixel=mc[amsk].lpixel; - } - break; - - case KEY_PAGEDOWN: - if(nmsk>1) - { - m=amsk-1; - if(m<0) + else { - m=MAX_MASK-1; + yyw+=ys; + if((yyp+yyw)>var_screeninfo.yres) + yyw=var_screeninfo.yres-yyp; } - while(!valid[m]) - { - if(--m<0) - { - m=MAX_MASK; - } - } - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, &lpix); - amsk=m; - xxp=xp[amsk][pmode]; - xxw=xw[amsk][pmode]; - yyp=yp[amsk][pmode]; - yyw=yw[amsk][pmode]; - lpix.lpixel=mc[amsk].lpixel; } + move=1; break; case KEY_YELLOW: @@ -530,7 +493,7 @@ int main (int argc, char **argv) case KEY_BLUE: kmode=1; break; - + case KEY_1: if(nmsk) { @@ -652,6 +615,175 @@ int main (int argc, char **argv) changed=1; } break; + } + } + switch(rc) + { + + case KEY_RED: + changed=1; + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL, make_color(TRANSP,&tp)); + for(i=0;i<=yyw;i++) + { + j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); + if(((j+(abs(xxw)<<2)))<=fix_screeninfo.line_length*var_screeninfo.yres) + { + memcpy(lfb+j, lbb+j, abs(xxw)<<2); + } + } + valid[amsk]=0; + nmsk--; + kmode=1; + if(nmsk) + { + todo=2; + amsk=-1; + for(m=0; m1) + { + m=amsk+1; + if(m>=MAX_MASK) + { + m=0; + } + while(!valid[m]) + { + if(++m>=MAX_MASK) + { + m=0; + } + } + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL, (xxw>0)?&lpix:make_color(LRED,&tp)); + amsk=m; + xxp=xp[amsk][pmode]; + xxw=xw[amsk][pmode]; + yyp=yp[amsk][pmode]; + yyw=yw[amsk][pmode]; + lpix.lpixel=mc[amsk].lpixel; + } + break; + + case KEY_PAGEDOWN: + if(nmsk>1) + { + m=amsk-1; + if(m<0) + { + m=MAX_MASK-1; + } + while(!valid[m]) + { + if(--m<0) + { + m=MAX_MASK; + } + } + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL, (xxw>0)?&lpix:make_color(LRED,&tp)); + amsk=m; + xxp=xp[amsk][pmode]; + xxw=xw[amsk][pmode]; + yyp=yp[amsk][pmode]; + yyw=yw[amsk][pmode]; + lpix.lpixel=mc[amsk].lpixel; + } + break; + + case KEY_FAV: + if(amsk>=0) + { + changed=1; + xw[amsk][pmode]=-xw[amsk][pmode]; + xxw=xw[amsk][pmode]; + printf("logoset: xxp=%d, xxw=%d, yyp=%d, yyw=%d\n",xxp,xxw,yyp,yyw); + RenderBox(xxp, yyp, xxp+abs(xxw), yyp+yyw, FILL, (xxw>0)?&lpix:make_color(LRED, &tp)); + } + break; + + case KEY_COOL: + if(amsk>=0) + { + for(i=0; i0)?((kmode)?LBLUE:LYELLOW):LRED,&tp)); for(i=0;i<=yyw;i++) { j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if((j+(xxw<<2))0)?((kmode)?LBLUE:LYELLOW):LRED,&tp)); } move=0; if(help_changed) @@ -716,9 +848,9 @@ int main (int argc, char **argv) } if(help) { - RenderBox(tsx,tsy,tsx+txw,tsy+21*tdy,FILL,make_color(TRANSP, &tp)); + RenderBox(tsx,tsy,tsx+abs(txw),tsy+21*tdy,FILL,make_color(TRANSP, &tp)); if(nmsk) - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((kmode)?LBLUE:LYELLOW, &tp)); + RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+abs(xw[amsk][pmode]), yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((xw[amsk][pmode]>0)?((kmode)?LBLUE:LYELLOW):LRED, &tp)); RenderString("Maskensteuerung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Blau : Umschalten auf Positionseinstellung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Gelb : Umschalten auf Größeneinstellung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); @@ -726,6 +858,7 @@ int main (int argc, char **argv) RenderString("Rot : Maske löschen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("PgUp : nächste Maske auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("PgDn : vorherige Maske auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); + RenderString("Fav : Maske aktivieren/deaktivieren", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Maskenfarbe", tsx, tsy+=(2*tdy), txw, LEFT, tsz, tcol); RenderString("Mute : Maskenfarbe aus Vorgabe auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("1,4,7 : Farbton Rot erhöhen, auf Mitte setzen, verringern", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); @@ -734,6 +867,10 @@ int main (int argc, char **argv) RenderString("Vol + : Transparenz erhöhen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Vol - : Transparenz verringern", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Allgemein", tsx, tsy+=(2*tdy), txw, LEFT, tsz, tcol); + if(autost) + RenderString("0 : Autostart von logomask ausschalten", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); + else + RenderString("0 : Autostart von logomask einschalten", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("? : Hilfetext ein/ausschalten", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("Exit : Abbrechen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); RenderString("OK : Speichern und Beenden", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); @@ -742,9 +879,9 @@ int main (int argc, char **argv) { if(help_changed) { - RenderBox(tsx, tsy, tsx+txw, tsy+21*tdy, FILL, make_color(TRANSP, &tp)); + RenderBox(tsx, tsy, tsx+abs(txw), tsy+21*tdy, FILL, make_color(TRANSP, &tp)); if(nmsk) - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((kmode)?LBLUE:LYELLOW, &tp)); + RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+abs(xw[amsk][pmode]), yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((xw>0)?((kmode)?LBLUE:LYELLOW):LRED, &tp)); } } help_changed=0; diff --git a/logoset.h b/logoset.h index 2a433b2..0afacd6 100644 --- a/logoset.h +++ b/logoset.h @@ -10,9 +10,6 @@ #include #include #include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif #include #include #include diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..0e0a9ae --- /dev/null +++ b/readme.txt @@ -0,0 +1,86 @@ +Was ist Logomask? +--------------------------- +Diese Plugin dient dazu, senderspezifisch die Senderlogos oder auch Laufschrif- +ten (z.B bei n-tv)mit einer oder mehreren schwarzen Masken abzudecken, um das +Fernsehbild ruhiger zu gestalten. Position und Größe der Masken werden dabei für +jeden Sender separat gespeichert und können auch für jeden einzelnen Videomodus +des Senders (4:3, 16:9 usw.) getrennt konfiguriert werden. Zur schnellen Anpassung +der Masken über die Fernbedienung enthält das Archiv auch das Konfigurationstool +"logoset". + +Installation +------------ +Die Speicherorte der Dateien ergeben sich aus der Archivstruktur. Das eigent- +liche Plugin "logomask" kommt mit den Rechten 755 nach /var/plugins/. Seine +Konfigurationsdatei "logomask.conf" legt das Plugin in /var/tuxbox/config ab. +Im Archiv ist die Konfigurationsdatei nur als Beispiel enthalten, da sie für +jede Box spezifisch angelegt werden muß. Das Plugin kann entweder direkt durch +den Eintrag "/var/plugins/logomask &" in einer der Neutrino-Startdateien gestar- +tet werden (das "&" im Eintrag ist wichtig), über den ebenfalls im Archiv be- +findlichen Shellstarter (logomask.cfg und logomask.so kommen nach /var/tuxbox/plugins/, +logomask.so mit den Rechten 755, logomask.sh kommt mit den Rechten 755 nach /var/plugins/), +oder, wenn des FlexMenü im Image vorhanden ist, durch Einfügen der ebenfalls im Archiv +enthaltenen Einträge in die shellexec.conf. Während im Flexmenü die jeweils sinn- +vollen Einträge (Starten oder Beenden) automatisch angeboten werden, kann man +beim Start über die blaue Taste das Plugin mit einem Aufruf starten und mit einem +erneuten Aufruf beenden. +Das Konfigurationsplugin "logoset" kommt mit den Rechten 755 nach /var/plugins/ und kann +ebenfalls über Shellstarter (logoset.cfg und logoset.so nach /var/tuxbox/plugins/, +logoset.so mit Rechten 755) oder über das FlexMenü gestartet werden. + +Bedienung +--------- +Bevor das Plugin genutzt werden kann, muß es mit dem Konfigurations-Plugin auf die +Senderlogos der gewünschten Sender eingestellt werden. Wurde ein Sender nicht kon- +figuriert, wird auch keine Maske dargestellt. Nach dem Umschalten auf einen anderen +Sender wartet das Plugin mit dem Löschen der alten und dem Anzeigen der neuen Masken +so lange, bis die InfoBar im unteren Bildbereich ausgeblendet wurde, damit diese +Information nicht gelöscht oder überschrieben wird. + +Will man auf einem Sender die Masken aktivieren, stellt man diesen Sender ein und +startet das Konfigurations-Plugin. In der Mitte des Bildes wird nun ein blauer +Rahmen angezeigt. Diesen kann man mit den Richtungstasten der Fernbedienung nun so +auf dem Logo platzieren, daß der Rahmen mit seiner linken oberen Ecke schon auf der +richtigen Position steht. Nun kann mit der gelben Taste auf Größenveränderung umge- +schaltet werden (die Rahmenfarbe wechselt zu gelb). Mit den Rechts-/Links-Tasten +kann die Maskengröße jetzt horizontal vergrößert/verkleinert und mit den Runter-/Hoch- +tasten vertikal vergrößert/verkleinert werden. Will man die Position zwischendurch +noch einmal ändern, kann mit der blauen Taste auch wieder in den Positionierungsmo- +dus geschaltet werden (Rahmenfarbe wechselt wieder zu blau). +Die Schrittweite der Verschiebung erhöht sich bei länger gedrückter Taste, um eine +schnelle Positionierung zu ermöglichen. Wird länger als zwei Sekunden keine oder eine +andere als die bisherige Taste gedrückt, wird die Schrittweite wieder auf den Start- +wert gesetzt, damit eine Feinpositionierung durchgeführt werden kann. Bei längerem +Tastendruck wird die Schrittweite jedoch wieder erhöht. + +Da Plasmafernseher auf die standardmäßig schwarzen Masken bei sehr langer Anzeige mit +Einbrenneffekten reagieren, kann die Farbe jeder einzelnen Maske mit der Mute-Taste +aus 15 Farben(Dbox) ausgewählt werden. Jeder Tastendruck schaltet zur nächsten Farbe. Em- +pfehlenswert für Plasmas ist Grau. Die gewählte Farbe wird so lange angezeigt, bis +wieder begonnen wird, die Maske zu bewegen. +Aufgrund des höheren Farbraums bei neueren Boxen ist hier sogar eine Farbgestaltung +der Masken möglich, welche keine Wünsche mehr offenlassen dürfte. + +Für das Hinzufügen zusätzlicher Masken wird die grüne Taste betätigt. Die neue Maske +erscheint wieder in der Bildschirmmitte und kann, wie die vorhergende Maske konfigu- +riert werden. Für jeden Sender können maximal 16 Masken angelegt werden. Dabei wird +beim Konfigurieren immer die aktuelle Maske mit dem farbigen Rahmen angezeigt. Alle +anderen Masken werden normal schwarz dargestellt. Zwischen den einzelnen Masken kann +mittels der Lautstärke + und - Tasten weitergeschaltet werden. +Soll eine Maske nicht mehr dargestellt werden, so ist diese Maske mit den Volume-Tas- +ten auszuwählen und die rote Taste zu betätigen. Die selektierte Maske wird nun gelöscht +und die erste Maske in der Reihe (wenn vorhanden) wieder aktiv geschaltet. +Sitzen alle Masken richtig, kann die Einstellung mit der OK-Taste in die Konfigurations- +datei übernommen werden. Das Plugin "logomask", welches währen der Einstellung ge- +stoppt wurde, wird nun automatisch neu gestartet. +Der Hilfetext kann mit der "?"-Taste ein- und ausgeblendet werden. +Diese Einstellungen sind für die verschiedenen Videomodi der Box getrennt vorzunehmen. +Schaltet die Box auf einen Videomodus, welcher noch nicht konfiguriert wurde, wird die +Maske in der Bildmitte dargestellt und muß mit dem Konfigrations-Plugin einmalig ange- +passt werden. +Sollte ein Sender allerdings einen 16:9-Film im 4:3-Format senden und dabei sein Logo +weiter nach unten schieben, kann das die Box nicht erkennen. In diesem Fall kann man +die Maske aber auch schnell über die Fernbedienung neu positionieren. +Die Einstellungen werden generell nur mit der "OK"-Taste übernommen. Drückt man die +"Home"-Taste, wird die Konfiguration ohne Änderungen der Konfigurationsdatei abgebro- +chen.