#include #include #include #include #include "gd.h" #include "gdfontt.h" #include "gdfonts.h" #include "gdfontmb.h" #include "gdfontl.h" #include "gdfontg.h" #define USE_TRUETYPE 1 /* #define USE_BITMAP 1 */ #define USE_TRUECOLOR 1 /* #define NO_TRUECOLOR 1 */ int main( int argc, char *argv[] ) { FILE *out; FILE *in; int black; int background; int i; int y; char *cn; char *err; char tempStr[ 40 ]; char windStr[ 40 ]; char humidStr[ 40 ]; char iconStr[ 40 ]; char weatherStr[ 40 ]; char timeStr[ 40 ]; #ifdef USE_TRUETYPE char *TheFont = "/usr/share/fonts/truetype/arial.ttf"; char *TheFontB = "/usr/share/fonts/truetype/TimesBold.ttf"; #endif :q gdImagePtr im_out = 0; gdImagePtr im_in = 0; #ifdef USE_BITMAP gdFontPtr font; #endif if ( argc < 7 ) { fprintf( stderr, "%s: input likely not from wread program\n", argv[0] ); return( 1 ); } if ( ( strlen( argv[ 1 ] ) > 39 ) || ( strlen( argv[ 2 ] ) > 39 ) || ( strlen( argv[ 3 ] ) > 39 ) || ( strlen( argv[ 4 ] ) > 39 ) || ( strlen( argv[ 5 ] ) > 39 ) || ( strlen( argv[ 6 ] ) > 39 ) ) { fprintf( stderr, "%s: input parameter unexpectedly long\n", argv[0] ); return( 1 ); } strcpy( tempStr, argv[ 1 ] ); strcpy( windStr, argv[ 2 ] ); strcpy( weatherStr, argv[ 5 ] ); strcpy( timeStr, argv[ 6 ] ); strcpy( iconStr, "./icons/" ); strcpy( &iconStr[ strlen( iconStr ) ], argv[ 4 ] ); strcpy( humidStr, argv[ 3 ] ); strcpy( &humidStr[ strlen( humidStr ) ], " Humidity" ); while ( (cn = strchr( tempStr, '_' )) != NULL ) *cn = ' '; while ( (cn = strchr( windStr, '_' )) != NULL ) *cn = ' '; while ( (cn = strchr( weatherStr, '_' )) != NULL ) *cn = ' '; while ( (cn = strchr( timeStr, '_' )) != NULL ) *cn = ' '; #if 0 printf( "%s = <%s>\n", "tempStr", tempStr ); printf( "%s = <%s>\n", "windStr", windStr ); printf( "%s = <%s>\n", "humidStr", humidStr ); printf( "%s = <%s>\n", "iconStr", iconStr ); printf( "%s = <%s>\n", "weatherStr", weatherStr ); printf( "%s = <%s>\n", "timeStr", timeStr ); #endif #ifdef USE_TRUECOLOR im_out = gdImageCreateTrueColor( 166, 90 ); #endif #ifdef NO_TRUECOLOR im_out = gdImageCreate( 166, 90 ); #endif black = gdImageColorAllocate( im_out, 0, 0, 0 ); background = gdImageColorAllocate( im_out, 192, 192, 192 ); gdImageFilledRectangle( im_out, 0, 0, gdImageSX( im_out ), gdImageSY( im_out ), background ); #ifdef USE_BITMAP font = gdFontGetMediumBold(); gdImageString( im_out, font, 3, 1, (unsigned char *) "Burnsville, MN 55337", black ); font = gdFontGetSmall(); gdImageString( im_out, font, 63, 16, (unsigned char *) weatherStr, black ); gdImageString( im_out, font, 63, 30, (unsigned char *) tempStr, black ); gdImageString( im_out, font, 63, 44, (unsigned char *) windStr, black ); gdImageString( im_out, font, 63, 58, (unsigned char *) humidStr, black ); gdImageString( im_out, font, 3, 74, (unsigned char *) timeStr, black ); #endif #ifdef USE_TRUETYPE err = gdImageStringFT( im_out, NULL, black, TheFontB, 10, 0, 3, 12, (char *) "Burnsville, MN 55337" ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } err = gdImageStringFT( im_out, NULL, black, TheFont, 9, 0, 63, 26, (char *) weatherStr ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } err = gdImageStringFT( im_out, NULL, black, TheFont, 9, 0, 63, 41, (char *) tempStr ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } err = gdImageStringFT( im_out, NULL, black, TheFont, 9, 0, 63, 56, (char *) windStr ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } err = gdImageStringFT( im_out, NULL, black, TheFont, 9, 0, 63, 71, (char *) humidStr ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } err = gdImageStringFT( im_out, NULL, black, TheFont, 9, 0, 3, 85, (char *) timeStr ); if ( err ) { fprintf( stderr, "%s: truetype font error: %s.\n", argv[0], err ); return( 1 ); } #endif in = fopen( iconStr, "rb" ); if ( !in ) { fprintf( stderr, "%s: unable to open icon file %s.\n", argv[0], iconStr ); return( 1 ); } im_in = gdImageCreateFromJpeg( in ); gdImageCopy( im_out, im_in, 3, 15, 0, 0, 55, 58 ); gdImageInterlace( im_out, 1 ); out = fopen( "55337.png", "wb" ); if ( !out ) { fprintf( stderr, "%s: unable to open output file %s.\n", argv[0], "55337.png" ); return( 1 ); } gdImagePng( im_out, out ); fclose( out ); gdImageDestroy( im_out ); return( 0 ); }