static void createBmepsOutputEncoder(struct bmepsoe ** const bmepsoePP, FILE * const ofP, bool const rle, bool const flate, bool const ascii85) { unsigned int const FLATE_IN_SIZE = 16384; unsigned int const FLATE_OUT_SIZE = 17408; struct bmepsoe * bmepsoeP; int mode; MALLOCVAR_NOFAIL(bmepsoeP); MALLOCVAR_NOFAIL(bmepsoeP->oeP); MALLOCARRAY_NOFAIL(bmepsoeP->rleBuffer, 129); MALLOCARRAY_NOFAIL(bmepsoeP->flateInBuffer, FLATE_IN_SIZE); MALLOCARRAY_NOFAIL(bmepsoeP->flateOutBuffer, FLATE_OUT_SIZE); mode = 0; if (rle) mode |= OE_RL; if (flate) mode |= OE_FLATE; if (ascii85) mode |= OE_ASC85; oe_init(bmepsoeP->oeP, ofP, mode, 9, bmepsoeP->rleBuffer, bmepsoeP->flateInBuffer, FLATE_IN_SIZE, bmepsoeP->flateOutBuffer, FLATE_OUT_SIZE); *bmepsoePP = bmepsoeP; }
int main(int argc, char *argv[]) { Output_Encoder o; int methods; int number; int rlbuffer[129]; char buffer[512]; methods = 0; if(argc > 1) { char *ptr; ptr = argv[1]; while(*ptr) { switch(*ptr) { case 'a' : { methods |= OE_ASC85; } break; case 'r' : { methods |= OE_RL; } break; } ptr++; } } oe_init(&o, stdout, methods, 9, rlbuffer); methods = 1; while(methods) { number = read(0, buffer, sizeof(buffer)); if(number > 0) { char c, *ptr; int i; ptr = buffer; for(i = 0; i < number; i++) { c = *ptr; oe_byte_add(&o, c); ptr++; } } else { methods = 0; } } oe_byte_flush(&o); return 0; }
void bmeps_begin_image(FILE *out, unsigned long w, unsigned long h) { if(out) { if(!(use_trans && (bmeps_pslevel > 2))) { if(show_dsc_comments) { fprintf(out, "%%%%BeginProlog\n"); fprintf(out, "%%%%BeginResource: (bmeps procedures) 1.0 1\n"); } fprintf(out, "/pstr\n %lu string\ndef\n", w); if(bmeps_pslevel > 1) { fprintf(out, "/inputf\n currentfile\n"); if(bmeps_enc_a85) { fprintf(out, " /ASCII85Decode filter\n"); } else { fprintf(out, " /ASCIIHexDecode filter\n"); } if(bmeps_enc_fl) { fprintf(out, " /FlateDecode filter\n"); } if(bmeps_enc_rl) { fprintf(out, " /RunLengthDecode filter\n"); } fprintf(out, "def\n"); } if(show_dsc_comments) { fprintf(out, "%%%%EndResource\n"); fprintf(out, "%%%%EndProlog\n"); fprintf(out, "%%%%BeginSetup\n"); fprintf(out, "%%%%EndSetup\n"); } } else { if(show_dsc_comments) { fprintf(out, "%%%%BeginSetup\n"); } if(bmeps_color) { fprintf(out, "/DeviceRGB setcolorspace\n"); } else { fprintf(out, "/DeviceGray setcolorspace\n"); } if(show_dsc_comments) { fprintf(out, "%%%%EndSetup\n"); } } if(show_dsc_comments) { fprintf(out, "%%%%Page: Image%d 1\n", imageno++); } if(version_not_yet_printed) { version_not_yet_printed = 0; fprintf(out, "%%\n%% created by bmp2eps %s \n%%\n", the_version_number ); } fprintf(out, "gsave\n"); fprintf(out, "0 %lu translate\n", h); fprintf(out, "%lu %lu scale\n", w, h); if(use_trans && (bmeps_pslevel > 2)) { fprintf(out, "<<\n"); fprintf(out, " /ImageType 3\n"); fprintf(out, " /DataDict\n <<\n"); fprintf(out, " /ImageType 1\n"); fprintf(out, " /Width %lu\n", w); fprintf(out, " /Height %lu\n", h); fprintf(out, " /ImageMatrix [%lu 0 0 -%lu 0 0]\n", w, h); fprintf(out, " /MultipleDataSources false\n"); fprintf(out, " /DataSource\n currentfile"); if(bmeps_enc_a85) { fprintf(out, "\n /ASCII85Decode filter"); } else { fprintf(out, "\n /ASCIIHexDecode filter"); } if(bmeps_enc_fl) { fprintf(out, "\n /FlateDecode filter"); } if(bmeps_enc_rl) { fprintf(out, "\n /RunLengthDecode filter"); } fprintf(out, "\n"); fprintf(out, " /BitsPerComponent 8\n"); if(bmeps_color) { fprintf(out, " /Decode [ 0 1 0 1 0 1 ]\n"); } else { fprintf(out, " /Decode [ 0 1 ]\n"); } fprintf(out, " >>\n"); fprintf(out, " /MaskDict\n <<\n"); fprintf(out, " /ImageType 1\n"); fprintf(out, " /Width %lu\n", w); fprintf(out, " /Height %lu\n", h); fprintf(out, " /ImageMatrix [%lu 0 0 -%lu 0 0]\n", w, h); fprintf(out, " /BitsPerComponent 8\n"); fprintf(out, " /Decode [ 0 1 ]\n"); fprintf(out, " >>\n"); fprintf(out, " /InterleaveType 1\n"); fprintf(out, ">>\nimage\n"); } else { fprintf(out, "%lu %lu 8 [%lu 0 0 -%lu 0 0]\n", w, h, w, h ); if(bmeps_pslevel > 1) { if(bmeps_color) { fprintf(out, "{ inputf pstr readstring pop }\n"); fprintf(out, "false\n3\ncolorimage\n"); } else { fprintf(out, "{ inputf pstr readstring pop }\n"); fprintf(out, "image\n"); } } else { fprintf(out, "{ currentfile pstr readhexstring pop }\n"); fprintf(out, "image\n"); } } { int mode; mode = 0; if(bmeps_enc_a85) { mode |= OE_ASC85; } if(bmeps_enc_rl) { mode |= OE_RL; } oe_init(&bmepsoe, out, mode, 9, rlbuffer); state = 1; } } }