#include #include FILE *fp = 0; int fromFile = 0; FILE * openFile( char * nm ) { if( (fp=fopen( nm, "r" )) == 0 ) { fprintf( stderr, "Erreur open sur %s, lecture sur stdin !\n"); } else fromFile = 1; return fp; } myPause( char * prompt ) { if( fromFile == 0 ) return; fprintf( stderr, "%s ", prompt ); while( getchar() != '\n' ); } struct color { char * name; int value; }; struct color colors[] = { { "black", 0x000000 }, { "blue", 0x008888 }, { "gray", 0x202020 }, { "green", 0x00A000 }, { "red", 0xA00000 }, { "yellow", 0x008080 } }; #define COLOR_NB (sizeof(colors)/sizeof(struct color)) int colorValOfS( char *s ) { int i=0; while( i < COLOR_NB ) { if( strcmp( colors[i].name, s ) == 0 ) { return colors[i].value; } i++; } return -1; } char buff[7]; int valOfHexS( char *s ) { int x; if( s[0] != '#' ) return -1; if( strlen(s) == 4 ) // derive #0X0Y0Z from #XYZ { int i; buff[0] = '#'; for( i=1; i<=3; i++ ) { buff[2*i] = s[i]; buff[2*i-1] = '0'; } sscanf( buff+1, "%x", &x ); } else { // get the value from this hexadecimal form sscanf( s+1, "%x", &x ); } return x; } int rgbValOfSFromI( char *s, int i ) { int r, g, b; sscanf( s+i, "%2d%2d%2d", &r, &g, &b ); return 65536*r + 256*g +b; } int intValOfSFromI( char *s, int i ) { int x; sscanf( s+i,"%d", &x ); return x; } float floatValOfSFromI( char *s, int i ) { float x; sscanf( s+i,"%f", &x ); return x; }