From: GetAway Date: Fri, 9 Jun 2017 12:57:00 +0000 (+0200) Subject: add last worldweather API with all fixes X-Git-Url: https://git.webhop.me/?a=commitdiff_plain;h=fbc4c2bd9ea2363f292b7a844d2d1722c240e59f;p=tuxwetter.git add last worldweather API with all fixes --- diff --git a/bmps.c b/bmps.c index d8f4db4..62b53e2 100644 --- a/bmps.c +++ b/bmps.c @@ -39,9 +39,10 @@ int lcd_fd=-1; lcd_packed_buffer s; - +#if 0 // only dbox2 begin int bmp2lcd (char *bildfile) { + char bild2lcd [50]; char filename[50]; char bmpfile[50]; @@ -109,6 +110,7 @@ int bmp2lcd (char *bildfile) } if(colors) free(colors); + // image line_size = (bh.width*bh.bit_count / 8); bmpline_size = (line_size + 3) & ~3; @@ -164,7 +166,6 @@ void clear_lcd(void) //************** bmp.c ********************** - int bmp2raw(struct bmp_header bh, unsigned char *bmp, lcd_raw_buffer raw) { int x, y, ofs, linesize; linesize = ((bh.width*bh.bit_count / 8) + 3) & ~3; @@ -227,3 +228,4 @@ void raw2raw4bit(lcd_raw_buffer source, lcd_raw4bit_buffer dest) { } } } +#endif // only dbox2 end diff --git a/color.h b/color.h deleted file mode 100644 index 6ab843b..0000000 --- a/color.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - Neutrino-GUI - DBoxII-Project - - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - Kommentar: - - Diese GUI wurde von Grund auf neu programmiert und sollte nun vom - Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert - auf der Client-Server Idee, diese GUI ist also von der direkten DBox- - Steuerung getrennt. Diese wird dann von Daemons uebernommen. - - - License: GPL - - 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., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - - -#ifndef __color__ -#define __color__ - -#define COL_MAXFREE 254-8*7 - 1 -#define COL_INFOBAR_SHADOW 254-8*7 -#define COL_INFOBAR 254-8*6 -#define COL_MENUHEAD 254-8*5 -#define COL_MENUCONTENT 254-8*4 -#define COL_MENUCONTENTDARK 254-8*3 -#define COL_MENUCONTENTSELECTED 254-8*2 -#define COL_MENUCONTENTINACTIVE 254-8*1 - -#define COL_BACKGROUND 255 - -#define COL_INFOBAR_SHADOW_PLUS_0 (COL_INFOBAR_SHADOW + 0) -#define COL_INFOBAR_SHADOW_PLUS_1 (COL_INFOBAR_SHADOW + 1) -#define COL_INFOBAR_PLUS_0 (COL_INFOBAR + 0) -#define COL_INFOBAR_PLUS_1 (COL_INFOBAR + 1) -#define COL_INFOBAR_PLUS_3 (COL_INFOBAR + 3) -#define COL_INFOBAR_PLUS_7 (COL_INFOBAR + 7) -#define COL_MENUHEAD_PLUS_0 (COL_MENUHEAD + 0) -#define COL_MENUCONTENT_PLUS_0 (COL_MENUCONTENT + 0) -#define COL_MENUCONTENT_PLUS_1 (COL_MENUCONTENT + 1) -#define COL_MENUCONTENT_PLUS_2 (COL_MENUCONTENT + 2) -#define COL_MENUCONTENT_PLUS_3 (COL_MENUCONTENT + 3) -#define COL_MENUCONTENT_PLUS_4 (COL_MENUCONTENT + 4) -#define COL_MENUCONTENT_PLUS_5 (COL_MENUCONTENT + 5) -#define COL_MENUCONTENT_PLUS_6 (COL_MENUCONTENT + 6) -#define COL_MENUCONTENT_PLUS_7 (COL_MENUCONTENT + 7) -#define COL_MENUCONTENTDARK_PLUS_0 (COL_MENUCONTENTDARK + 0) -#define COL_MENUCONTENTDARK_PLUS_2 (COL_MENUCONTENTDARK + 2) -#define COL_MENUCONTENTSELECTED_PLUS_0 (COL_MENUCONTENTSELECTED + 0) -#define COL_MENUCONTENTSELECTED_PLUS_2 (COL_MENUCONTENTSELECTED + 2) -#define COL_MENUCONTENTINACTIVE_PLUS_0 (COL_MENUCONTENTINACTIVE + 0) -#define COL_BACKGROUND_PLUS_0 (COL_BACKGROUND + 0) - -enum { COL_WHITE=0x60, COL_RED, COL_GREEN, COL_BLUE, COL_YELLOW, COL_BLACK }; - -#endif diff --git a/gfx.c b/gfx.c index 3f40c34..3a1bb3f 100644 --- a/gfx.c +++ b/gfx.c @@ -197,6 +197,7 @@ void PaintIcon(char *filename, int x, int y, unsigned char offset) return; } #endif + /****************************************************************************** * RenderLine ******************************************************************************/ diff --git a/gfx.h b/gfx.h index 64ada4b..9bfa439 100644 --- a/gfx.h +++ b/gfx.h @@ -5,6 +5,7 @@ void Center_Screen(int wx, int wy, int *csx, int *csy); void RenderBox(int sx, int sy, int ex, int ey, int mode, int color); //void PaintIcon(char *filename, int x, int y, unsigned char offset); + void RenderLine( int xa, int ya, int xb, int yb, unsigned char farbe ); void RenderCircle(int sx, int sy, int col); diff --git a/gif.c b/gif.c index a93da78..bc79eea 100644 --- a/gif.c +++ b/gif.c @@ -36,11 +36,12 @@ #define FH_ERROR_FORMAT 2 /* file format error */ #define FH_ERROR_MALLOC 3 /* error during malloc */ #define min(a,b) ((a) < (b) ? (a) : (b)) + #define gflush return(FH_ERROR_FILE); -#define grflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } -#define mgrflush { free(lb); free(slb); DGifCloseFile(gft); return(FH_ERROR_FORMAT); } +#define grflush { DGifCloseFile(gft, &err); return(FH_ERROR_FORMAT); } +#define mgrflush { free(lb); free(slb); DGifCloseFile(gft, &err); return(FH_ERROR_FORMAT); } #define agflush return(FH_ERROR_FORMAT); -#define agrflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } +#define agrflush { DGifCloseFile(gft, &err); return(FH_ERROR_FORMAT); } int fh_gif_id(const char *name) { @@ -67,7 +68,8 @@ inline void m_rend_gif_decodecolormap(unsigned char *cmb,unsigned char *rgbb,Col } int fh_gif_load(const char *name,unsigned char *buffer,int x,int y) { - int px,py,i,ibxs; + int err = 0; + int px,py,i; int j; unsigned char *fbptr; unsigned char *lb; @@ -79,7 +81,7 @@ int fh_gif_load(const char *name,unsigned char *buffer,int x,int y) ColorMapObject *cmap; int cmaps; - gft=DGifOpenFileName(name); + gft=DGifOpenFileName(name, &err); if(gft==NULL) gflush; do { @@ -98,7 +100,6 @@ int fh_gif_load(const char *name,unsigned char *buffer,int x,int y) cmap=(gft->Image.ColorMap ? gft->Image.ColorMap : gft->SColorMap); cmaps=cmap->ColorCount; - ibxs=ibxs*3; fbptr=buffer; if(!(gft->Image.Interlace)) { @@ -136,18 +137,20 @@ int fh_gif_load(const char *name,unsigned char *buffer,int x,int y) } } while( rt!= TERMINATE_RECORD_TYPE ); - DGifCloseFile(gft); + DGifCloseFile(gft, &err); return(FH_ERROR_OK); } + int fh_gif_getsize(const char *name,int *x,int *y, int wanted_width, int wanted_height) { + int err = 0; int px,py; GifFileType *gft; GifByteType *extension; int extcode; GifRecordType rt; - gft=DGifOpenFileName(name); + gft=DGifOpenFileName(name, &err); if(gft==NULL) gflush; do { @@ -160,7 +163,7 @@ int fh_gif_getsize(const char *name,int *x,int *y, int wanted_width, int wanted_ px=gft->Image.Width; py=gft->Image.Height; *x=px; *y=py; - DGifCloseFile(gft); + DGifCloseFile(gft, &err); return(FH_ERROR_OK); break; case EXTENSION_RECORD_TYPE: @@ -173,6 +176,6 @@ int fh_gif_getsize(const char *name,int *x,int *y, int wanted_width, int wanted_ } } while( rt!= TERMINATE_RECORD_TYPE ); - DGifCloseFile(gft); + DGifCloseFile(gft, &err); return(FH_ERROR_FORMAT); } diff --git a/gif.h b/gif.h index ff9bf02..d8cc227 100644 --- a/gif.h +++ b/gif.h @@ -23,7 +23,7 @@ #define __GIF_H__ int fh_gif_id(const char *name); -int fh_gif_load(const char *name,unsigned char *buffer,int x,int y); -int fh_gif_getsize(const char *name,int *x,int *y, int wanted_width, int wanted_height); +int fh_gif_load(const char *name,char *buffer,int x,int y); +int fh_gif_getsize(char *name,int *x,int *y, int wanted_width, int wanted_height); #endif diff --git a/gifdecomp.c b/gifdecomp.c index 4e81e18..86507fb 100644 --- a/gifdecomp.c +++ b/gifdecomp.c @@ -28,13 +28,29 @@ #include "gif_lib.h" #include "gifdecomp.h" +#ifndef TRUE +#define TRUE 1 +#endif /* TRUE */ +#ifndef FALSE +#define FALSE 0 +#endif /* FALSE */ + #define PROGRAM_NAME "GifDecomp" #define GIF_ASM_NAME "Tuxwetter" #define COMMENT_GIF_ASM "New-Tuxwetter-Team" #define SQR(x) ((x) * (x)) +#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg) +#define GIF_EXIT(Msg) { GIF_MESSAGE(Msg); exit(-3); } + +#define printfe(format, ...) \ + (fprintf(stderr, format "\n", ## __VA_ARGS__), fflush(stderr)) + +#define printfef(format, ...) \ + printfe("%s " format, __func__, ## __VA_ARGS__) + static int - ImageNum = 0, +// ImageNum = 0, InterlacedFlag = FALSE, InterlacedOffset[] = { 0, 4, 2, 1 }, /* The way Interlaced image should. */ InterlacedJumps[] = { 8, 8, 4, 2 }; /* be read - offsets and jumps... */ @@ -50,7 +66,7 @@ void xremove(char *fname); ******************************************************************************/ int gifdecomp(char *InFileName, char *OutFileName) { -int i; +int i, err = 0; GifRowType *ImageBuffer; char TempGifName[80]; @@ -70,30 +86,30 @@ int i; /* Open input file: */ if (InFileName != NULL) { - if ((GifFileIn = DGifOpenFileName(InFileName)) == NULL) - QuitGifError(GifFileIn, GifFileOut); + if ((GifFileIn = DGifOpenFileName(InFileName, &err)) == NULL) + QuitGifError(GifFileIn, GifFileOut, err); } - if ((GifFileIn = DGifOpenFileName(InFileName)) != NULL) + if ((GifFileIn = DGifOpenFileName(InFileName, &err)) != NULL) { - if ((GifFileOut = EGifOpenFileName(TempGifName, TRUE)) == NULL) - QuitGifError(GifFileIn, GifFileOut); + if ((GifFileOut = EGifOpenFileName(TempGifName, TRUE, &err)) == NULL) + QuitGifError(GifFileIn, GifFileOut, err); if (EGifPutScreenDesc(GifFileOut, GifFileIn->SWidth, GifFileIn->SHeight, GifFileIn->SColorResolution, GifFileIn->SBackGroundColor, GifFileIn->SColorMap) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* Scan the content of the GIF file and load the image(s) in: */ do { if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); switch (RecordType) { case IMAGE_DESC_RECORD_TYPE: if (DGifGetImageDesc(GifFileIn) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* Put the image descriptor to out file: */ if (EGifPutImageDesc(GifFileOut, @@ -101,27 +117,27 @@ int i; GifFileIn->Image.Width, GifFileIn->Image.Height, InterlacedFlag, GifFileIn->Image.ColorMap) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* Load the image (either Interlaced or not), and dump it as */ /* defined in GifFileOut->Image.Interlaced. */ if (LoadImage(GifFileIn, &ImageBuffer) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); if (DumpImage(GifFileOut, ImageBuffer) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); break; case EXTENSION_RECORD_TYPE: /* Skip any extension blocks in file: */ if (DGifGetExtension(GifFileIn, &ExtCode, &Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); if (EGifPutExtension(GifFileOut, ExtCode, Extension[0], Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* No support to more than one extension blocks, so discard: */ while (Extension != NULL) { if (DGifGetExtensionNext(GifFileIn, &Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); } break; case TERMINATE_RECORD_TYPE: @@ -132,20 +148,20 @@ int i; } while (RecordType != TERMINATE_RECORD_TYPE); - if (DGifCloseFile(GifFileIn) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); - if (EGifCloseFile(GifFileOut) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + if (DGifCloseFile(GifFileIn, &err) == GIF_ERROR) + QuitGifError(GifFileIn, GifFileOut, err); + if (EGifCloseFile(GifFileOut, &err) == GIF_ERROR) + QuitGifError(GifFileIn, GifFileOut, err); - if ((GifFileIn = DGifOpenFileName(TempGifName)) == NULL) - QuitGifError(GifFileIn, GifFileOut); + if ((GifFileIn = DGifOpenFileName(TempGifName, &err)) == NULL) + QuitGifError(GifFileIn, GifFileOut, err); /* Scan the content of GIF file and dump image(s) to seperate file(s): */ do { sprintf(CrntFileName, "%s%02d.gif", OutFileName, FileNum++); - if ((GifFileOut = EGifOpenFileName(CrntFileName, TRUE)) == NULL) - QuitGifError(GifFileIn, GifFileOut); + if ((GifFileOut = EGifOpenFileName(CrntFileName, TRUE, &err)) == NULL) + QuitGifError(GifFileIn, GifFileOut, err); FileEmpty = TRUE; /* And dump out its exactly same screen information: */ @@ -153,50 +169,50 @@ int i; GifFileIn->SWidth, GifFileIn->SHeight, GifFileIn->SColorResolution, GifFileIn->SBackGroundColor, GifFileIn->SColorMap) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); do { if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); switch (RecordType) { case IMAGE_DESC_RECORD_TYPE: FileEmpty = FALSE; if (DGifGetImageDesc(GifFileIn) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* Put same image descriptor to out file: */ if (EGifPutImageDesc(GifFileOut, GifFileIn->Image.Left, GifFileIn->Image.Top, GifFileIn->Image.Width, GifFileIn->Image.Height, GifFileIn->Image.Interlace, GifFileIn->Image.ColorMap) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* Now read image itself in decoded form as we dont */ /* really care what is there, and this is much faster. */ if (DGifGetCode(GifFileIn, &CodeSize, &CodeBlock) == GIF_ERROR || EGifPutCode(GifFileOut, CodeSize, CodeBlock) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); while (CodeBlock != NULL) if (DGifGetCodeNext(GifFileIn, &CodeBlock) == GIF_ERROR || EGifPutCodeNext(GifFileOut, CodeBlock) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); break; case EXTENSION_RECORD_TYPE: FileEmpty = FALSE; /* Skip any extension blocks in file: */ if (DGifGetExtension(GifFileIn, &ExtCode, &Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); if (EGifPutExtension(GifFileOut, ExtCode, Extension[0], Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); /* No support to more than one extension blocks, discard.*/ while (Extension != NULL) if (DGifGetExtensionNext(GifFileIn, &Extension) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + QuitGifError(GifFileIn, GifFileOut, err); break; case TERMINATE_RECORD_TYPE: break; @@ -207,8 +223,8 @@ int i; while (RecordType != IMAGE_DESC_RECORD_TYPE && RecordType != TERMINATE_RECORD_TYPE); - if (EGifCloseFile(GifFileOut) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + if (EGifCloseFile(GifFileOut, &err) == GIF_ERROR) + QuitGifError(GifFileIn, GifFileOut, err); if (FileEmpty) { /* Might happen on last file - delete it if so: */ unlink(CrntFileName); @@ -216,8 +232,8 @@ int i; } while (RecordType != TERMINATE_RECORD_TYPE); - if (DGifCloseFile(GifFileIn) == GIF_ERROR) - QuitGifError(GifFileIn, GifFileOut); + if (DGifCloseFile(GifFileIn, &err) == GIF_ERROR) + QuitGifError(GifFileIn, GifFileOut, err); FileNum=FileNum-1; } return FileNum; @@ -226,18 +242,22 @@ return FileNum; /****************************************************************************** * Close both input and output file (if open), and exit. * ******************************************************************************/ -void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut) +void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut, int ErrorCode) { - PrintGifError(); - if (GifFileIn != NULL) DGifCloseFile(GifFileIn); - if (GifFileOut != NULL) EGifCloseFile(GifFileOut); + const char *errstr = NULL; +// PrintGifError(); + errstr = GifErrorString(ErrorCode); + printfef("Failed to open file: %d (%s)", ErrorCode, errstr); + + if (GifFileIn != NULL) DGifCloseFile(GifFileIn, &ErrorCode); + if (GifFileOut != NULL) EGifCloseFile(GifFileOut, &ErrorCode); // exit(EXIT_FAILURE); } int LoadImage(GifFileType *GifFile, GifRowType **ImageBufferPtr) { - int Size, i, j, Count; + int Size, i, j/*, Count*/; GifRowType *ImageBuffer; /* Allocate the image as vector of column of rows. We cannt allocate */ @@ -256,12 +276,13 @@ int LoadImage(GifFileType *GifFile, GifRowType **ImageBufferPtr) *ImageBufferPtr = ImageBuffer; - GifQprintf("\n%s: Image %d at (%d, %d) [%dx%d]: ", +/* GifQprintf("\n%s: Image %d at (%d, %d) [%dx%d]: ", PROGRAM_NAME, ++ImageNum, GifFile->Image.Left, GifFile->Image.Top, GifFile->Image.Width, GifFile->Image.Height); +*/ if (GifFile->Image.Interlace) { /* Need to perform 4 passes on the images: */ - for (Count = i = 0; i < 4; i++) + for (/*Count =*/ i = 0; i < 4; i++) for (j = InterlacedOffset[i]; j < GifFile->Image.Height; j += InterlacedJumps[i]) { // GifQprintf("\b\b\b\b%-4d", Count++); @@ -288,11 +309,11 @@ int LoadImage(GifFileType *GifFile, GifRowType **ImageBufferPtr) ******************************************************************************/ int DumpImage(GifFileType *GifFile, GifRowType *ImageBuffer) { - int i, j, Count; + int i, j/*, Count*/; if (GifFile->Image.Interlace) { /* Need to perform 4 passes on the images: */ - for (Count = GifFile->Image.Height, i = 0; i < 4; i++) + for (/*Count = GifFile->Image.Height,*/ i = 0; i < 4; i++) for (j = InterlacedOffset[i]; j < GifFile->Image.Height; j += InterlacedJumps[i]) { // GifQprintf("\b\b\b\b%-4d", Count--); @@ -301,7 +322,7 @@ int DumpImage(GifFileType *GifFile, GifRowType *ImageBuffer) } } else { - for (Count = GifFile->Image.Height, i = 0; i < GifFile->Image.Height; i++) { + for (/*Count = GifFile->Image.Height,*/ i = 0; i < GifFile->Image.Height; i++) { // GifQprintf("\b\b\b\b%-4d", Count--); if (EGifPutLine(GifFile, ImageBuffer[i], GifFile->Image.Width) == GIF_ERROR) return GIF_ERROR; diff --git a/gifdecomp.h b/gifdecomp.h index edc4262..b327284 100644 --- a/gifdecomp.h +++ b/gifdecomp.h @@ -26,6 +26,6 @@ #define __GIFDECOMP_H__ int gifdecomp(char *InFileName, char *OutFileName); -void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut); +void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut, int ErrorCode); #endif diff --git a/globals.h b/globals.h deleted file mode 100644 index 6e18b35..0000000 --- a/globals.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef __GLOBALS_H__ -#define __GLOBALS_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef HAVE_DREAMBOX_HARDWARE -#include -#endif -#include -#include -#include -#include -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H -#include "text.h" -#include "io.h" -#include "gfx.h" - -#define P_VERSION "1.36" -#define MAX_ENTRYS 32 -#define CK_INTERVALL 30 -#define STATFILE "/var/etc/logcsd.stat" -#define SCKFILE "/tmp/logcsd.socket" -#define PIDFILE "/tmp/logcsd.pid" -#define ECMFILE "/tmp/ecm.info" - -#define RC_0 0x00 -#define RC_1 0x01 -#define RC_2 0x02 -#define RC_3 0x03 -#define RC_4 0x04 -#define RC_5 0x05 -#define RC_6 0x06 -#define RC_7 0x07 -#define RC_8 0x08 -#define RC_9 0x09 -#define RC_RIGHT 0x0A -#define RC_LEFT 0x0B -#define RC_UP 0x0C -#define RC_DOWN 0x0D -#define RC_OK 0x0E -#define RC_MUTE 0x0F -#define RC_STANDBY 0x10 -#define RC_GREEN 0x11 -#define RC_YELLOW 0x12 -#define RC_RED 0x13 -#define RC_BLUE 0x14 -#define RC_PLUS 0x15 -#define RC_MINUS 0x16 -#define RC_HELP 0x17 -#define RC_DBOX 0x18 -#define RC_HOME 0x1F - -FILE *fd_pid; -int pid; - -typedef struct {unsigned char used; - unsigned char user[32]; - unsigned char pwd[32]; - unsigned char ip[16]; - int newip; - int connection; - int cmd; - char prov[12]; - char serv[5]; - int cok; - int active; - time_t ltime; - time_t atime; - time_t stime; - time_t ctime; - double rtime; - } ENTRY, *PENTRY; - -typedef struct {ENTRY entrys[MAX_ENTRYS]; - } LOG; - -extern unsigned char FONT[64]; -extern char camdversion[16]; -extern char dversion[16]; - -enum {LEFT, CENTER, RIGHT}; -enum {SMALL, MED, BIG}; - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_Image_Desc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -//devs - -int fb, rc; - -//framebuffer stuff - -enum {FILL, GRID}; -enum {EMPTY, CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH, WHITE, BLUE0, TRANSP, BLUE2, ORANGE, GREEN, YELLOW, RED}; - -extern unsigned char *lfb, *lbb; -extern unsigned char *proxyadress, *proxyuserpwd; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -//int startx, starty, sx, ex, sy, ey; - -#define FB_DEVICE "/dev/fb/0" - -#define MAXSLOTS 4 - -#endif diff --git a/http.c b/http.c index a333489..0202f6a 100644 --- a/http.c +++ b/http.c @@ -72,6 +72,7 @@ int HTTP_downloadFile(char *URL, char *downloadTarget, int showprogress, int tmo } --i; } + headerfile = fopen(downloadTarget, "w"); if (!headerfile) return res; @@ -94,7 +95,7 @@ int HTTP_downloadFile(char *URL, char *downloadTarget, int showprogress, int tmo i=0; while(fgets(tstr, strlen(URL), netfile) && !i) { - if((pt3=strstr(tstr,"address"))!=NULL) + if((pt3=strstr(tstr,"address"))!=NULL && (tstr[0]!='#')) { strcpy(myself,pt3+8); myself[strlen(myself)-1]=0; @@ -112,14 +113,17 @@ int HTTP_downloadFile(char *URL, char *downloadTarget, int showprogress, int tmo } } } + */ speed=tmo; while(res && repeats--) { curl_easy_setopt(curl, CURLOPT_URL, surl); curl_easy_setopt(curl, CURLOPT_FILE, headerfile); +#if 0 curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, show_progress); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, show_progress); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, (showprogress)?0:1); +#endif // curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_easy_setopt(curl, CURLOPT_USERAGENT, "neutrino/httpdownloader"); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, (ctimo)?ctimo:(30+tmo*45)); @@ -133,7 +137,7 @@ int HTTP_downloadFile(char *URL, char *downloadTarget, int showprogress, int tmo } else { - curl_easy_setopt(curl, CURLOPT_PROXY, 0); + curl_easy_setopt(curl, CURLOPT_PROXY, NULL); } if(proxyuserpwd && strstr(URL,"//127.0.0.1/")==NULL && strstr(URL,"//localhost/")==NULL) { diff --git a/io.c b/io.c index e9ac70f..173c929 100644 --- a/io.c +++ b/io.c @@ -30,7 +30,7 @@ int InitRC(void) rc = open(RC_DEVICE, O_RDONLY); if(rc == -1) { - perror("msgbox "); + perror("tuxwetter "); exit(1); } fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); diff --git a/jpeg.c b/jpeg.c index 8d32e75..f41f499 100644 --- a/jpeg.c +++ b/jpeg.c @@ -73,7 +73,7 @@ int fh_jpeg_load(const char *filename,unsigned char *buffer,int x,int y) struct jpeg_decompress_struct *ciptr; struct r_jpeg_error_mgr emgr; unsigned char *bp; - int px,py,c; + int px,/*py,*/c; FILE *fh; JSAMPLE *lb; @@ -107,7 +107,8 @@ int fh_jpeg_load(const char *filename,unsigned char *buffer,int x,int y) jpeg_start_decompress(ciptr); - px=ciptr->output_width; py=ciptr->output_height; + px=ciptr->output_width; + /*py=ciptr->output_height;*/ c=ciptr->output_components; @@ -137,7 +138,7 @@ int fh_jpeg_getsize(const char *filename,int *x,int *y, int wanted_width, int wa struct jpeg_decompress_struct *ciptr; struct r_jpeg_error_mgr emgr; - int px,py,c; + int px,py/*,c*/; FILE *fh; ciptr=&cinfo; @@ -173,7 +174,7 @@ int fh_jpeg_getsize(const char *filename,int *x,int *y, int wanted_width, int wa jpeg_start_decompress(ciptr); px=ciptr->output_width; py=ciptr->output_height; - c=ciptr->output_components; + /*c=ciptr->output_components;*/ *x=px; *y=py; // jpeg_finish_decompress(ciptr); jpeg_destroy_decompress(ciptr); diff --git a/parser.c b/parser.c index b05b3c0..82b64b1 100644 --- a/parser.c +++ b/parser.c @@ -4,11 +4,11 @@ ********************************************************************************************* */ //getline needed #define _GNU_SOURCE -#define _GNU_SOURCE -#include +//#define _GNU_SOURCE +//#include #include -#include +//#include #include "tuxwetter.h" #include "parser.h" #include "http.h" @@ -27,6 +27,7 @@ char data [MAXITEM][MAXMEM]; char conveng [500][40]; char convger [500][40]; int prev_count = 0; +int days_count = 0; char null[2]= {0,0}; int ptc= 0; int t_actday= 0; @@ -34,10 +35,11 @@ int t_actmonth= 0; int t_actyear= 0; const char mnames[12][10]={"Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"}; char prstrans[512]; +extern int num_of_days; //**************************************** Preview Counter ******************************** -extern char CONVERT_LIST[]; +extern const char CONVERT_LIST[]; extern void TrimString(char *strg); void prs_check_missing(char *entry) @@ -71,7 +73,7 @@ FILE *fh; } } -char *prs_translate(char *trans, char *tfile) +char *prs_translate(char *trans, const char *tfile) { char *sptr; int i,found=0; @@ -112,6 +114,11 @@ int prs_get_prev_count (void) return prev_count; } +int prs_get_days_count(void) +{ + return days_count; +} + int prs_get_day (int i, char *out, int metric) { int ret=1, set=(PRE_DAY+(i*PRE_STEP)), z=0, intdaynum=0, monthtemp=0; @@ -172,6 +179,8 @@ int prs_get_val (int i, int what, int nacht, char *out) int z; strcpy(out,data[(what & ~TRANSLATION)+(i*PRE_STEP)+(nacht*NIGHT_STEP)]); + TrimString(out); + if(what & TRANSLATION) { for(z=0;z<=ptc;z++) @@ -295,7 +304,7 @@ int prs_get_dwday(int i, int what, char *out) //*** XML File *** -int parser(char *citycode, char *trans, int metric, int inet, int ctmo) +int parser(char *citycode, const char *trans, int metric, int inet, int ctmo) { int rec=0, flag=0; int cc=0, bc=1, exit_ind=-1; @@ -318,6 +327,7 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) memset(conveng,0,500*40); memset(convger,0,500*40); prev_count=0; + days_count=0; memset(null,0,2); ptc=0; t_actday=0; @@ -328,7 +338,7 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) exit_ind=system(url); sleep(1); */ - sprintf (url,"http://api.worldweatheronline.com/free/v1/weather.ashx?q=%s&format=xml&num_of_days=5&includeLocation=yes&key=%s",citycode,key); + sprintf (url,"http://api.worldweatheronline.com/free/v1/weather.ashx?q=%s&format=xml&num_of_days=%d&includeLocation=yes&key=%s",citycode,num_of_days,key); exit_ind=HTTP_downloadFile(url, "/tmp/tuxwettr.tmp", 0, inet, ctmo, 3); if(exit_ind != 0) @@ -387,7 +397,8 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) if ((gettemp == '<' || gettemp == ']') && d_flag) { data[bc][cc] = '\0'; - //printf("data[%d] = %s\n",bc,data[bc]); + //printf("data[%d][%d] = %s\n",bc,cc,data[bc]); + if (cc == ACT_UPTIME) days_count++; bc++; cc = 0; rec = 0; @@ -403,9 +414,11 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) exit_ind=1; #else +/* sprintf (url,"http://xoap.weather.com/weather/local/%s?cc=*&dayf=%d&prod=xoap&unit=%c&par=1005530704&key=a9c95f7636ad307b",citycode,previews,(metric)?'m':'u'); + exit_ind=HTTP_downloadFile(url, "/tmp/tuxwettr.tmp", 0, inet, ctmo, 3); +*/ sprintf (url,"wget -q -O /tmp/tuxwettr.tmp http://xoap.weather.com/weather/local/%s?unit=%c\\&dayf=%d\\&cc=*\\&prod=xoap\\&link=xoap\\&par=%s\\&key=%s",citycode,(metric)?'m':'u',previews,par,key); exit_ind=system(url); - sleep(1); if(exit_ind != 0) { @@ -458,34 +471,7 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) { bc++; cc = 0; - int prs_get_dwday(int i, int what, char *out) -{ - int ret=1; - char *wday[] = {"SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","???"}; - - struct tm ts; - - *out=0; - - if(sscanf(data[(what & ~TRANSLATION)+(i*PRE_STEP)],"%d-%d-%d",&t_actyear,&t_actmonth,&t_actday)==3) - { - ts.tm_year = t_actyear - 1900; - ts.tm_mon = t_actmonth - 1; - ts.tm_mday = t_actday; - - ts.tm_hour = 0; - ts.tm_min = 0; - ts.tm_sec = 1; - ts.tm_isdst = -1; - - if ( mktime(&ts) == -1 ) - ts.tm_wday = 7; - - sprintf(out,"%s", wday[ts.tm_wday]); - ret=0; - } - return ret; -} rec = 0; + rec = 0; flag=1; prev_count++; } @@ -522,6 +508,7 @@ int parser(char *citycode, char *trans, int metric, int inet, int ctmo) exit_ind=1; #endif + //*** Übersetzungs File *** if ((wxfile = fopen(trans,"r"))==NULL) diff --git a/parser.h b/parser.h index 64a1753..74f1583 100644 --- a/parser.h +++ b/parser.h @@ -1,58 +1,86 @@ +/* + * $Id: parser.h,v 1.1 2009/12/19 19:42:49 rhabarber1848 Exp $ + * + * tuxwetter - d-box2 linux project + * + * 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * +*/ + +#ifndef __wxparser__ +#define __wxparser__ #include #include #include +#include - -#ifndef __wxparser__ -#define __wxparser__ - +//#define WWEATHER +#define MISS_FILE "/var/plugins/tuxwet/missing_translations.txt" #define TRANSLATION 0x8000 #ifdef WWEATHER -# define NA 0 -# define PRE_STEP 14 -# define NIGHT_STEP 13 +# define NA 0 +# define PRE_STEP 14 +# define NIGHT_STEP 13 - // atual Values -# define ACT_CITY 2 -# define ACT_OBST 3 -# define ACT_LAT 6 -# define ACT_LON 7 -# define ACT_UPTIME 10 -# define ACT_TEMP 11 -# define ACT_ICON 14 -# define ACT_COND 15 | TRANSLATION -# define ACT_WSPEED 17 -# define ACT_WINDD 19 | TRANSLATION -# define ACT_PRECIPMM 20 -# define ACT_HMID 21 -# define ACT_VIS 22 -# define ACT_PRESS 23 -# define ACT_CLOUDC 24 -# define ACT_SUNR NA -# define ACT_SUNS NA -# define ACT_FTEMP NA -# define ACT_PRTEND NA -# define ACT_UVIND NA -# define ACT_UVTEXT NA -# define ACT_DEWP NA -# define ACT_MOON NA +// atual Values +# define ACT_CITY 3 +# define ACT_LAT 6 +# define ACT_LON 7 +# define ACT_SUNR NA +# define ACT_SUNS NA +# define ACT_UPTIME 10 +# define ACT_OBST NA +# define ACT_TEMPC 11 +# define ACT_TEMPF 12 +# define ACT_FTEMPC NA +# define ACT_FTEMPF NA +# define ACT_ICON 14 +# define ACT_COND 15 | TRANSLATION +# define ACT_PRESS 23 +# define ACT_PRTEND NA +# define ACT_WSPEEDM 16 +# define ACT_WSPEEDK 17 +# define ACT_WINDD 19 | TRANSLATION +# define ACT_HMID 21 +# define ACT_VIS 22 +# define ACT_UVIND NA +# define ACT_UVTEXT NA +# define ACT_DEWP NA +# define ACT_MOON NA +# define ACT_CLOUDC 24 +# define ACT_PRECIPMM 20 - // Preview Values -# define PRE_DAY 25 -# define PRE_TEMPH 26 -# define PRE_TEMPL 28 -# define PRE_WSPEED 31 -# define PRE_WINDD 32 | TRANSLATION -# define PRE_ICON 36 -# define PRE_COND 37 | TRANSLATION -# define PRE_PRECIPMM 38 -# define PRE_SUNR NA -# define PRE_SUNS NA -# define PRE_BT NA -# define PRE_PPCP NA -# define PRE_HMID NA +// Preview Values +# define PRE_DAY 25 +# define PRE_TEMPHC 26 +# define PRE_TEMPHF 27 +# define PRE_TEMPLC 28 +# define PRE_TEMPLF 29 +# define PRE_SUNR NA +# define PRE_SUNS NA +# define PRE_ICON 36 +# define PRE_COND 37 | TRANSLATION +# define PRE_WSPEEDM 30 +# define PRE_WSPEEDK 31 +# define PRE_WINDD 32 | TRANSLATION +# define PRE_BT NA +# define PRE_PPCP NA +# define PRE_HMID NA +# define PRE_PRECIPMM 38 #else # define PRE_STEP 32 # define NIGHT_STEP 13 @@ -66,13 +94,16 @@ # define ACT_SUNS 21 # define ACT_UPTIME 25 # define ACT_OBST 26 -# define ACT_TEMP 27 -# define ACT_FTEMP 28 +# define ACT_TEMPC 27 +# define ACT_TEMPF 28 +# define ACT_FTEMPC NA +# define ACT_FTEMPF NA # define ACT_COND 29 | TRANSLATION # define ACT_ICON 30 # define ACT_PRESS 32 # define ACT_PRTEND 33 | TRANSLATION -# define ACT_WSPEED 36 +# define ACT_WSPEEDM NA +# define ACT_WSPEEDK 36 # define ACT_WINDD 39 | TRANSLATION # define ACT_HMID 41 # define ACT_VIS 42 | TRANSLATION @@ -89,14 +120,15 @@ # define PRE_SUNS 59 # define PRE_ICON 61 # define PRE_COND 62 | TRANSLATION -# define PRE_WSPEED 64 +# define PRE_WSPEEDM NA +# define PRE_WSPEEDK 64 # define PRE_WINDD 67 | TRANSLATION # define PRE_BT 69 # define PRE_PPCP 70 # define PRE_HMID 71 #endif -int parser (char *,char *, int, int, int); +int parser (char *,const char *, int, int, int); int prs_get_prev_count (void); /*void prs_get_act_int (int what, char *out); void prs_get_act_loc (int what, char *out); @@ -105,12 +137,13 @@ void prs_get_act_time(int what, char *out); void prs_get_act_dtime(int what, char *out); */ int prs_get_day (int, char *, int); +int prs_get_days_count(void); int prs_get_val (int i, int what, int nacht, char *out); int prs_get_dbl (int i, int what, int nacht, char *out); int prs_get_time(int i, int what, char *out, int metric); int prs_get_dtime(int i, int what, char *out, int metric); int prs_get_dwday(int i, int what, char *out); -char *prs_translate(char *trans, char *tfile); +char *prs_translate(char *trans, const char *tfile); #endif // __wxparser__ diff --git a/php.c b/php.c index a5649f4..1da5008 100644 --- a/php.c +++ b/php.c @@ -14,6 +14,10 @@ int fh_php_trans(const char *name, int sx, int sy, int dy, int cs, int line, int { char tstr[BUFSIZE],rstr[BUFSIZE],*tptr,*xptr,cc,br3flag=0; int loop=1, j, first, aline=0, fx=sx, fy=sy, slen, deg=0; + +int wxw=ex-sx-((preset)?120:30); //box width +int wyw=ey-sy-((preset)?60:40); //box height + FILE *fh; if(!(fh=fopen(name,"rb"))) return(FH_ERROR_FILE); @@ -21,7 +25,7 @@ FILE *fh; first=(line==0); *x=0; *y=0; - sy+=dy; +// sy+=dy; while((loop>0) && (fgets(tstr, sizeof(tstr), fh))) { tptr=tstr+strlen(tstr); @@ -60,7 +64,14 @@ FILE *fh; } else { - if((*(tptr+1)!='#') && (strstr(tptr,"uml;")!=(tptr+2)) && (strstr(tptr,"nbsp;")!=(tptr+1)) && (strstr(tptr,"gt;")!=(tptr+1)) && (strstr(tptr,"lt;")!=(tptr+1)) && (strstr(tptr,"quot;")!=(tptr+1)) && (strstr(tptr,"zlig;")!=(tptr+2))) + if ((*(tptr+1)!='#') && + (strstr(tptr,"uml;") != (tptr+2)) && + (strstr(tptr,"nbsp;")!= (tptr+1)) && + (strstr(tptr,"gt;") != (tptr+1)) && + (strstr(tptr,"lt;") != (tptr+1)) && + (strstr(tptr,"amp;") != (tptr+1)) && + (strstr(tptr,"quot;")!= (tptr+1)) && + (strstr(tptr,"zlig;")!= (tptr+2))) { rstr[j++]=*tptr++; } @@ -70,7 +81,14 @@ FILE *fh; cc=' '; switch (*tptr) { - case 'a': cc='ä'; break; + case 'a': + if (strncmp(tptr,"amp;",4)==0) { + cc='&'; + } + else { + cc='ä'; + } + break; case 'A': cc='Ä'; break; case 'o': cc='ö'; break; case 'O': cc='Ö'; break; @@ -105,18 +123,18 @@ FILE *fh; } } } - if((loop>0) && (sy<(fy+420))) + if((loop>0) && (sy<(fy+wyw/*420*/))) { rstr[j]=0; if(plot) { if(!br3flag) { - RenderString(rstr, sx, sy, 619, LEFT, cs, (first && highlite)?GREEN:CMCT); + RenderString(rstr, sx, sy, wxw/*619*/, LEFT, cs, (first && highlite)?GREEN:CMCT); } else { - RenderString(rstr, sx, fx+250, 619, CENTER, FSIZE_BIG, CMCT); + RenderString(rstr, sx, fx+250, wxw/*619*/, CENTER, FSIZE_BIG, CMCT); } if(strlen(rstr)) { @@ -140,14 +158,15 @@ FILE *fh; } if(plot) { - *cut=(sy>=(fy+420)); + int ssy = ((preset)?80:25); + *cut=(sy>=(fy+wyw/*420*/)); if(line) { - RenderString("<<", fx, fy, sx, LEFT, FSIZE_MED, CMHT); + RenderString("<<", ssy, fy, sx, LEFT, FSIZE_MED, CMHT); } if(*cut) { - RenderString(">>", fx, sy, sx, LEFT, FSIZE_MED, CMHT); + RenderString(">>", ssy, sy-dy, sx, LEFT, FSIZE_MED, CMHT); } } } diff --git a/pngw.h b/pngw.h index 4137d99..60dac18 100644 --- a/pngw.h +++ b/pngw.h @@ -22,7 +22,7 @@ #ifndef __PNGW_H__ #define __PNGW_H__ -int fh_png_load(const char *filename,unsigned char *buffer,int x,int y); -int fh_png_getsize(const char *filename,int *x,int *y, int wanted_width, int wanted_height); +int fh_png_load(const char *filename, unsigned char *buffer, int x, int y); +int fh_png_getsize(const char *filename, int *x, int *y, int wanted_width, int wanted_height); #endif diff --git a/text.c b/text.c index 7c9ddcb..2fa3f5a 100644 --- a/text.c +++ b/text.c @@ -145,7 +145,7 @@ int stringlen = 0; else { found=0; - for(i=0; i maxwidth */ @@ -339,7 +368,7 @@ char rc,*rptr=src,*tptr=src; ++rptr; rc=*rptr; found=0; - for(i=0; i /dev/null"); + } if((fh=fopen(INST_FILE,"w"))!=NULL) { fputc(pval,fh); fclose(fh); } - if(pval==1) +/* if(pval==1) { if((fh=fopen(LCDL_FILE,"w"))!=NULL) { @@ -179,18 +185,31 @@ FILE *fh; fclose(fh); } } - } +*/ } else { remove(INST_FILE); - remove(LCDL_FILE); + system("pzapit -unlockrc > /dev/null"); +// remove(LCDL_FILE); } } static void quit_signal(int sig) { + char *txt=NULL; + switch (sig) + { + case SIGINT: txt=strdup("SIGINT"); break; + case SIGTERM: txt=strdup("SIGTERM"); break; + case SIGQUIT: txt=strdup("SIGQUIT"); break; + case SIGSEGV: txt=strdup("SIGSEGV"); break; + default: + txt=strdup("UNKNOWN"); break; + } + + printf("Tuxwetter Version %s%s killed, signal %s(%d)\n", P_VERSION, S_VERSION, txt, sig); put_instance(get_instance()-1); - printf("tuxwetter Version %s killed\n",P_VERSION); + free(txt); exit(1); } @@ -241,7 +260,7 @@ int rv=-1,styp=0; rv=-1; } } -// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); + //printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); } fclose(nfh); } @@ -299,11 +318,11 @@ int ReadConf(char *iscmd) } if(strstr(line_buffer,"ProxyAdressPort") == line_buffer) { - proxyadress=strdup(cptr+1); + proxyadress=(unsigned char*)strdup(cptr+1); } if(strstr(line_buffer,"ProxyUserPwd") == line_buffer) { - proxyuserpwd=strdup(cptr+1); + proxyuserpwd=(unsigned char*)strdup(cptr+1); } if(strstr(line_buffer,"ConnectTimeout") == line_buffer) { @@ -317,11 +336,22 @@ int ReadConf(char *iscmd) { sscanf(cptr+1,"%d",&loadalways); } + if(strstr(line_buffer,"7-Days") == line_buffer) + { + int dtmp=0; + sscanf(cptr+1,"%d",&dtmp); + if (dtmp == 1) + num_of_days=7; + } +#ifdef WWEATHER + if(strstr(line_buffer,"API-Key") == line_buffer) +#else if(strstr(line_buffer,"PartnerID") == line_buffer) { strncpy(par,cptr+1,sizeof(par)-1); } - if(strstr(line_buffer,"LicenseKey") == line_buffer) + if(strstr(line_buffer,"licenseKey") == line_buffer) +#endif { strncpy(key,cptr+1,sizeof(key)-1); } @@ -336,18 +366,6 @@ int ReadConf(char *iscmd) intype=2; } } - -/* if(strstr(line_buffer,"FONT=") == line_buffer) - { - strcpy(FONT,strchr(line_buffer,'=')+1); - } - if(strstr(line_buffer,"FONTSIZE=") == line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&FSIZE_MED); - FSIZE_FSIZE_BIG=(FSIZE_MED*4)/3; - FSIZE_SMALL=(FSIZE_MED*4)/5; - } -*/ } } if(fd_conf) @@ -357,13 +375,12 @@ int ReadConf(char *iscmd) int Transform_Entry(char *src, char *trg) { -int type=0,tret=-1,fcnt,fpos,tval,ferr,tsub; +int tret=-1,fcnt,fpos,tval,ferr,tsub; int noprint,rndval,loctime=0; char /*pstr[512],nstr[512],dstr[50],*/fstr[5],*cptr,*tptr,*aptr; time_t stime; struct tm *tltime; - type=0; tsub=0; *trg=0; if((cptr=strchr(src,','))==NULL) @@ -422,8 +439,7 @@ struct tm *tltime; { tltime=gmtime(&stime); } -// strncpy(nstr,src,cptr-src); -// ++cptr; + fpos=0; ferr=0; tval=0; @@ -806,10 +822,12 @@ char *lcptr = NULL, *lcstr= NULL, *lcdptr = NULL; case KEY_VOLUMEUP: ++m->act_entry; break; - case KEY_PAGEUP : m->act_entry-=10; + case KEY_LEFT: + case KEY_PAGEUP: m->act_entry-=10; break; - case KEY_PAGEDOWN : m->act_entry+=10; + case KEY_RIGHT: + case KEY_PAGEDOWN: m->act_entry+=10; break; case KEY_OK: @@ -834,7 +852,7 @@ char *lcptr = NULL, *lcstr= NULL, *lcdptr = NULL; mloop=0; break; - case KEY_SETUP: + case KEY_MENU: rv=-98; mloop=0; break; @@ -1067,11 +1085,13 @@ FILE *fh; void ShowInfo(MENU *m) { - int scrollbar_len, scrollbar_ofs, scrollbar_cor, loop; - int index=m->act_entry,tind=m->act_entry, sbw=(m->num_entrys>10)?14:0; + double scrollbar_len, scrollbar_ofs, scrollbar_cor; + int loop, index=m->act_entry,tind=m->act_entry, sbw=(m->num_entrys > LIST_STEP)?14:0; char tstr[BUFSIZE], *tptr; - int moffs=35, ixw=400, iyw=(m->num_entrys<10)?((m->num_entrys+1)*30+moffs):375, dy, my, mh=iyw-moffs-radius-8, toffs, soffs=4, isx, isy; - dy=(m->num_entrys<10)?30:(mh/11); + int moffs=35, roffs=8, ixw=400, iyw=(m->num_entrys < LIST_STEP)?((m->num_entrys+1)*30+moffs):375, dy, my, mh, toffs, soffs=4, isx, isy; + + mh=iyw-moffs-roffs-(radius?4:0); + dy=(m->num_entrys < LIST_STEP)?30:(mh/(LIST_STEP+1)); toffs=dy/2; my=moffs+dy+toffs; @@ -1084,7 +1104,7 @@ void ShowInfo(MENU *m) // RenderBox(0, 0, ixw, iyw, GRID, CMCS); // titlebar - RenderBox(isx+2, isy+2, ixw-2, moffs+5, radius, CMH); + RenderBox(isx+2, isy-2, ixw-2, moffs+roffs, radius, CMH); //selectbar RenderBox(isx+2, isy+moffs+toffs+soffs+(index%10)*dy+2, ixw-sbw-2, dy+2, radius, CMCS); @@ -1093,12 +1113,12 @@ void ShowInfo(MENU *m) if(sbw) { //sliderframe - RenderBox(isx+ixw-sbw, isy+moffs+8, sbw, mh, radius, CMCP1); + RenderBox(isx+ixw-sbw, isy+moffs+roffs, sbw, mh, radius, CMCP1); //slider - scrollbar_len = (double)mh / (double)((m->num_entrys/LIST_STEP+1)*LIST_STEP); - scrollbar_ofs = scrollbar_len*(double)((index/LIST_STEP)*LIST_STEP); + scrollbar_len = (double)(mh-4) / (double)(((m->num_entrys-1)/LIST_STEP+1)*LIST_STEP); + scrollbar_ofs = scrollbar_len*(double)((index/LIST_STEP)*LIST_STEP)+roffs; scrollbar_cor = scrollbar_len*(double)LIST_STEP; - RenderBox(isx+ixw-sbw, isy+moffs + scrollbar_ofs+8, sbw, scrollbar_cor , radius, CMCP3); + RenderBox(isx+ixw-sbw+2, isy+moffs+scrollbar_ofs+2, sbw-4, scrollbar_cor, radius, CMCP3); } // Title text @@ -1131,10 +1151,10 @@ void ShowInfo(MENU *m) case 2: RenderCircle(isx+9,isy+my-15,YELLOW); break; case 3: RenderCircle(isx+9,isy+my-15,BLUE0); break; /* - case 0: PaintIcon("/share/tuxbox/neutrino/icons/rot.raw",9,my-17,1); break; - case 1: PaintIcon("/share/tuxbox/neutrino/icons/gruen.raw",9,my-17,1); break; - case 2: PaintIcon("/share/tuxbox/neutrino/icons/gelb.raw",9,my-17,1); break; - case 3: PaintIcon("/share/tuxbox/neutrino/icons/blau.raw",9,my-17,1); break; + case 0: PaintIcon("/share/tuxbox/neutrino/icons/rot.png" ,isx+25,isy+my-17, 16, 16); break; + case 1: PaintIcon("/share/tuxbox/neutrino/icons/gruen.png",isx+25,isy+my-17, 16, 16); break; + case 2: PaintIcon("/share/tuxbox/neutrino/icons/gelb.png" ,isx+25,isy+my-17, 16, 16); break; + case 3: PaintIcon("/share/tuxbox/neutrino/icons/blau.png" ,isx+25,isy+my-17, 16, 16); break; */ default: sprintf(tstr,"%1d",(loop % 10)-3); @@ -1157,9 +1177,8 @@ static int prs_get_city(void) char *tptr; int cpos; int res; -int len; - len=strlen(menu.list[menu.act_entry]->entry); + int len=strlen(menu.list[menu.act_entry]->entry); if ((tptr=strchr(menu.list[menu.act_entry]->entry,','))!=NULL) { @@ -1180,6 +1199,14 @@ int len; city_code[0]=0; return 1; } + if (num_of_days > prs_get_days_count()) + { + char tstr[64]; + sprintf(tstr,"%d-%s", num_of_days, prs_translate("Tage Vorschau nicht möglich", CONVERT_LIST)); + ShowMessage(tstr, 1); + city_code[0]=0; + return 1; + } } else { @@ -1193,7 +1220,6 @@ int len; void clear_screen(void) { -// for(; sy <= ey; sy++) memset(lbb + sx + var_screeninfo.xres*(sy),TRANSP, ex-sx + 1); memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); } @@ -1208,30 +1234,27 @@ void show_data(int index) #endif char vstr[512],v2str[512],rstr[512],tstr[512],icon[60]; -int vy=70,col1=40,col2=340; +int col1=40, vy=70; +int col2=((preset)?340:300); -int wxw=ex-sx-10; //box width -int wyw=ey-sy; //box height +int wxw=ex-sx-((preset)?120:30); //box width +int wyw=ey-sy-((preset)?50:40); //box height int gys=vy; //table space top int gysf=34; //table space bottom int gxs=40; //table space left -int gxw=((wxw-(gxs*2))/5) * 5; //table width +int gxw=((wxw-(gxs*2))/num_of_days) * num_of_days; //table width int gywf=100; //table footer height int gyw=wyw-vy-gywf-gysf; //table height -int gicw=gxw/5; //table data width -int dy=26; //linespace +int gicw=gxw/num_of_days; //table data width int vxs=0,wsx,wsy; -int tret=0; int prelate=0; int rcd; -int HMED=22; -int slim=0; //using 720x576 +int HMED=((preset)?22:20); +int dy=26; //linespace + time_t atime; struct tm *sltime; -char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; - - if (var_screeninfo.xres < 1280) - slim=1; +char tun[2]="C",sun[5]="km/h",dun[6]="km",pun[5]="mbar",iun[7]="mm", cun[20]; clear_screen(); @@ -1247,7 +1270,7 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; if(index!=1) { RenderBox(wsx, wsy, wxw, wyw, radius, CMC); - RenderBox(wsx+2, wsy+2, wxw-2, 44, radius, CMH); + RenderBox(wsx+2, wsy+2, wxw-4, 44, radius, CMH); } else { @@ -1260,19 +1283,21 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; strcpy(cun,prs_translate("Uhr",CONVERT_LIST)); if(!metric) { - sprintf(tun,"F"); - sprintf(sun,"mph"); - sprintf(dun,"mi"); - sprintf(pun,"in"); - *cun=0; + sprintf(tun,"F"); // Fahrenheit + sprintf(sun,"mph"); // miles per hour + sprintf(dun,"miles"); + sprintf(pun,"mb"); // millibar + sprintf(iun,"inches"); + *cun=0; // Uhrzeit } if(index==-99) { int i; unsigned char grstr[XL+1]={'G'^XX,'r'^XX,'\xFC'^XX,'\xDF'^XX,'e'^XX,' '^XX,'v'^XX,'o'^XX,'m'^XX,' '^XX,'N'^XX,'e'^XX,'w'^XX,'-'^XX,'T'^XX,'u'^XX,'x'^XX,'w'^XX,'e'^XX,'t'^XX,'t'^XX,'e'^XX,'r'^XX,'-'^XX,'T'^XX,'e'^XX,'a'^XX,'m'^XX,'!'^XX,' '^XX,' '^XX,';'^XX,'-'^XX,')'^XX,' '^XX,' '^XX,'w'^XX,'w'^XX,'w'^XX,'.'^XX,'k'^XX,'e'^XX,'y'^XX,'w'^XX,'e'^XX,'l'^XX,'t'^XX,'-'^XX,'b'^XX,'o'^XX,'a'^XX,'r'^XX,'d'^XX,'.'^XX,'c'^XX,'o'^XX,'m'^XX,0}; - sprintf(rstr,"Tuxwetter Version %s",P_VERSION); - RenderString(rstr, 0, 34, wxw, CENTER, FSIZE_BIG, CMHT); + dy = ((preset)?dy:22); + sprintf(rstr,"Tuxwetter Version %s%s",P_VERSION,S_VERSION); + RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT); sprintf(rstr,"%s",prs_translate("Steuertasten in den Menüs",CONVERT_LIST)); RenderString(rstr, 0, vy, wxw, CENTER, HMED, GREEN); @@ -1353,7 +1378,7 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; sprintf(rstr,"%s",prs_translate("nächsten Eintrag anzeigen",CONVERT_LIST)); RenderString(rstr, col2, vy, wxw-col2, LEFT, HMED, CMCT); vy+=dy; -/* + sprintf(rstr,"%s",prs_translate("Links (in Bildanzeige)",CONVERT_LIST)); RenderString(rstr, col1, vy, col2-col1, LEFT, HMED, CMCT); sprintf(rstr,"%s",prs_translate("neu downloaden (für WebCams)",CONVERT_LIST)); @@ -1365,7 +1390,7 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; sprintf(rstr,"%s",prs_translate("Animation wiederholen",CONVERT_LIST)); RenderString(rstr, col2, vy, wxw-col2, LEFT, HMED, CMCT); vy+=dy; -*/ + sprintf(rstr,"%s",prs_translate("Rot (in fehlenden Übersetzungen)",CONVERT_LIST)); RenderString(rstr, col1, vy, col2-col1, LEFT, HMED, CMCT); sprintf(rstr,"%s",prs_translate("Fehlliste löschen",CONVERT_LIST)); @@ -1382,7 +1407,7 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; { grstr[i]^=XX; } - RenderString(grstr, 0, vy, wxw, CENTER, HMED, CMHT); + RenderString((char*)grstr, 0, vy, wxw, CENTER, HMED, CMHT); memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); rcd=GetRCCode(); while((rcd != KEY_OK) && (rcd != KEY_EXIT)) @@ -1403,9 +1428,9 @@ char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20]; RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT); RenderLine(gxs,gys,gxs,gys+gyw+gywf,CMCIT); RenderLine(gxs+1,gys,gxs+1,gys+gyw+gywf,CMCIT); - for(i=0; i<5; i++) + for(i=0; i (ex-xstart)) txsize= (ex-xstart); @@ -2104,9 +2181,7 @@ void scale_pic(unsigned char **buffer, int x1, int y1, int xstart, int ystart, i txstart=txstart+xstart; } } - tempx=*imx; - tempy=*imy; - *buffer=(char*)color_average_resize(*buffer,x1,y1,*imx,*imy); + *buffer=(unsigned char*)color_average_resize(*buffer,x1,y1,*imx,*imy); *dxp=0; *dyp=0; @@ -2124,8 +2199,8 @@ void close_jpg_gif_png(void) // for(; sy <= ey; sy++) memset(lbb + sx + var_screeninfo.xres*(sy),TRANSP, ex-sx + 1); memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres); memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - gmodeon=0; #endif + gmodeon=0; } int wait_image(int repeat, int first) @@ -2304,16 +2379,16 @@ char *buffer=NULL, fname[512]; printf("Tuxwetter \n"); return -1; } - if((buffer=(unsigned char *) malloc(x1*y1*4))==NULL) + if((buffer=(char *) malloc(x1*y1*4))==NULL) { printf(NOMEM); return -1; } if(!(rv=fh_gif_load(fname, buffer, x1, y1))) { - scale_pic(&buffer,x1,y1,xstart,ystart,xsize,ysize,&imx,&imy,&dxp,&dyp,&dxo,&dyo,center); + scale_pic((unsigned char**)&buffer,x1,y1,xstart,ystart,xsize,ysize,&imx,&imy,&dxp,&dyp,&dxo,&dyo,center); fb_set_gmode(1); - fb_display(buffer, imx, imy, dxp, dyp, dxo, dyo, 1, 1); + fb_display((unsigned char*)buffer, imx, imy, dxp, dyp, dxo, dyo, 1, 1); gmodeon=1; if(gifs>1) @@ -2340,7 +2415,7 @@ char *buffer=NULL, fname[512]; else { showBusy(startx+3,starty+3,10,0xff,00,00); -// showBusy(startx+10,starty+10,20,170,0,0); + if(rcg==KEY_EXIT) { rcg=KEY_OK; @@ -2438,18 +2513,16 @@ int show_php(char *name, char *title, int plain, int highlite) { FILE *tfh; int x1,y1,cs,rcp,rv=-1,run=1,line=0,action=1,cut; -int col1,sy=0,dy=26,psx,psy,pxw=/*620*/ex-sx,pyw=/*510*/ey-sy; +int col1,sy=0,dy=26,psx,psy; +int pxw=ex-sx-((preset)?120:30); //box width old 620 +int pyw=ey-sy-((preset)?60:40); //box height old 510 Center_Screen(pxw,pyw,&psx,&psy); - col1=psx+40; + col1=psx+((preset)?60:40); sy=psy+70; if((tfh=fopen(name,"r"))!=NULL) { -/* if(gmodeon) - { - close_jpg_gif_png(); - } -*/ fclose(tfh); + fclose(tfh); RenderString("X", psx+pxw/2, psy+pyw/2, 100, LEFT, FSIZE_SMALL, CMCT); if(fh_php_getsize(name, plain, &x1, &y1)) @@ -2483,7 +2556,12 @@ int col1,sy=0,dy=26,psx,psy,pxw=/*620*/ex-sx,pyw=/*510*/ey-sy; if(!rv) { rcp=GetRCCode(); - while((rcp != KEY_OK) && (rcp != KEY_EXIT) && (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) && (rcp != KEY_DOWN) && (rcp != KEY_UP) && (rcp != KEY_VOLUMEUP) && (rcp != KEY_VOLUMEDOWN)&& (rcp != KEY_RED)) + while ((rcp != KEY_OK) && (rcp != KEY_EXIT) && + (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) && + (rcp != KEY_LEFT) && (rcp != KEY_RIGHT) && + (rcp != KEY_DOWN) && (rcp != KEY_UP) && + (rcp != KEY_VOLUMEUP) && (rcp != KEY_VOLUMEDOWN)&& + (rcp != KEY_RED)) { rcp=GetRCCode(); } @@ -2491,13 +2569,15 @@ int col1,sy=0,dy=26,psx,psy,pxw=/*620*/ex-sx,pyw=/*510*/ey-sy; { rcp=KEY_OK; } - if((rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN)) + if( (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) && + (rcp != KEY_LEFT) && (rcp != KEY_RIGHT) ) { return rcp; } switch(rcp) { case KEY_PAGEDOWN: + case KEY_RIGHT: if((action=cut)!=0) { line+=5; @@ -2505,6 +2585,7 @@ int col1,sy=0,dy=26,psx,psy,pxw=/*620*/ex-sx,pyw=/*510*/ey-sy; break; case KEY_PAGEUP: + case KEY_LEFT: if(line) { if((line-=5)<0) @@ -2806,7 +2887,7 @@ void read_neutrino_osd_conf(int *ex,int *sx,int *ey, int *sy) int main (int argc, char **argv) { -int index=0,cindex=0,tv,rcm,rce,ferr=0,tret=-1; +int index=0,cindex=0,tv,rce,ferr=0,tret=-1; int mainloop=1,wloop=1, dloop=1; char rstr[BUFSIZE], *rptr; char tstr[BUFSIZE]; @@ -2814,229 +2895,229 @@ FILE *tfh; LISTENTRY epl={NULL, 0, TYP_TXTPLAIN, TYP_TXTPLAIN, 0, 0, 0}; PLISTENTRY pl=&epl; - // if problem with config file return from plugin - - for(tv=1; tv\n"); - return -1; + strcpy(TCF_FILE,argv[tv]); } - - if((trstr=malloc(BUFSIZE))==NULL) + if(strchr(argv[tv],'=')) { - printf(NOMEM); - return -1; + cmdline=strdup(argv[tv]); + TrimString(cmdline); + TranslateString(cmdline); } + } + +// system("ping -c 2 google.com &"); + + if((line_buffer=calloc(BUFSIZE+1, sizeof(char)))==NULL) + { + printf(NOMEM); + return -1; + } + if (!ReadConf(cmdline)) + { + printf("Tuxwetter \n"); + return -1; + } - memset(&menu,0,sizeof(MENU)); - memset(&funcs,0,sizeof(MENU)); + if((trstr=malloc(BUFSIZE))==NULL) + { + printf(NOMEM); + return -1; + } + + memset(&menu,0,sizeof(MENU)); + memset(&funcs,0,sizeof(MENU)); /* - if((menu.headertxt=calloc(MAX_MENUTXT, sizeof(char*)))==NULL) - { - printf(NOMEM); - free(line_buffer); - Clear_List(&menu,-1); - return -1; - } + if((menu.headertxt=calloc(MAX_MENUTXT, sizeof(char*)))==NULL) + { + printf(NOMEM); + free(line_buffer); + Clear_List(&menu,-1); + return -1; + } */ /* - if(Clear_List(&menu,1)) - { - printf(NOMEM); - free(line_buffer); - Clear_List(&menu,-1); - return -1; - } + if(Clear_List(&menu,1)) + { + printf(NOMEM); + free(line_buffer); + Clear_List(&menu,-1); + return -1; + } */ - if(!cmdline) - { - if(Check_Config()) - { - printf(" Unable to read tuxwetter.conf\n"); - Clear_List(&menu,-1); - free(line_buffer); - return -1; - } - } - - if((funcs.headertxt=calloc(1, sizeof(char*)))==NULL) + if(!cmdline) + { + if(Check_Config()) { - printf(NOMEM); - free(line_buffer); + printf(" Unable to read tuxwetter.conf\n"); Clear_List(&menu,-1); - Clear_List(&funcs,-1); + free(line_buffer); return -1; } + } - read_neutrino_osd_conf(&ex,&sx,&ey, &sy); - if((ex == -1) || (sx == -1) || (ey == -1) || (sy == -1)){ - sx = 40; - ex = var_screeninfo.xres - 40; - sy = 40; - ey = var_screeninfo.yres - 40; - } - printf("sx=%i, ex =%i, sy=%i, ey=%i\n", sx, ex, sy, ey); + if((funcs.headertxt=calloc(1, sizeof(char*)))==NULL) + { + printf(NOMEM); + free(line_buffer); + Clear_List(&menu,-1); + Clear_List(&funcs,-1); + return -1; + } - for(index=CMCST; index<=CMH; index++) - { - sprintf(rstr,"menu_%s_alpha",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - tr[index]=255-(float)tv*2.55; + read_neutrino_osd_conf(&ex,&sx,&ey, &sy); + if((ex == -1) || (sx == -1) || (ey == -1) || (sy == -1)){ + sx = 40; + ex = var_screeninfo.xres - 40; + sy = 40; + ey = var_screeninfo.yres - 40; + } + //printf("sx=%i, ex =%i, sy=%i, ey=%i \n", sx, ex, sy, ey); - sprintf(rstr,"menu_%s_blue",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - bl[index]=(float)tv*2.55; + for(index=CMCST; index<=CMH; index++) + { + sprintf(rstr,"menu_%s_alpha",menucoltxt[index]); + if((tv=Read_Neutrino_Cfg(rstr))>=0) + tr[index]=255-(float)tv*2.55; - sprintf(rstr,"menu_%s_green",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - gn[index]=(float)tv*2.55; + sprintf(rstr,"menu_%s_blue",menucoltxt[index]); + if((tv=Read_Neutrino_Cfg(rstr))>=0) + bl[index]=(float)tv*2.55; - sprintf(rstr,"menu_%s_red",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - rd[index]=(float)tv*2.55; - } + sprintf(rstr,"menu_%s_green",menucoltxt[index]); + if((tv=Read_Neutrino_Cfg(rstr))>=0) + gn[index]=(float)tv*2.55; - cindex=CMC; - for(index=CMCP0; index<=CMCP3; index++) - { - rd[index]=rd[cindex]+25; - gn[index]=gn[cindex]+25; - bl[index]=bl[cindex]+25; - tr[index]=tr[cindex]; - cindex=index; - } + sprintf(rstr,"menu_%s_red",menucoltxt[index]); + if((tv=Read_Neutrino_Cfg(rstr))>=0) + rd[index]=(float)tv*2.55; + } - if(Read_Neutrino_Cfg("rounded_corners")>0) - radius=10; - else - radius=0; + cindex=CMC; + for(index=CMCP0; index<=CMCP3; index++) + { + rd[index]=rd[cindex]+25; + gn[index]=gn[cindex]+25; + bl[index]=bl[cindex]+25; + tr[index]=tr[cindex]; + cindex=index; + } - fb = open(FB_DEVICE, O_RDWR); - if(fb == -1) - { - perror("tuxwetter "); - exit(1); - } + if(Read_Neutrino_Cfg("rounded_corners")>0) + radius=10; + else + radius=0; - InitRC(); + fb = open(FB_DEVICE, O_RDWR); + if(fb == -1) + { + perror("tuxwetter "); + exit(1); + } - if((trstr=malloc(BUFSIZE))==NULL) - { - printf(NOMEM); - return -1; - } + InitRC(); + + if((trstr=malloc(BUFSIZE))==NULL) + { + printf(NOMEM); + return -1; + } //init framebuffer - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("tuxwetter \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("tuxwetter \n"); - return -1; - } - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - perror("tuxwetter \n"); - return -1; - } + if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) + { + perror("tuxwetter \n"); + return -1; + } + if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) + { + perror("tuxwetter \n"); + return -1; + } + if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) + { + perror("tuxwetter \n"); + return -1; + } //init fontlibrary - if((error = FT_Init_FreeType(&library))) - { - printf("tuxwetter ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } + if((error = FT_Init_FreeType(&library))) + { + printf("tuxwetter ", error); + munmap(lfb, fix_screeninfo.smem_len); + return -1; + } - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("tuxwetter \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } + if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) + { + printf("tuxwetter \n", error); + FT_Done_FreeType(library); + munmap(lfb, fix_screeninfo.smem_len); + return -1; + } - if((error = FTC_SBitCache_New(manager, &cache))) + if((error = FTC_SBitCache_New(manager, &cache))) + { + printf("tuxwetter \n", error); + FTC_Manager_Done(manager); + FT_Done_FreeType(library); + munmap(lfb, fix_screeninfo.smem_len); + return -1; + } + + if((error = FTC_Manager_LookupFace(manager, FONT, &face))) + { + if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) { - printf("tuxwetter \n", error); + printf("tuxwetter \n", error); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("tuxwetter \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; + return 2; } else - desc.face_id = FONT; - - use_kerning = FT_HAS_KERNING(face); + desc.face_id = FONT2; + } + else + desc.face_id = FONT; - desc.flags = FT_LOAD_MONOCHROME; + use_kerning = FT_HAS_KERNING(face); + + desc.flags = FT_LOAD_MONOCHROME; //init backbuffer - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("tuxwetter \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } + if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) + { + perror("tuxwetter \n"); + FTC_Manager_Done(manager); + FT_Done_FreeType(library); + munmap(lfb, fix_screeninfo.smem_len); + return -1; + } - memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); + memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - startx = sx; - starty = sy; + startx = sx; + starty = sy; /* Set up signal handlers. */ signal(SIGINT, quit_signal); signal(SIGTERM, quit_signal); signal(SIGQUIT, quit_signal); + signal(SIGSEGV, quit_signal); // Startbildschirm @@ -3051,7 +3132,7 @@ PLISTENTRY pl=&epl; show_jpg("/tmp/startbild.jpg", sx, sy, ex-sx, ey-sy, 5, 0, 1, 1); xremove("/tmp/startbild.jpg"); #endif - show_jpg("/var/tuxbox/config/tuxwetter/startbild.jpg", sx, sy, ex-sx, ey-sy, 5, 0, 1, 1); + show_jpg(START_PIC, sx, sy, ex-sx, ey-sy, 5, 0, 1, 1); } //main loop @@ -3253,8 +3334,9 @@ PLISTENTRY pl=&epl; lrow++; } LCD_update(); - ferr=(strlen(line_buffer))?0:-1; */ + ferr=(strlen(line_buffer))?0:-1; + if((!ferr) && ((strcmp(line_buffer,lastpicture)!=0)||(loadalways)) && (pl->pictype!=TYP_TXTHTML)) { rptr=line_buffer; @@ -3309,7 +3391,7 @@ PLISTENTRY pl=&epl; fprintf(fh2,"
"); while(*pt1) { - if(*pt1==' ' && cnt>40) + if ( *pt1==' ' && cnt > ((preset)?90:40) ) { fprintf(fh2,"\n
"); cnt=0; @@ -3391,8 +3473,7 @@ PLISTENTRY pl=&epl; else { close_jpg_gif_png(); - sprintf(tstr,"%s",prs_translate("Fehler",CONVERT_LIST)); - sprintf(tstr,"%s %d %s.",tstr,ferr,prs_translate("beim Download",CONVERT_LIST)); + sprintf(tstr,"%s %d %s.", prs_translate("Fehler",CONVERT_LIST), ferr, prs_translate("beim Download",CONVERT_LIST)); ShowMessage(tstr,1); ferr = 0; dloop=-1; @@ -3416,21 +3497,21 @@ PLISTENTRY pl=&epl; case TYP_CITY: if(!prs_get_city()) { - - rcm = -1; + sprintf(tstr," "); Clear_List(&funcs, 1); funcs.act_entry=0; - sprintf(tstr,"%s %s",prs_translate("Wetter für",CONVERT_LIST),city_name); + sprintf(tstr,"%s %s",prs_translate("Wetterdaten für",CONVERT_LIST),city_name); if(funcs.headertxt[0]) { free(funcs.headertxt[0]); } funcs.headertxt[0]=strdup(tstr); - for(index=0; index=MAX_FUNCS) + if(++index>=num_of_funcs) { index=0; } @@ -3588,20 +3669,21 @@ PLISTENTRY pl=&epl; sprintf(tstr,"[ -e /tmp/picture* ] && rm /tmp/picture*"); system(tstr); xremove("/tmp/tuxwettr.tmp"); - xremove("/tmp/bmps.tar"); +// xremove("/tmp/bmps.tar"); xremove("/tmp/icon.gif"); xremove("/tmp/tempgif.gif"); xremove(PHP_FILE); put_instance(get_instance()-1); - +# if 0 +// swisstime if((tfh=fopen(TIME_FILE,"r"))!=NULL) { fclose(tfh); sprintf(line_buffer,"%s &",TIME_FILE); system(line_buffer); - free(line_buffer); } - +#endif + free(line_buffer); // clear Display memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); diff --git a/tuxwetter.h b/tuxwetter.h index 819d33e..0467124 100644 --- a/tuxwetter.h +++ b/tuxwetter.h @@ -10,9 +10,9 @@ #include #include #include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif +//#if HAVE_DVB_API_VERSION == 3 +//#include +//#endif #include #include #include @@ -23,9 +23,9 @@ #include FT_CACHE_H #include FT_CACHE_SMALL_BITMAPS_H +//#define WWEATHER #define BUFSIZE 4095 -#define MISS_FILE "/var/tuxbox/config/tuxwetter/missing_translations.txt" enum {LEFT, CENTER, RIGHT}; @@ -71,7 +71,7 @@ FT_Bool use_kerning; #define KEY_HELP 138 #define KEY_HOME 102 #define KEY_EXIT 174 -#define KEY_SETUP 141 +#define KEY_MENU 139 #define KEY_PAGEUP 104 #define KEY_PAGEDOWN 109 #define KEY_OK 0x160 @@ -122,7 +122,7 @@ struct fb_fix_screeninfo fix_screeninfo; struct fb_var_screeninfo var_screeninfo; extern unsigned char rd[],gn[],bl[],tr[]; -int startx, starty, sx, ex, sy, ey, debounce, rblock; +int startx, starty, sx, ex, sy, ey, preset, debounce, rblock; extern unsigned sc[8], tc[8]; extern int instance; int get_instance(void);