#define B2EPS_C 1 #include "bmepsi.h" $(trace-include) static char *kw[] = { /* 0 */ "\r\n", /* 1 */ " ", /* 2 */ "%!PS-Adobe", /* 3 */ "%%BoundingBox: ", /* 4 */ "EPSF", /* 5 */ "%%Creator: bmeps", /* 6 */ "%%Title: ", /* 7 */ "%%Pages: ", /* 8 */ "%%PageOrder: Ascend", /* 9 */ "%%DocumentData: Clean7Bit", /* 10 */ "%%EndComments", /* 11 */ "%%BeginProlog", /* 12 */ "%%EndProlog", /* 13 */ "%%BeginSetup", /* 14 */ "%%EndSetup", /* 15 */ "%%Trailer", /* 16 */ "%%EOF", /* 17 */ "unnamed", /* 18 */ "%%Page: ", /* 19 */ "showpage", /* 20 */ "gsave", /* 21 */ "grestore", /* 22 */ "13 dict begin", /* see below for 13 */ /* 23 */ "end", /* 24 */ "1 vmreclaim", /* 25 */ "translate", /* 26 */ "scale", /* 27 */ "sr", /* 28 */ "sg", /* 29 */ "sb", /* 30 */ "/", /* 31 */ "string", /* 32 */ "def", /* 33 */ "f", /* 34 */ "a", /* 35 */ "b", /* 36 */ "c", /* 37 */ "filter", /* 38 */ "/ASCIIHexDecode", /* 39 */ "/ASCII85Decode", /* 40 */ "currentfile", /* 41 */ "/LZWDecode", /* 42 */ "/FlateDecode", /* 43 */ "/RunLengthDecode", /* 44 */ "closefile", /* 45 */ "flushfile", /* 46 */ "currentdict", /* 47 */ "undef", /* 48 */ "{", /* 49 */ "}", /* 50 */ "exec", /* 51 */ "flushfile", /* 52 */ "/DeviceRGB", /* 53 */ "/DeviceGray", /* 54 */ "setcolorspace", /* 55 */ "readstring", /* 56 */ "pop", /* 57 */ "true", /* 58 */ "false", /* 59 */ "3", /* 60 */ "colorimage", /* 61 */ "image", /* 62 */ "sm", /* for mask and level 1 gray */ /* 63 */ "readhexstring", /* 64 */ "<<", /* 65 */ ">>", /* 66 */ "/ImageType", /* 67 */ "/Width", /* 68 */ "/Height", /* 69 */ "/ImageMatrix", /* 70 */ "/MultipleDataSources", /* 71 */ "/DataSource", /* 72 */ "/BitsPerComponent", /* 73 */ "/Decode", /* 74 */ "[0 1]", /* 75 */ "[0 1 0 1 0 1]", /* 76 */ "/Interpolate", /* 77 */ "[", /* 78 */ "]", /* 79 */ "/DataDict", /* 80 */ "/MaskDict", /* 81 */ "/InterleaveType", /* 82 */ "/DCTDecode", /* 83 */ "rotate", /* 84 */ "-", /* 85 */ "/DeviceCMYK", /* 86 */ "[0 1 0 1 0 1 0 1]", /* 87 */ "[1 0 1 0 1 0 1 0]", /* 88 */ "newpath", /* 89 */ "moveto", /* 90 */ "lineto", /* 91 */ "closepath", /* 92 */ "fill", /* 93 */ "setgray", /* 94 */ "setrgbcolor", NULL }; size_t lgt_kw = sizeof(kw)/sizeof(PCHAR); /* 3 names for files (ASCIIHex/ASCII85, LZW/flate, run-length) 3 names for strings (R, G, B) 3 names for procedures (R, G, B) 1 name for string (image mask) 1 name for procedure (image mask) */ static void kw_out DK_P2(BJ *,bj, size_t, n) { if(n < lgt_kw) { dkstream_puts(bj->os, kw[n]); } } void bmeps_eps_bb DK_P1(BJ *,bj) { long fno; long x0, y0, x1, y1; int have_data = 0; char buffer[128]; $? "+ bmeps_eps_bb" fno = bj->frame_s; x0 = y0 = x1 = y1 = 0UL; buffer[0] = 0x00; while(fno <= bj->frame_e) { $? ". merge bounding box for frame %ld", fno if(dkbif_set_frame(bj->bif, fno)) { bmeps_tool_calculate_areas(bj); if(have_data) { if( (bj->trans).bb.x0 < x0 ) { x0 = (bj->trans).bb.x0; } if( (bj->trans).bb.y0 < y0 ) { y0 = (bj->trans).bb.y0; } if( (bj->trans).bb.x1 > x1 ) { x1 = (bj->trans).bb.x1; } if( (bj->trans).bb.y1 > y1 ) { y1 = (bj->trans).bb.y1; } } else { x0 = (bj->trans).bb.x0; x1 = (bj->trans).bb.x1; y0 = (bj->trans).bb.y0; y1 = (bj->trans).bb.y1; have_data = 1; } #if VEERSION_BEFORE_2006_11_04 sprintf(buffer, "%ld %ld %ld %ld", x0, y0, x1, y1); dkstream_puts(bj->os, kw[3]); dkstream_puts(bj->os, buffer); dkstream_puts(bj->os, kw[0]); #endif } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 71); bj->exval = 1; } fno++; $? ". fno = %lu", fno } $? ". write bounding box" sprintf(buffer, "%ld %ld %ld %ld", x0, y0, x1, y1); kw_out(bj, 3); dkstream_puts(bj->os, buffer); kw_out(bj, 0); $? "- bmeps_eps_bb" } static void translate_and_scale_if_necessary DK_P6(\ BJ *,bj, unsigned long,w, unsigned long,h,\ unsigned long,origw, unsigned long,origh, char *,buffer\ ) { switch(bmeps_tool_how_to_handle_bb(bj)) { case 2: { /* paper size */ if((bj->trans).must_rotate) { w = origh; h = origw; } $? ". write translate (1) %lg %lg", (bj->trans).iu.x0, (bj->trans).iu.y0 sprintf(buffer, "%lg %lg", (bj->trans).iu.x0, (bj->trans).iu.y0); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 0); sprintf(buffer, "%lg %lg", (bj->trans).sfx, (bj->trans).sfy); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); } break; case 1: { /* pHY chunk */ if((bj->trans).must_scale) { $? ". write translate (2)" sprintf(buffer, "%lg %lg", (bj->trans).iu.x0, (bj->trans).iu,y0); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 0); sprintf(buffer, "%lg %lg", (bj->trans).sfx, (bj->trans).sfy); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); } } break; default: { /* 1:1 */ } break; } } static void internal_conventional DK_P1(BJ *,bj) { char buffer[128], slbuffer[32]; unsigned long origw, origh, w, h, sl, iy, j, x, y, bpc, bits; unsigned short bpcs; int me = 0, number_of_filters = 0, i = 0; dk_stream_t *ofs = NULL; dk_bitshift_t *obs = NULL; $? "+ internal_conventional" origw = w = dkbif_get_width(bj->bif); origh = h = dkbif_get_height(bj->bif); if((bj->trans).must_rotate) { w = origh; h = origw; } /* calculations and setup */ /* retrieve and correct bits per component */ bpcs = dkbif_get_bits_per_component(bj->bif); bpcs = bmeps_tool_eps_output_bits(bpcs); bpc = (unsigned long)bpcs; /* no colored output for gray images */ switch(dkbif_get_channels(bj->bif)) { case 1: case 2: { (bj->bo2)->opt &= (~(BMEPS_OPT_COLOR_OUTPUT)); (bj->bo2)->opt &= (~(BMEPS_OPT_SEPARATED_DATA)); } break; } /* level 1 allows 8 bits per pixel only */ if((bj->bo2)->l == BMEPS_PS_LEVEL_1) { if(bpcs > 8) { bpcs = 8; bpc = 8UL; } } dkbif_set_bits_per_component(bj->bif, bpcs); /* calculate string size for separated data sources */ bits = dkma_mul_ulong_ok(w, bpc, &me); sl = bits / 8UL; if(sl * 8UL < bits) sl = dkma_add_ulong_ok(sl, 1UL, &me); /* string length is restricted */ if((me != 0) || (sl >= 16384UL)) { (bj->bo2)->opt &= (~(BMEPS_OPT_SEPARATED_DATA)); } /* set up image mask and mask level */ switch(dkbif_get_channels(bj->bif)) { case 2: case 4: { /* alpha channel */ $? ". have alpha channel" if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { dkbif_set_mask_trigger_level(bj->bif, (bj->bo2)->mtl); } if((bj->bo2)->opt & BMEPS_OPT_ALPHA_MIX) { $? ". must mix" dkbif_set_mixing(bj->bif, (((bj->bo2)->opt & BMEPS_OPT_PREFER_SPEC_BG) ? 2 : 1), (bj->bo2)->dbgr, (bj->bo2)->dbgg, (bj->bo2)->dbgb ); } } break; default: { /* no alpha channel */ $? ". no alpha channel" (bj->bo2)->opt &= (~(BMEPS_OPT_IMAGE_MASK)); (bj->bo2)->opt &= (~(BMEPS_OPT_ALPHA_MIX)); (bj->bo2)->opt &= (~(BMEPS_OPT_PREFER_SPEC_BG)); } break; } if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { (bj->bo2)->opt &= (~(BMEPS_OPT_SEPARATED_DATA)); } /* final corrections on bo2 */ bmeps_tool_correct_bo(bj->bo2); /* calculate number of file names in dictionary */ number_of_filters = 1; if((bj->bo2)->enc & (BMEPS_ENCODING_FLATE)) { number_of_filters++; } if((bj->bo2)->enc & BMEPS_ENCODING_RUNLENGTH) { number_of_filters++; } /* image operator (and arguments) */ /* file definitions */ kw_out(bj, 48); kw_out(bj, 0); kw_out(bj, 20); kw_out(bj, 0); translate_and_scale_if_necessary(bj, w, h, origw, origh, buffer); if((bj->bo2)->opt & BMEPS_OPT_DICTIONARY) { kw_out(bj, 22); kw_out(bj, 0); } if((bj->bo2)->l > BMEPS_PS_LEVEL_1) { /* PS level >= 2 */ kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); kw_out(bj, 40); kw_out(bj, 1); if((bj->bo2)->enc & BMEPS_ENCODING_ASCII85) { kw_out(bj, 39); } else { kw_out(bj, 38); } kw_out(bj, 1); kw_out(bj, 37); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); number_of_filters = 1; if((bj->bo2)->enc & (BMEPS_ENCODING_FLATE)) { kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, 35); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); if((bj->bo2)->enc & BMEPS_ENCODING_FLATE) { kw_out(bj, 42); } else { kw_out(bj, 41); } kw_out(bj, 1); kw_out(bj, 37); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); number_of_filters++; } if((bj->bo2)->enc & BMEPS_ENCODING_RUNLENGTH) { $? ". number_of_filters = %d", number_of_filters kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, (34 + number_of_filters)); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); kw_out(bj, 1); kw_out(bj, 43); kw_out(bj, 1); kw_out(bj, 37); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); number_of_filters++; } } else { /* PS level = 1 */ } /* string and procedure definitions, only for separated sources */ sprintf(slbuffer, "%lu", sl); if((bj->bo2)->l > BMEPS_PS_LEVEL_1) { if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { for(i = 0; i < 3; i++) { kw_out(bj, 30); kw_out(bj, 27+i); kw_out(bj, 1); dkstream_puts(bj->os, slbuffer); kw_out(bj, 1); kw_out(bj, 31); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); } } } else { kw_out(bj, 30); kw_out(bj, 62); kw_out(bj, 1); dkstream_puts(bj->os, slbuffer); kw_out(bj, 1); kw_out(bj, 31); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); } /* image operator */ if((bj->bo2)->l > BMEPS_PS_LEVEL_1) { if((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) { kw_out(bj, 52); } else { kw_out(bj, 53); } kw_out(bj, 1); kw_out(bj, 54); kw_out(bj, 0); } $? ". write translate (3)" sprintf(buffer, "0 %lu", h); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 1); sprintf(buffer, "%lu %lu", w, h); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_OPERATOR_DICTIONARY) { if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { kw_out(bj, 64); kw_out(bj, 0); kw_out(bj, 66); kw_out(bj, 1); dkstream_puts_ul(bj->os, 3UL); kw_out(bj, 0); kw_out(bj, 79); kw_out(bj, 0); kw_out(bj, 64); kw_out(bj, 0); /* datadict */ kw_out(bj, 66); kw_out(bj, 1); dkstream_puts_ul(bj->os, 1UL); kw_out(bj, 0); kw_out(bj, 67); kw_out(bj, 1); dkstream_puts_ul(bj->os, w); kw_out(bj, 0); kw_out(bj, 68); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 0); kw_out(bj, 69); kw_out(bj, 1); sprintf(buffer, "[%lu 0 0 -%lu 0 0]", w, h); dkstream_puts(bj->os, buffer); kw_out(bj, 0); kw_out(bj, 70); kw_out(bj, 1); kw_out(bj, 58); kw_out(bj, 0); kw_out(bj, 71); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); kw_out(bj, 0); kw_out(bj, 72); kw_out(bj, 1); dkstream_puts_ul(bj->os, (unsigned long)bpc); kw_out(bj, 0); kw_out(bj, 73); kw_out(bj, 1); kw_out(bj, (((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) ? 75 : 74)); #if VERSION_BEFORE_2006_11_03 if((bj->bo2)->opt & BMEPS_OPT_INTERPOLATE) { #else if(bmeps_tool_interpolate(bj)) { #endif kw_out(bj, 76); kw_out(bj, 1); kw_out(bj, 57); kw_out(bj, 0); } kw_out(bj, 0); kw_out(bj, 65); kw_out(bj, 0); kw_out(bj, 80); kw_out(bj, 0); kw_out(bj, 64); kw_out(bj, 0); /* maskdict */ kw_out(bj, 66); kw_out(bj, 1); dkstream_puts_ul(bj->os, 1UL); kw_out(bj, 0); kw_out(bj, 67); kw_out(bj, 1); dkstream_puts_ul(bj->os, w); kw_out(bj, 0); kw_out(bj, 68); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 0); kw_out(bj, 69); kw_out(bj, 1); dkstream_puts(bj->os, buffer); kw_out(bj, 0); kw_out(bj, 72); kw_out(bj, 1); dkstream_puts_ul(bj->os, (unsigned long)bpc); kw_out(bj, 0); kw_out(bj, 73); kw_out(bj, 1); kw_out(bj, 74); kw_out(bj, 0); kw_out(bj, 65); kw_out(bj, 0); kw_out(bj, 81); kw_out(bj, 1); dkstream_puts_ul(bj->os, 1UL); kw_out(bj, 0); kw_out(bj, 65); kw_out(bj, 0); kw_out(bj, 61); kw_out(bj, 0); } else { kw_out(bj, 64); kw_out(bj, 0); kw_out(bj, 66); kw_out(bj, 1); dkstream_puts_ul(bj->os, 1UL); kw_out(bj, 0); $? ". after image type" kw_out(bj, 67); kw_out(bj, 1); dkstream_puts_ul(bj->os, w); kw_out(bj, 1); kw_out(bj, 68); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 1); kw_out(bj, 69); kw_out(bj, 1); $? ". 1" sprintf(buffer, "[%lu 0 0 -%lu 0 0]", w, h); dkstream_puts(bj->os, buffer); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { kw_out(bj, 70); kw_out(bj, 1); kw_out(bj, 57); kw_out(bj, 0); } $? ". 2" kw_out(bj, 71); kw_out(bj, 1); if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { kw_out(bj, 77); kw_out(bj, 0); for(i = 0; i < 3; i++) { kw_out(bj, 48); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); kw_out(bj, 1); kw_out(bj, (27 + i)); kw_out(bj, 1); kw_out(bj, 55); kw_out(bj, 1); kw_out(bj, 56); kw_out(bj, 1); kw_out(bj, 49); kw_out(bj, 0); } kw_out(bj, 78); $? ". 3" } else { kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); $? ". 4" } kw_out(bj, 0); $? ". 5" kw_out(bj, 72); kw_out(bj, 1); dkstream_puts_ul(bj->os, (unsigned long)bpc); kw_out(bj, 0); $? ". after bits per component" kw_out(bj, 73); kw_out(bj, 1); if((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) { kw_out(bj, 75); } else { kw_out(bj, 74); } kw_out(bj, 0); $? ". after decode" #if VERSION_BEFORE_2006_11_03 if((bj->bo2)->opt & BMEPS_OPT_INTERPOLATE) { #else if(bmeps_tool_interpolate(bj)) { #endif kw_out(bj, 76); kw_out(bj, 1); kw_out(bj, 57); kw_out(bj, 0); } kw_out(bj, 65); kw_out(bj, 0); kw_out(bj, 61); kw_out(bj, 0); } } else { sprintf(buffer, "%lu %lu %u [%lu 0 0 -%lu 0 0]", w, h, (unsigned)bpc, w, h); dkstream_puts(bj->os, buffer); $? ". erste operatoren ausgegeben" if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { $? ". separated data" kw_out(bj, 0); for(i = 0; i < 3; i++) { $? ". color %d", i kw_out(bj, 48); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); kw_out(bj, 1); kw_out(bj, (27 + i)); kw_out(bj, 1); kw_out(bj, 1); kw_out(bj, 55); kw_out(bj, 1); kw_out(bj, 56); kw_out(bj, 1); kw_out(bj, 49); kw_out(bj, 0); } kw_out(bj, 57); kw_out(bj, 1); kw_out(bj, 59); kw_out(bj, 1); kw_out(bj, 60); kw_out(bj, 0); } else { $? ". no separated data" if((bj->bo2)->l > BMEPS_PS_LEVEL_1) { /* PS level >= 2 */ kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, (33 + number_of_filters)); kw_out(bj, 1); if((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) { kw_out(bj, 58); kw_out(bj, 1); kw_out(bj, 59); kw_out(bj, 1); kw_out(bj, 60); } else { kw_out(bj, 61); } kw_out(bj, 0); } else { /* PS level = 1 */ kw_out(bj, 0); kw_out(bj, 48); kw_out(bj, 1); kw_out(bj, 40); kw_out(bj, 1); kw_out(bj, 62); kw_out(bj, 1); kw_out(bj, 63); kw_out(bj, 1); kw_out(bj, 56); kw_out(bj, 1); kw_out(bj, 49); kw_out(bj, 0); kw_out(bj, 61); kw_out(bj, 0); } } } /* cleanup */ /* destroy strings */ if(!((bj->bo2)->opt & BMEPS_OPT_DICTIONARY)) { if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { for(i = 0; i < 3; i++) { kw_out(bj, 46); kw_out(bj, 1); kw_out(bj, 30); kw_out(bj, 27+2-i); kw_out(bj, 1); kw_out(bj, 47); kw_out(bj, 0); } } } /* close files and destroy file definitions */ if((bj->bo2)->l > BMEPS_PS_LEVEL_1) { /* PS level >= 2 */ i = number_of_filters; while(i > 0) { if(i == 1) { kw_out(bj, 33); kw_out(bj, (33+i)); kw_out(bj, 1); kw_out(bj, 51); kw_out(bj, 1); } kw_out(bj, 33); kw_out(bj, (33+i)); kw_out(bj, 1); kw_out(bj, 44); kw_out(bj, 0); i--; } if(!((bj->bo2)->opt & BMEPS_OPT_DICTIONARY)) { i = number_of_filters; while(i > 0) { kw_out(bj, 46); kw_out(bj, 1); kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, (33+i)); kw_out(bj, 1); kw_out(bj, 47); kw_out(bj, 0); i--; } } } else { /* PS level = 1 */ } if((bj->bo2)->opt & BMEPS_OPT_DICTIONARY) { kw_out(bj, 23); if((bj->bo2)->opt & BMEPS_OPT_VMRECLAIM) { kw_out(bj, 1); kw_out(bj, 24); } kw_out(bj, 0); } kw_out(bj, 21); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_SHOWPAGE) { kw_out(bj, 19); kw_out(bj, 0); } kw_out(bj, 49); kw_out(bj, 1); kw_out(bj, 50); kw_out(bj, 0); /* data for image */ ofs = dkof_open(bj->os, (1 + number_of_filters)); if(ofs) { obs = NULL; dkof_set(ofs, 0, DK_OF_TYPE_BUFFERED); i = 1; if((bj->bo2)->enc & BMEPS_ENCODING_ASCII85) { dkof_set(ofs, 1, DK_OF_TYPE_ASCII85); } else { dkof_set(ofs, 1, DK_OF_TYPE_ASCIIHEX); } i++; if((bj->bo2)->enc & BMEPS_ENCODING_FLATE) { dkof_set(ofs, i, DK_OF_TYPE_FLATE); i++; } else { } if((bj->bo2)->enc & BMEPS_ENCODING_RUNLENGTH) { dkof_set(ofs, i, DK_OF_TYPE_PSRL); i++; } dkof_set_crnl(ofs, 1); if((bj->bo2)->l == BMEPS_PS_LEVEL_1) { dkof_set_finalizing(ofs, 0); } if(dkof_start_chunk(ofs)) { if((bpc != 8) || ((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK)) { obs = dkof_bs_open(ofs); } if((obs != NULL) || ((bpc == 8) && (!((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK)))) { $? ". w=%lu h=%lu origw=%lu origh=%lu", w, h, origw, origh #if INTERLEAVE_TYPE_1 if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { /* mask data */ for(iy = 0UL; iy < h; iy++) { for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu mask=%d", iy, j, x, y, dkbif_get_mask(bj->bif, x, y) if(obs) { dkof_bs_put(obs, (dkbif_get_mask(bj->bif, x, y) ? 1 : 0), 1); } } if(obs) { dkof_bs_flush(obs); } } } #endif if((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) { if((bj->bo2)->opt & BMEPS_OPT_SEPARATED_DATA) { $? ". for all lines" /* color data separated */ for(iy = 0UL; iy < h; iy++) { $? " . line %lu", iy $? ". red data" for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu", iy, j, x, y if((bpc != 8) && (obs)) { $? ". bitshift" dkof_bs_put( obs, dkbif_get_red(bj->bif, x, y), (unsigned short)bpc ); } else { $? ". stream write" buffer[0] = (unsigned char)dkbif_get_red(bj->bif, x, y); dkstream_write(ofs, buffer, 1); } } if((bpc != 8) && (obs)) { $? ". flush obs" dkof_bs_flush(obs); } $? ". green data" for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu", iy, j, x, y if((bpc != 8) && (obs)) { $? ". bitshift" dkof_bs_put( obs, dkbif_get_green(bj->bif, x, y), (unsigned short)bpc ); } else { $? ". stream write" buffer[0] = (unsigned char)dkbif_get_green(bj->bif, x, y); dkstream_write(ofs, buffer, 1); } } if((bpc != 8) && (obs)) { $? ". flush obs" dkof_bs_flush(obs); } $? ". blue data" for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu", iy, j, x, y if((bpc != 8) && (obs)) { $? ". bitshift" dkof_bs_put( obs, dkbif_get_blue(bj->bif, x, y), (unsigned short)bpc ); } else { $? ". stream write" buffer[0] = (unsigned char)dkbif_get_blue(bj->bif, x, y); dkstream_write(ofs, buffer, 1); } } if((bpc != 8) && (obs)) { $? ". flush obs" dkof_bs_flush(obs); } } } else { /* color data per pixel, interleaved */ for(iy = 0UL; iy < h; iy++) { for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu", iy, j, x, y if((bpc != 8) && (obs)) { if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { dkof_bs_put( obs, dkbif_get_mask(bj->bif, x, y), (unsigned short)bpc ); } dkof_bs_put( obs, dkbif_get_red(bj->bif, x, y), (unsigned short)bpc ); dkof_bs_put( obs, dkbif_get_green(bj->bif, x, y), (unsigned short)bpc ); dkof_bs_put( obs, dkbif_get_blue(bj->bif, x, y), (unsigned short)bpc ); } else { if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { buffer[0] = dkbif_get_mask(bj->bif, x, y); buffer[1] = (unsigned char)dkbif_get_red(bj->bif, x, y); buffer[2] = (unsigned char)dkbif_get_green(bj->bif, x, y); buffer[3] = (unsigned char)dkbif_get_blue(bj->bif, x, y); dkstream_write(ofs, buffer, 4); } else { buffer[0] = (unsigned char)dkbif_get_red(bj->bif, x, y); buffer[1] = (unsigned char)dkbif_get_green(bj->bif, x, y); buffer[2] = (unsigned char)dkbif_get_blue(bj->bif, x, y); dkstream_write(ofs, buffer, 3); } } } if((bpc != 8) && (obs)) { dkof_bs_flush(obs); } } } } else { /* gray data */ for(iy = 0UL; iy < h; iy++) { for(j = 0UL; j < w; j++) { y = iy; x = j; if((bj->trans).must_rotate) { x = iy; y = w - 1UL - j; } $? ". i=%lu j=%lu x=%lu, y=%lu", iy, j, x, y if((bpc != 8) && (obs)) { if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { dkof_bs_put( obs, dkbif_get_mask(bj->bif, x, y), (unsigned short)bpc ); } dkof_bs_put( obs, dkbif_get_gray(bj->bif, x, y), (unsigned short)bpc ); } else { if((bj->bo2)->opt & BMEPS_OPT_IMAGE_MASK) { buffer[0] = (unsigned char)dkbif_get_mask(bj->bif, x, y); buffer[1] = (unsigned char)dkbif_get_gray(bj->bif, x, y); dkstream_write(ofs, buffer, 2); } else { buffer[0] = (unsigned char)dkbif_get_gray(bj->bif, x, y); dkstream_write(ofs, buffer, 1); } } } if((bpc != 8) && (obs)) { dkof_bs_flush(obs); } } } } else { bmeps_tool_error_memory(bj); bj->exval = 1; } if(obs) { dkof_bs_close(obs); obs = NULL; } dkof_end_chunk(ofs); } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 68); bj->exval = 1; } dkof_close(ofs); ofs = NULL; } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 70); bj->exval = 1; } $? "- internal_conventional" } static void transfer_file_contents DK_P2(BJ *,bj, dk_stream_t *,ofs) { char ibuffer[512]; char obuffer[512]; size_t l1, l2; int cc = 0, write_error = 0; $? "+ transfer_file_contents" if(0) { $? ". search for parts" } else { $? ". transfer entire file" rewind(bj->inf); cc = 1; while(cc) { l1 = fread((void *)ibuffer, 1, 512, bj->inf); if(l1 > 0) { l2 = dkstream_write(ofs, ibuffer, l1); if(l2 < l1) { cc = 0; write_error = 1; $? "! error while writing" } } else { cc = 0; } } } if(write_error) { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 53); } $? "- transfer_file_contents" } static void internal_dct DK_P1(BJ *,bj) { #if DK_HAVE_JPEGLIB_H unsigned long w, h, origw, origh, bpc; unsigned short bpcs; int me = 0; dk_stream_t *ofs = NULL; char buffer[256]; $? "+ internal_dct" origw = w = dkbif_get_width(bj->bif); origh = h = dkbif_get_height(bj->bif); bpcs = dkbif_get_bits_per_component(bj->bif); bpc = (unsigned long)bpcs; kw_out(bj, 48); kw_out(bj, 0); kw_out(bj, 20); kw_out(bj, 0); switch(bmeps_tool_how_to_handle_bb(bj)) { case 2: { /* paper size */ sprintf(buffer, "%lg %lg", (bj->trans).iu.x0, (bj->trans).iu.y1); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 1); kw_out(bj, 84); dkstream_puts_ul(bj->os, 90UL); kw_out(bj, 1); kw_out(bj, 83); kw_out(bj, 1); sprintf(buffer, "%lg %lg", (bj->trans).sfy, (bj->trans).sfx); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); } break; case 1: { /* resolution chunk */ sprintf(buffer, "%lg %lg", (bj->trans).iu.x0, (bj->trans).iu.y0); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 0); sprintf(buffer, "%lg %lg", (bj->trans).sfx, (bj->trans).sfy); dkstream_puts(bj->os, buffer); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); } break; } dkstream_puts_ul(bj->os, 0UL); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 1); kw_out(bj, 25); kw_out(bj, 0); dkstream_puts_ul(bj->os, w); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 1); kw_out(bj, 26); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_DICTIONARY) { kw_out(bj, 22); kw_out(bj, 0); } kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); kw_out(bj, 40); kw_out(bj, 1); if((bj->bo2)->enc & BMEPS_ENCODING_ASCII85) { kw_out(bj, 39); } else { kw_out(bj, 38); } kw_out(bj, 1); kw_out(bj, 37); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); kw_out(bj, 30); kw_out(bj, 33); kw_out(bj, 35); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); kw_out(bj, 64); kw_out(bj, 1); kw_out(bj, 65); kw_out(bj, 1); kw_out(bj, 82); kw_out(bj, 1); kw_out(bj, 37); kw_out(bj, 1); kw_out(bj, 32); kw_out(bj, 0); if(((bj->bif)->d).jpg.jpgana.components > 0x01) { if(((bj->bif)->d).jpg.jpgana.components == 0x03) { kw_out(bj, 52); } else { kw_out(bj, 85); } } else { kw_out(bj, 53); } kw_out(bj, 1); kw_out(bj, 54); kw_out(bj, 0); kw_out(bj, 64); kw_out(bj, 0); kw_out(bj, 66); kw_out(bj, 1); dkstream_puts_ul(bj->os, 1UL); kw_out(bj, 0); kw_out(bj, 67); kw_out(bj, 1); dkstream_puts_ul(bj->os, w); kw_out(bj, 0); kw_out(bj, 68); kw_out(bj, 1); dkstream_puts_ul(bj->os, h); kw_out(bj, 0); sprintf(buffer, "[%lu 0 0 -%lu 0 0]", w, h); kw_out(bj, 69); kw_out(bj, 1); dkstream_puts(bj->os, buffer); kw_out(bj, 0); kw_out(bj, 70); kw_out(bj, 1); kw_out(bj, 58); kw_out(bj, 0); kw_out(bj, 71); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, 35); kw_out(bj, 0); kw_out(bj, 72); kw_out(bj, 1); dkstream_puts_ul(bj->os, 8UL); kw_out(bj, 0); kw_out(bj, 73); kw_out(bj, 1); if(((bj->bif)->d).jpg.jpgana.components > 0x01) { if(((bj->bif)->d).jpg.jpgana.components == 0x03) { kw_out(bj, 75); } else { if(((bj->bif)->d).jpg.jpgana.adobe_marker_found) { kw_out(bj, 87); } else { kw_out(bj, 86); } } } else { kw_out(bj, 74); } kw_out(bj, 0); kw_out(bj, 65); kw_out(bj, 0); kw_out(bj, 61); kw_out(bj, 0); kw_out(bj, 33); kw_out(bj, 35); kw_out(bj, 1); kw_out(bj, 44); kw_out(bj, 0); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); kw_out(bj, 45); kw_out(bj, 1); kw_out(bj, 33); kw_out(bj, 34); kw_out(bj, 1); kw_out(bj, 44); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_SHOWPAGE) { kw_out(bj, 19); kw_out(bj, 0); } if((bj->bo2)->opt & BMEPS_OPT_DICTIONARY) { kw_out(bj, 23); if((bj->bo2)->opt & BMEPS_OPT_VMRECLAIM) { kw_out(bj, 1); kw_out(bj, 24); } kw_out(bj, 0); } kw_out(bj, 21); kw_out(bj, 0); kw_out(bj, 49); kw_out(bj, 1); kw_out(bj, 50); kw_out(bj, 0); /* image data */ ofs = dkof_open(bj->os, 2); if(ofs) { dkof_set(ofs, 0, DK_OF_TYPE_BUFFERED); if((bj->bo2)->enc & BMEPS_ENCODING_ASCII85) { dkof_set(ofs, 1, DK_OF_TYPE_ASCII85); } else { dkof_set(ofs, 1, DK_OF_TYPE_ASCIIHEX); } dkof_set_crnl(ofs, 1); if(dkof_start_chunk(ofs)) { /* transfer_file_contents(bj, ofs); */ rewind(bj->inf); /* ((bj->bif)->d).jpg.jpgana.is_printing = 1; ((bj->bif)->d).jpg.jpgana.inputfile = bj->inf; ((bj->bif)->d).jpg.jpgana.os = ofs; ((bj->bif)->d).jpg.jpgana.a = NULL; dkbif_jfif_analyze(&(((bj->bif)->d).jpg.jpgana)); */ dkbif_jfif_transfer(ofs, bj->inf); if(!dkof_end_chunk(ofs)) { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 69); bj->exval = 1; } } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 68); bj->exval = 1; } dkof_close(ofs); ofs = NULL; } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 70); bj->exval = 1; } $? "- internal_dct" #endif } static void internal_draft DK_P1(BJ *,bj) { DI dinner, douter; double r = 0.7, g = 0.0, b = 0.0, gray = 0.9, black = 0.0; $? "+ internal_draft" if(bmeps_tool_calc_di(bj, &dinner, &douter, 0.05, 0.01)) { /* outer rectangle */ /* --- 0.8 setgray */ if((bj->bo2)->opt & BMEPS_OPT_COLOR_OUTPUT) { dkstream_puts_double(bj->os, r); kw_out(bj, 1); dkstream_puts_double(bj->os, g); kw_out(bj, 1); dkstream_puts_double(bj->os, b); kw_out(bj, 1); kw_out(bj, 94); } else { dkstream_puts_double(bj->os, black); kw_out(bj, 1); kw_out(bj, 93); } kw_out(bj, 0); /* --- newpath */ kw_out(bj, 88); kw_out(bj, 0); /* --- x0 y0 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0); kw_out(bj, 1); kw_out(bj, 89); kw_out(bj, 0); /* --- x1 y0 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x0 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- closepath */ kw_out(bj, 91); kw_out(bj, 1); /* --- fill */ kw_out(bj, 92); kw_out(bj, 0); /* middle rectangle */ /* --- 0.8 setgray */ dkstream_puts_double(bj->os, gray); kw_out(bj, 1); kw_out(bj, 93); kw_out(bj, 0); /* --- newpath */ kw_out(bj, 88); kw_out(bj, 0); /* --- x0 y0 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 89); kw_out(bj, 0); /* --- x1 y0 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x0 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- closepath */ kw_out(bj, 91); kw_out(bj, 1); /* --- fill */ kw_out(bj, 92); kw_out(bj, 0); /* inner rectangle */ /* --- 1.0 setgray */ dkstream_puts_double(bj->os, 1.0); kw_out(bj, 1); kw_out(bj, 93); kw_out(bj, 0); /* --- newpath */ kw_out(bj, 88); kw_out(bj, 0); /* --- x0 y0 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + dinner.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + dinner.d); kw_out(bj, 1); kw_out(bj, 89); kw_out(bj, 0); /* --- x1 y0 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - dinner.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + dinner.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - dinner.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - dinner.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x0 y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + dinner.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - dinner.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- closepath */ kw_out(bj, 91); kw_out(bj, 1); /* --- fill */ kw_out(bj, 92); kw_out(bj, 0); /* outer diagonal lines */ /* --- 0.8 setgray */ dkstream_puts_double(bj->os, gray); kw_out(bj, 1); kw_out(bj, 93); kw_out(bj, 0); /* --- newpath */ kw_out(bj, 88); kw_out(bj, 0); /* --- x0 y0 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 89); kw_out(bj, 0); /* --- x0+deltax y0 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + dinner.deltax + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y1-deltay moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - dinner.deltay - douter.d); kw_out(bj, 1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y1 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1-deltax y1 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - dinner.deltax - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x0 y0+deltay moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + dinner.deltay + douter.d); kw_out(bj, 1); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- closepath */ kw_out(bj, 91); kw_out(bj, 1); /* --- fill */ kw_out(bj, 92); kw_out(bj, 0); /* --- newpath */ kw_out(bj, 88); kw_out(bj, 0); /* --- x0 y1 moveto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 89); kw_out(bj, 0); /* --- x0+deltax y1 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + dinner.deltax + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y0+deltay lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + dinner.deltay - douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1 y0 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x1-deltax y0 lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x1 - dinner.deltax - douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y0 + douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- x0 y1-deltay lineto */ dkstream_puts_double(bj->os, (bj->trans).iu.x0 + douter.d); kw_out(bj, 1); dkstream_puts_double(bj->os, (bj->trans).iu.y1 - dinner.deltay - douter.d); kw_out(bj, 1); kw_out(bj, 90); kw_out(bj, 0); /* --- closepath */ kw_out(bj, 91); kw_out(bj, 1); /* --- fill */ kw_out(bj, 92); kw_out(bj, 0); if((bj->bo2)->opt & BMEPS_OPT_SHOWPAGE) { kw_out(bj, 19); kw_out(bj, 0); } } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_ERROR, 72); bj->exval = 1; } $? "- internal_draft" } static void run_internal DK_P2(BJ *,bj, int,howto) { BO bo; int l = 2; size_t kwno; long frameno; char buffer[64], *ptr; $? "+ run_internal %d", howto bj->bo2 = &bo; dkmem_cpy(bj->bo2, bj->bo, sizeof(BO)); if(bj->frame_s != bj->frame_e) { (bj->bo2)->opt |= BMEPS_OPT_SHOWPAGE; } switch((bj->bo2)->l) { case BMEPS_PS_LEVEL_1: l = 1; break; case BMEPS_PS_LEVEL_3: l = 3; break; default: l = 2; break; } sprintf(buffer, "-%d.0", l); kw_out(bj, 2); dkstream_puts(bj->os, buffer); if(((bj->bo2)->opt & BMEPS_OPT_DSC) && (!((bj->bo2)->opt & BMEPS_OPT_SHOWPAGE))) { kw_out(bj, 1); kw_out(bj, 4); dkstream_puts(bj->os, buffer); } kw_out(bj, 0); bmeps_eps_bb(bj); if((bj->bo2)->opt & BMEPS_OPT_DSC) { for(kwno = 5; kwno < 15; kwno++) { kw_out(bj, kwno); switch((int)kwno) { case 6: { if(bj->infname) { ptr = dksf_get_last_filename(bj->infname); if(ptr) { dkstream_puts(bj->os, ptr); } else { kw_out(bj, 17); } } else { kw_out(bj, 17); } } break; case 7: { sprintf( buffer, "%lu", (1UL + bj->frame_e - bj->frame_s) ); dkstream_puts(bj->os, buffer); } break; } kw_out(bj, 0); } } for(frameno = bj->frame_s; frameno <= bj->frame_e; frameno++) { $? ". frame_s=%ld frame_e=%ld frameno=%ld", bj->frame_s, bj->frame_e, frameno if(dkbif_set_frame(bj->bif, frameno)) { bmeps_tool_calculate_areas(bj); if((bj->bo2)->opt & BMEPS_OPT_DSC) { unsigned long ul; ul = frameno - (bj->frame_s) + 1UL; sprintf(buffer, "%lu %lu", ul, ul); kw_out(bj, 18); dkstream_puts(bj->os, buffer); kw_out(bj, 0); } switch(howto) { case 1: { #if DK_HAVE_JPEGLIB_H internal_dct(bj); #else internal_conventional(bj); #endif } break; case 2: { internal_draft(bj); } break; default: { internal_conventional(bj); } break; } } } if((bj->bo2)->opt & BMEPS_OPT_DSC) { for(kwno = 15; kwno < 17; kwno++) { kw_out(bj, kwno); kw_out(bj, 0); } } bj->bo2 = NULL; $? "- run_internal" } void bmeps_eps_conventional DK_P1(BJ *,bj) { $? "+ bmeps_eps_conventional" run_internal(bj, 0); $? "- bmeps_eps_conventional" } void bmeps_eps_dct DK_P1(BJ *,bj) { $? "+ bmeps_eps_dct" run_internal(bj, 1); $? "- bmeps_eps_dct" } void bmeps_eps_draft DK_P1(BJ *,bj) { $? "+ bmeps_eps_draft" run_internal(bj, 2); $? "- bmeps_eps_draft" } #ifndef LINT static char sccs_id[] = { "@(#)b2eps.ctr 1.4 01/03/07\tbmeps2" }; #endif