#define B2BO_C 1 #include "bmepsi.h" $(trace-include) static char str_epsoutput[] = { "EPSOUTPUT" }; static char *str_output_types[] = { "ps", "pdf", "bb", NULL }; static char *str_pdf_levels[] = { "1.2", "1.3", "1.4", NULL }; static char commasep[] = { ", \t\r\n" }; static char colonsep[] = { ": \t\r\n" }; static char dotsep[] = { ". \t\r\n" }; static char cfgfilename[] = { "bmeps.conf" }; static char *str_encodings[] = { "a$scii85", "r$un-length", "l$zw", /* reserved for future use */ "f$late", "d$ct", NULL }; static char *str_fit_methods[] = { "w$idth", "h$eight", "p$age", NULL }; static MSENTRY media_sizes[] = { { "A3", {0.0, 0.0, 842.0, 1190.0, 0.0, 0.0, 842.0, 1190.0 } }, { "A4", {0.0, 0.0, 595.0, 842.0, 0.0, 0.0, 595.0, 842.0 } }, { "A5", {0.0, 0.0, 420.0, 595.0, 0.0, 0.0, 420.0, 595.0 } }, { "B4", {0.0, 0.0, 729.0, 1032.0, 0.0, 0.0, 729.0, 1032.0 } }, { "B5", {0.0, 0.0, 516.0, 729.0, 0.0, 0.0, 516.0, 729.0 } }, { "Letter", {0.0, 0.0, 612.0, 792.0, 0.0, 0.0, 612.0, 792.0 } }, { "Legal", {0.0, 0.0, 612.0, 1008.0, 0.0, 0.0, 612.0, 1008.0 } }, { "Tabloid", {0.0, 0.0, 792.0, 1224.0, 0.0, 0.0, 792.0, 1224.0 } }, { "Ledger", {0.0, 0.0, 1224.0, 792.0, 0.0, 0.0, 1224.0, 792.0 } }, { "Statement", {0.0, 0.0, 396.0, 612.0, 0.0, 0.0, 396.0, 612.0 } }, { "Executive", {0.0, 0.0, 540.0, 720.0, 0.0, 0.0, 540.0, 720.0 } }, { "Folio", {0.0, 0.0, 612.0, 936.0, 0.0, 0.0, 612.0, 936.0 } }, { "Quarto", {0.0, 0.0, 610.0, 780.0, 0.0, 0.0, 610.0, 780.0 } }, { "10x14", {0.0, 0.0, 720.0, 1008.0, 0.0, 0.0, 720.0, 1008.0 } }, { NULL, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } } }; static char *pk[] = { "/language", NULL }; static char *cmd00[] = { "o$utput", "t$ype", NULL }; static char *cmd01[] = { "l$evel", NULL }; static char *cmd02[] = { "e$ncoding", NULL }; static char *cmd03[] = { "b$ackground", NULL }; static char *cmd04[] = { "i$mage", "m$ask", "t$rigger", "l$evel", NULL }; static char *cmd05[] = { "m$edia", "s$ize", NULL }; static char *cmd06[] = { "s$eparated", "d$ictionary", NULL }; static char *cmd07[] = { "o$perator", "d$ictionary", NULL }; static char *cmd08[] = { "m$ultiple", "d$ata", "s$ources", NULL }; static char *cmd09[] = { "a$lways", "u$se", "d$efault", "b$ackground", NULL }; static char *cmd10[] = { "m$ix", NULL }; static char *cmd11[] = { "c$reate", "i$mage", "m$ask", NULL }; static char *cmd12[] = { "dsc", "c$omments", NULL }; static char *cmd13[] = { "sh$owpage", NULL }; static char *cmd14[] = { "v$mreclaim", NULL }; static char *cmd15[] = { "u$se", "r$esolution", "c$hunk", NULL }; static char *cmd16[] = { "t$ransfer", "a$lpha", "c$hannel", NULL }; static char *cmd17[] = { "p$aper", "s$ize", NULL }; static char *cmd18[] = { "d$raft", NULL }; static char *cmd19[] = { "i$nterpolate", NULL }; static char *cmd20[] = { "c$olor", NULL }; static char *cmd21[] = { "j$fif", "s$of", "s$et", NULL }; static char *cmd22[] = { "j$peg", "i$nterpolate", NULL }; static char *cmd23[] = { "p$df", "f$it", NULL }; static char **cmd[] = { cmd00, cmd01, cmd02, cmd03, cmd04, cmd05, cmd06, cmd07, cmd08, cmd09, cmd10, cmd11, cmd12, cmd13, cmd14, cmd15, cmd16, cmd17, cmd18, cmd19, cmd20, cmd21, cmd22, cmd23, NULL }; static char *ft_suffixes[]= { "pdf", "eps", "ps", "bb", NULL }; static BO bo_ps1 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_1, 0, 0, ( BMEPS_OPT_ALPHA_MIX ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_bb = { BMEPS_OUTPUT_TYPE_BB, BMEPS_PS_LEVEL_1, 0, 0, 0UL, 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_ps2 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_2, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_RUNLENGTH |BMEPS_ENCODING_DCT ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE |BMEPS_OPT_SEPARATED_DATA ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_ps3 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_3, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_eps1 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_1, 0, 0, ( BMEPS_OPT_ALPHA_MIX ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_eps2 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_2, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_RUNLENGTH ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE |BMEPS_OPT_DSC |BMEPS_OPT_SEPARATED_DATA ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_eps3 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_3, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE |BMEPS_OPT_DSC ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_pdf12 = { BMEPS_OUTPUT_TYPE_PDF, BMEPS_PDF_LEVEL_12, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_pdf13 = { BMEPS_OUTPUT_TYPE_PDF, BMEPS_PDF_LEVEL_13, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_pdf14 = { BMEPS_OUTPUT_TYPE_PDF, BMEPS_PDF_LEVEL_14, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_TRANSFER_ALPHA |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; static BO bo_faxps2 = { BMEPS_OUTPUT_TYPE_EPS, BMEPS_PS_LEVEL_2, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_DCT |BMEPS_ENCODING_RUNLENGTH ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_ALPHA_MIX |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_COLOR_OUTPUT |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE |BMEPS_OPT_PAPER_SIZE |BMEPS_OPT_SHOWPAGE |BMEPS_OPT_DSC |BMEPS_OPT_SEPARATED_DATA ), 0UL, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 595.0, 842.0, 0.0, 0.0, 595.0, 842.0 } }; static BO bo_faxpdf = { BMEPS_OUTPUT_TYPE_PDF, BMEPS_PDF_LEVEL_14, ( BMEPS_ENCODING_ASCII85 |BMEPS_ENCODING_RUNLENGTH |BMEPS_ENCODING_DCT |BMEPS_ENCODING_FLATE ), (DKBIF_JFIF_SOF0 | DKBIF_JFIF_SOF1), ( BMEPS_OPT_TRANSFER_ALPHA |BMEPS_OPT_OPERATOR_DICTIONARY |BMEPS_OPT_DICTIONARY |BMEPS_OPT_INTERPOLATE |BMEPS_OPT_PAPER_SIZE ), BMEPS_PDFOPT_FIT_WIDTH, 1.0, 1.0, 1.0, 0.000001, { 0.0, 0.0, 595.0, 842.0, 0.0, 0.0, 595.0, 842.0 } }; static BOENTRY boentry[] = { { "ps1", &bo_ps1 }, { "ps2", &bo_ps2 }, { "ps3", &bo_ps3 }, { "ps", &bo_ps2 }, { "eps1", &bo_eps1 }, { "eps2", &bo_eps2 }, { "eps3", &bo_eps3 }, { "eps", &bo_eps2 }, { "faxps", &bo_faxps2 }, { "pdf12", &bo_pdf12 }, { "pdf13", &bo_pdf13 }, { "pdf14", &bo_pdf14 }, { "pdf", &bo_pdf14 }, { "faxpdf", &bo_faxpdf }, { "bb", &bo_bb }, { NULL, NULL } }; static BO * search_default_configuration DK_P1(char *,n) { BO *back = NULL; BOENTRY *runner; runner = boentry; while((runner->n) && (back == NULL)) { if(dkstr_casecmp(runner->n, n) == 0) { back = runner->bo; } runner++; } return back; } static int boe_compare DK_P3(void *,l, void *,r, int,cr) { int back = 0; BOENTRY *pl, *pr; pl = (BOENTRY *)l; pr = (BOENTRY *)r; if(l) { if(r) { switch(cr) { case 1: { if(pl->n) { back = dkstr_casecmp(pl->n, (char *)r); } else { back = -1; } } break; default: { if(pl->n) { if(pr->n) { back = dkstr_casecmp(pl->n, pr->n); } else { back = 1; } } else { if(pr->n) { back = -1; } } } break; } } else { back = 1; } } else { if(r) { back = -1; } } return back; } static void boe_delete DK_P1(BOENTRY *,boe) { if(boe) { if(boe->n) { char *x; x = boe->n; dk_delete(x); } if(boe->bo) { BO *bo; bo = boe->bo; dk_delete(bo); } boe->n = NULL; boe->bo = NULL; dk_delete(boe); } } static BOENTRY * boe_new DK_P1(char *,n) { BOENTRY *back = NULL; back = dk_new(BOENTRY,1); if(back) { back->n = dkstr_dup(n); back->bo = dk_new(BO,1); if(!((back->n) && (back->bo))) { boe_delete(back); back = NULL; } } return back; } static unsigned long change_opt_set DK_P5(\ unsigned long,ov, unsigned long, fl,\ char *,s, int,d, int *,b\ ) { unsigned long back; int value; back = ov; value = d; if(s) { if(dkstr_is_bool(s)) { if(dkstr_is_on(s)) { value = 1; } else { value = 0; } } } if(value) { back = ov | fl; } else { back &= (~(fl)); } return back; } static void set_media_size DK_P4(BJ *,bj, BO *,bo, char *,l, int *,back) { char *p1 = NULL, *p2 = NULL, *p3 = NULL, *p4 = NULL; char *p5 = NULL, *p6 = NULL, *p7 = NULL, *p8 = NULL; double px0 = 0.0, py0 = 0.0, px1 = 0.0, py1 = 0.0; double bx0 = 0.0, by0 = 0.0, bx1 = 0.0, by1 = 0.0; MSENTRY *mptr = NULL; $? "+ set_media_size \"%s\"", l p1 = dkstr_start(l, colonsep); if(p1) { p2 = dkstr_next(p1, colonsep); if(p2) { p3 = dkstr_next(p2, colonsep); if(p3) { p4 = dkstr_next(p3, colonsep); if(p4) { p5 = dkstr_next(p4, colonsep); if(p5) { p6 = dkstr_next(p5, colonsep); if(p6) { p7 = dkstr_next(p6, colonsep); if(p7) { p8 = dkstr_next(p7, colonsep); if(p8) { $? ". 8 values" if(sscanf(p1, "%lf", &px0) == 1) { if(sscanf(p1, "%lf", &py0) == 1) { if(sscanf(p1, "%lf", &px1) == 1) { if(sscanf(p1, "%lf", &py1) == 1) { if(sscanf(p1, "%lf", &bx0) == 1) { if(sscanf(p1, "%lf", &by0) == 1) { if(sscanf(p1, "%lf", &bx1) == 1) { if(sscanf(p1, "%lf", &by1) == 1) { (bo->ms).px0 = px0; (bo->ms).py0 = py0; (bo->ms).px1 = px1; (bo->ms).py1 = py1; (bo->ms).bx0 = bx0; (bo->ms).by0 = by0; (bo->ms).bx1 = bx1; (bo->ms).by1 = by1; bo->opt |= BMEPS_OPT_PAPER_SIZE; *back = 1; $? ". ok" } } } } } } } } } else { } } else { } } } else { $? ". 4 values" if(sscanf(p1, "%lf", &px0) == 1) { if(sscanf(p1, "%lf", &py0) == 1) { if(sscanf(p1, "%lf", &px1) == 1) { if(sscanf(p1, "%lf", &py1) == 1) { (bo->ms).px0 = px0; (bo->ms).py0 = py0; (bo->ms).px1 = px1; (bo->ms).py1 = py1; (bo->ms).bx0 = px0; (bo->ms).by0 = py0; (bo->ms).bx1 = px1; (bo->ms).by1 = py1; bo->opt |= BMEPS_OPT_PAPER_SIZE; *back = 1; $? ". ok" } } } } } } else { } } else { } } else { int cc; $? ". media name" mptr = media_sizes; cc = 1; while((mptr->name) && (cc)) { if(dkstr_casecmp(mptr->name, p1) == 0) { cc = 0; bo->opt |= BMEPS_OPT_PAPER_SIZE; dkmem_cpy(&(bo->ms), &(mptr->ms), sizeof(MEDIASIZE)); *back = 1; $? ". ok" } mptr++; } } } $? "- set_media_size" } static char str_asterisk[] = { "*" }; static char str_all[] = { "all" }; static dk_bif_sof_t retrieve_jfif_sof_set DK_P1(char *,line) { int i; char *p, *n; dk_bif_sof_t back = 0; if(line) { p = dkstr_start(line, colonsep); while(p) { n = dkstr_next(p, colonsep); if(sscanf(p, "%d", &i) == 1) { switch(i) { case 0: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF0); } break; case 1: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF1); } break; case 2: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF2); } break; case 3: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF3); } break; case 5: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF5); } break; case 6: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF6); } break; case 7: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF7); } break; case 8: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF8); } break; case 9: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF9); } break; case 10: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF10); } break; case 11: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF11); } break; case 13: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF13); } break; case 14: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF14); } break; case 15: { back = dkbif_jfif_set_sof(back, DKBIF_I_SOF15); } break; } } else { if(strcmp(p, str_asterisk) == 0) { back = 0xFFFF; } else { if(strcmp(p, str_all) == 0) { back = 0xFFFF; } } } p = n; } } return back; } int bmeps_bo_add_line DK_P3(BJ *,bj, BO *,bo, char *,l) { int back = 0; char *p1, *p2, *p3, *p4, *parts[16]; size_t nparts; int is_removing = 0; int fl, act; double r, g, b; $? "+ bmeps_bo_add_line \"%s\"", l p1 = l; p2 = dkstr_chr(p1, '='); if(p2) { *(p2++) = '\0'; dkstr_chomp(p1, NULL); p2 = dkstr_start(p2, NULL); if(p2) { dkstr_chomp(p2, NULL); #if VERSION_BEFORE_2006_10_18 nparts = dkstr_explode(parts, 15, p1, colonsep); #else nparts = dkstr_explode(parts, 15, p1, dotsep); #endif if(nparts > 0) { act = dkstr_find_multi_part_abbr(parts, cmd, '$', 0); $? ". act = %d", act switch(act) { case 0: { // output type if(p2) { switch(dkstr_array_index(str_output_types, p2, 0)) { case 0: { bo->ot = BMEPS_OUTPUT_TYPE_EPS; back = 1; } break; case 1: { bo->ot = BMEPS_OUTPUT_TYPE_PDF; back = 1; } break; case 2: { bo->ot = BMEPS_OUTPUT_TYPE_BB; back = 1; } break; default: { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p2); bj->exval = 1; } break; } } } break; case 1: { // ps level switch(bo->ot) { case BMEPS_OUTPUT_TYPE_PDF: { if(p2) { switch(dkstr_array_index(str_pdf_levels, p2, 0)) { case 0: { bo->l = BMEPS_PDF_LEVEL_12; back = 1; } break; case 1: { bo->l = BMEPS_PDF_LEVEL_13; back = 1; } break; case 2: { bo->l = BMEPS_PDF_LEVEL_14; back = 1; } break; default: { bo->l = BMEPS_PDF_LEVEL_14; bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p2); } break; } } } break; default: { int i; if(p2) { if(sscanf(p2, "%d", &i) == 1) { if(i < 1) i = 1; if(i > 3) i = 3; switch(i) { case 1: { bo->l = BMEPS_PS_LEVEL_1; back = 1; } break; case 2: { bo->l = BMEPS_PS_LEVEL_2; back = 1; } break; case 3: { bo->l = BMEPS_PS_LEVEL_3; back = 1; } break; } } else { bo->l = BMEPS_PS_LEVEL_2; bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p2); } } } break; } } break; case 2: { // encoding if(p2) { is_removing = 0; if(*p2 == '-') { is_removing = 1; p2++; } else { if(*p2 == '+') { p2++; } else { bo->enc = 0; } } while(p2) { p3 = dkstr_next(p2, colonsep); fl = 0; switch(dkstr_array_abbr(str_encodings, p2, '$', 0)) { case 0: { fl = BMEPS_ENCODING_ASCII85; back = 1; } break; case 1: { fl = BMEPS_ENCODING_RUNLENGTH; back = 1; } break; case 2: { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_WARNING, 78); } break; case 3: { fl = BMEPS_ENCODING_FLATE; back = 1; } break; case 4: { fl = BMEPS_ENCODING_DCT; back = 1; } break; } if(is_removing) { bo->enc &= (~(fl)); } else { bo->enc |= fl; } p2 = p3; } } } break; case 3: { // background r = g = b = 0; if(p2) { p3 = dkstr_next(p2, colonsep); if(p3) { p4 = dkstr_next(p3, colonsep); if(p4) { if(sscanf(p2, "%lf", &r) == 1) { if(sscanf(p3, "%lf", &g) == 1) { if(sscanf(p4, "%lf", &b) == 1) { bo->dbgr = r; bo->dbgg = g; bo->dbgb = b; back = 1; $? ". background = %lg %lg %lg", r, g, b } } } } } } } break; case 4: { // image mask trigger level if(p2) { if(sscanf(p2, "%lf", &r) == 1) { bo->mtl = r; back = 1; } } } break; case 5: { // media size set_media_size(bj, bo, p2, &back); } break; case 6: { // separated dictionary bo->opt = change_opt_set( bo->opt, BMEPS_OPT_DICTIONARY, p2, 1, &back ); } break; case 7: { // operator dictionary bo->opt = change_opt_set( bo->opt, BMEPS_OPT_OPERATOR_DICTIONARY, p2, 1, &back ); } break; case 8: { // separated color streams bo->opt = change_opt_set( bo->opt, BMEPS_OPT_SEPARATED_DATA, p2, 1, &back ); } break; case 9: { // always use default background bo->opt = change_opt_set( bo->opt, BMEPS_OPT_PREFER_SPEC_BG, p2, 1, &back ); } break; case 10: { // mix bo->opt = change_opt_set( bo->opt, BMEPS_OPT_ALPHA_MIX, p2, 1, &back ); } break; case 11: { // create image mask bo->opt = change_opt_set( bo->opt, BMEPS_OPT_IMAGE_MASK, p2, 1, &back ); } break; case 12: { // dsc bo->opt = change_opt_set( bo->opt, BMEPS_OPT_DSC, p2, 1, &back ); } break; case 13: { // showpage bo->opt = change_opt_set( bo->opt, BMEPS_OPT_SHOWPAGE, p2, 1, &back ); } break; case 14: { // vmreclaim bo->opt = change_opt_set( bo->opt, BMEPS_OPT_VMRECLAIM, p2, 1, &back ); } break; case 15: { // use resolution chunk $? ". use resolution chunk" bo->opt = change_opt_set( bo->opt, BMEPS_OPT_RESOLUTION, p2, 1, &back ); } break; case 16: { // transfer alpha channel bo->opt = change_opt_set( bo->opt, BMEPS_OPT_TRANSFER_ALPHA, p2, 1, &back ); } break; case 17: { // paper size // bo->opt = change_opt_set(bo->opt, BMEPS_OPT_DICTIONARY, p2, 1); set_media_size(bj, bo, p2, &back); } break; case 18: { // draft bo->opt = change_opt_set( bo->opt, BMEPS_OPT_DRAFT, p2, 1, &back ); } break; case 19: { // interpolate bo->opt = change_opt_set( bo->opt, BMEPS_OPT_INTERPOLATE, p2, 1, &back ); } break; case 20: { // color bo->opt = change_opt_set( bo->opt, BMEPS_OPT_COLOR_OUTPUT, p2, 1, &back ); } break; case 21: { // jfif sof set bo->jfif_s = retrieve_jfif_sof_set(p2); } break; case 22: { bo->opt = change_opt_set( bo->opt, BMEPS_OPT_JPEG_INTERPOLATE, p2, 1, &back ); } break; case 23: { if(p2) { switch(dkstr_array_abbr(str_fit_methods, p2, '$', 0)) { case 0: { bo->pdfopt = ((bo->pdfopt & (~(BMEPS_PDFOPT_FIT_MASK))) | BMEPS_PDFOPT_FIT_WIDTH); } break; case 1: { bo->pdfopt = ((bo->pdfopt & (~(BMEPS_PDFOPT_FIT_MASK))) | BMEPS_PDFOPT_FIT_HEIGHT); } break; case 2: { bo->pdfopt = ((bo->pdfopt & (~(BMEPS_PDFOPT_FIT_MASK))) | BMEPS_PDFOPT_FIT_PAGE); } break; } } } break; } } else { /* ERROR: Syntax (empty line) */ } } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p1); } } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p1); } $? "- bmeps_bo_add_line %d", back return back; } static int read_configuration DK_P5(BJ *,bj, dk_app_t *,a, char *,n, dk_storage_t *,s, dk_storage_iterator_t *,si) { dk_stream_t *ipf = NULL; /* input file */ char inputline[256], *p1 = NULL, *p2 = NULL; int back = 0; BOENTRY *cboe = NULL, *baseboe = NULL; BO *cbo = NULL, *basebo = NULL; int cc = 0; $? "+ read_configuration" ipf = dkapp_read_cfg(a, cfgfilename); if(ipf) { back = 1; cc = 1; while(cc) { if(dkstream_gets(ipf, inputline, sizeof(inputline))) { dkstr_delcomm(inputline, '#'); p1 = dkstr_start(inputline, NULL); if(p1) { dkstr_chomp(p1, NULL); if(*p1 == '[') { $? ". start new section" cboe = NULL; cbo = NULL; p1++; p1 = dkstr_start(p1, NULL); if(p1) { p2 = dkstr_chr(p1, ']'); if(p2) { *p2 = '\0'; p2 = dkstr_chr(p1, ':'); if(p2) { *(p2++) = '\0'; dkstr_chomp(p2, NULL); } dkstr_chomp(p1, NULL); cboe = boe_new(p1); if(cboe) { if(dksto_add(s, (void *)cboe)) { cbo = cboe->bo; dkmem_cpy(cbo, &bo_ps2, sizeof(BO)); if(p2) { basebo = search_default_configuration(p2); if(!basebo) { baseboe = dksto_it_find_like(si, (void *)p2, 1); if(baseboe) { basebo = baseboe->bo; } } if(basebo) { dkmem_cpy(cbo, basebo, sizeof(BO)); } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 75, 76, p2); bj->exval = 1; } } } else { bmeps_tool_error_memory(bj); bj->exval = 1; boe_delete(cboe); cboe = NULL; cbo = NULL; } } else { bmeps_tool_error_memory(bj); bj->exval = 1; } } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, p1); } } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, inputline); } } else { $? ". add entry to section" if(cbo) { if(!bmeps_bo_add_line(bj, cbo, p1)) { $? "! error while adding line" back = 0; } } } } } else { cc = 0; } } dkstream_close(ipf); ipf = NULL; } $? "- read_configuration %d", back return back; } static void search_config_file DK_P4(BJ *,bj, dk_app_t *,a, char *,n, BO *,bo) { dk_storage_t *conf; dk_storage_iterator_t *confi; BOENTRY *boe; $? "+ search_config_file" if((a) && (n)) { conf = dksto_open(0); if(conf) { dksto_set_comp(conf, boe_compare, 0); confi = dksto_it_open(conf); if(confi) { if(read_configuration(bj, a,n,conf,confi)) { boe = dksto_it_find_like(confi, n, 1); if(boe) { if(boe->bo) { dkmem_cpy(bo, boe->bo, sizeof(BO)); } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 75, 76, n); bj->exval = 1; } } dksto_it_reset(confi); while((boe = (BOENTRY *)dksto_it_next(confi)) != NULL) { $? ". delete BOENTRY name=\"%s\" data=%s", TR_STR(boe->n), TR_PTR(boe->bo) boe_delete(boe); } } dksto_it_close(confi); confi = NULL; } else { bmeps_tool_error_memory(bj); bj->exval = 1; } dksto_close(conf); conf = NULL; } else { bmeps_tool_error_memory(bj); bj->exval = 1; } } $? "- search_config_file" } int bmeps_bo_get_pref_lang DK_P3(BJ *,bj, char *,namebuffer,size_t,sz) { int back = 0; back = dkapp_get_pref(bj->a, pk[0], namebuffer, sz, 0); return back; } void bmeps_bo_get_configuration DK_P2(BJ *,bj, char *,langdef) { BO bobuffer, *src = NULL; char *l = NULL, *myl = NULL, *confname = NULL, *p1, *p2; char namebuffer[NAME_BUFFER_SIZE]; $? "+ bmeps_bo_get_configuration" l = langdef; if(!l) { char *ptr; int i; if(bj->o1) { ptr = dksf_get_file_type_dot(bj->o1); if(ptr) { ptr++; i = dkstr_array_index(ft_suffixes, ptr, 0); if(i > -1) { l = ft_suffixes[i]; } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_WARNING, 83, 84, ptr); } } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_WARNING, 82); } } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_WARNING, 81); } } if(!l) { $? ". checking environment" l = getenv(str_epsoutput); } if(!l) { $? ". checking preferences" if(bj->a) { if(dkapp_get_pref(bj->a, pk[0], namebuffer, sizeof(namebuffer), 0)) { l = namebuffer; } } } if(l) { $? ". lang=\"%s\"", l if(!langdef) { /* Configuration ... is used */ bmeps_tool_msg_3(bj, DK_LOG_LEVEL_INFO, 85, 86, l); } myl = dkstr_dup(l); if(myl) { $? ". private copy ok" confname = dkstr_start(myl, NULL); if(confname) { $? ". not empty" p1 = dkstr_next(confname, commasep); // if(p1) { *(p1++) = '\0'; } $? ". p1=\"%s\"", p1 dkmem_cpy(&bobuffer, &bo_ps2, sizeof(BO)); src = search_default_configuration(confname); if(src) { dkmem_cpy(&bobuffer, src, sizeof(BO)); } else { search_config_file(bj, bj->a, confname, &bobuffer); } src = &bobuffer; if(p1) { $? ". p1=\"%s\"", p1 while(p1) { p2 = dkstr_next(p1, commasep); $? ". p1=\"%s\"", p1 (void)bmeps_bo_add_line(bj, &bobuffer, p1); p1 = p2; } } } else { bmeps_tool_msg_3(bj, DK_LOG_LEVEL_ERROR, 73, 74, myl); } dk_delete(myl); } else { bmeps_tool_error_memory(bj); bj->exval = 1; } } else { bmeps_tool_msg_1(bj, DK_LOG_LEVEL_INFO, 77); } if(!src) { src = &bo_ps2; } if(src) { dkmem_cpy(bj->bo, src, sizeof(BO)); } bmeps_tool_correct_bo(bj->bo); $? "- bmeps_bo_get_configuration" } #ifndef LINT static char sccs_id[] = { "@(#)b2bo.ctr 1.9 01/04/07\tbmeps2" }; #endif