int GrSaveContextToPgm( GrContext *grc, char *pgmfn, char *docn ) { FILE *f; GrContext grcaux; char cab[81]; unsigned char grey; int rgb[3]; int x, y; if( (f = fopen( pgmfn,"wb" )) == NULL ) return -1; GrSaveContext( &grcaux ); if( grc != NULL ) GrSetContext( grc ); sprintf( cab,"P5\n#" ); fwrite( cab,1,strlen( cab ),f ); if( docn != NULL ) fwrite( docn,1,strlen( docn ), f ); sprintf( cab,"\n%d %d\n255\n",GrSizeX(),GrSizeY() ); fwrite( cab,1,strlen( cab ),f ); for( y=0; y<GrSizeY(); y++ ) for( x=0; x<GrSizeX(); x++ ){ GrQueryColor( GrPixel( x,y ),&rgb[0],&rgb[1],&rgb[2] ); grey = (0.229 * rgb[0]) + (0.587 * rgb[1]) + (0.114 * rgb[2]); fwrite( &grey,1,1,f ); } GrSetContext( &grcaux ); fclose( f ); return 0; }
int GrSaveContextToPpm( GrContext *grc, char *ppmfn, char *docn ) { FILE *f; GrContext grcaux; char cab[81]; unsigned char brgb[3]; int x, y, r, g, b; if( (f = fopen( ppmfn,"wb" )) == NULL ) return -1; GrSaveContext( &grcaux ); if( grc != NULL ) GrSetContext( grc ); sprintf( cab,"P6\n#" ); fwrite( cab,1,strlen( cab ),f ); if( docn != NULL ) fwrite( docn,1,strlen( docn ), f ); sprintf( cab,"\n%d %d\n255\n",GrSizeX(),GrSizeY() ); fwrite( cab,1,strlen( cab ),f ); for( y=0; y<GrSizeY(); y++ ) for( x=0; x<GrSizeX(); x++ ){ GrQueryColor( GrPixel( x,y ),&r,&g,&b ); brgb[0] = r; brgb[1] = g; brgb[2] = b; fwrite( brgb,1,3,f ); } GrSetContext( &grcaux ); fclose( f ); return 0; }
int GrSaveContextToPbm( GrContext *grc, char *pbmfn, char *docn ) { FILE *f; GrContext grcaux; char cab[81]; int currentbyte = 0, currentbit = 7; int x, y; if( (f = fopen( pbmfn,"wb" )) == NULL ) return -1; GrSaveContext( &grcaux ); if( grc != NULL ) GrSetContext( grc ); sprintf( cab,"P4\n#" ); fwrite( cab,1,strlen( cab ),f ); if( docn != NULL ) fwrite( docn,1,strlen( docn ), f ); sprintf( cab,"\n%d %d\n",GrSizeX(),GrSizeY() ); fwrite( cab,1,strlen( cab ),f ); for( y=0; y<GrSizeY(); y++ ){ for( x=0; x<GrSizeX(); x++ ){ if( GrPixel( x,y ) == GrBlack() ) currentbyte |= 1 << currentbit; currentbit--; if( currentbit < 0 ){ fwrite( ¤tbyte,1,1,f ); currentbyte = 0; currentbit = 7; } } if( currentbit < 7 ){ fwrite( ¤tbyte,1,1,f ); currentbyte = 0; currentbit = 7; } } GrSetContext( &grcaux ); fclose( f ); return 0; }
/* ** Read Pixel */ static MWPIXELVAL DJGR_readpixel(PSD psd,MWCOORD x, MWCOORD y) { return GrPixel(x, y); }