|
|
|
@ -929,32 +929,32 @@ repeat: |
|
|
|
|
|
|
|
|
|
/* Figure out the correction data table to use */ |
|
|
|
|
if (ctx->type == P_MITSU_D70X) { |
|
|
|
|
job->laminatefname = CORRTABLE_PATH "/D70MAT01.raw"; |
|
|
|
|
job->lutfname = CORRTABLE_PATH "/CPD70L01.lut"; |
|
|
|
|
job->laminatefname = "D70MAT01.raw"; |
|
|
|
|
job->lutfname = "CPD70L01.lut"; |
|
|
|
|
|
|
|
|
|
if (mhdr.speed == 3) { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD70S01.cpc"; |
|
|
|
|
job->cpcfname = "CPD70S01.cpc"; |
|
|
|
|
} else if (mhdr.speed == 4) { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD70U01.cpc"; |
|
|
|
|
job->cpcfname = "CPD70U01.cpc"; |
|
|
|
|
} else { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD70N01.cpc"; |
|
|
|
|
job->cpcfname = "CPD70N01.cpc"; |
|
|
|
|
} |
|
|
|
|
if (mhdr.hdr[3] != 0x01) { |
|
|
|
|
WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); |
|
|
|
|
mhdr.hdr[3] = 0x01; |
|
|
|
|
} |
|
|
|
|
} else if (ctx->type == P_MITSU_D80) { |
|
|
|
|
job->laminatefname = CORRTABLE_PATH "/D80MAT01.raw"; |
|
|
|
|
job->lutfname = CORRTABLE_PATH "/CPD80L01.lut"; |
|
|
|
|
job->laminatefname = "D80MAT01.raw"; |
|
|
|
|
job->lutfname = "CPD80L01.lut"; |
|
|
|
|
|
|
|
|
|
if (mhdr.speed == 3) { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD80S01.cpc"; |
|
|
|
|
job->ecpcfname = CORRTABLE_PATH "/CPD80E01.cpc"; |
|
|
|
|
job->cpcfname = "CPD80S01.cpc"; |
|
|
|
|
job->ecpcfname = "CPD80E01.cpc"; |
|
|
|
|
} else if (mhdr.speed == 4) { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD80U01.cpc"; |
|
|
|
|
job->cpcfname = "CPD80U01.cpc"; |
|
|
|
|
job->ecpcfname = NULL; |
|
|
|
|
} else { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPD80N01.cpc"; |
|
|
|
|
job->cpcfname = "CPD80N01.cpc"; |
|
|
|
|
job->ecpcfname = NULL; |
|
|
|
|
} |
|
|
|
|
if (mhdr.hdr[3] != 0x01) { |
|
|
|
@ -962,28 +962,28 @@ repeat: |
|
|
|
|
mhdr.hdr[3] = 0x01; |
|
|
|
|
} |
|
|
|
|
} else if (ctx->type == P_MITSU_K60) { |
|
|
|
|
job->laminatefname = CORRTABLE_PATH "/S60MAT02.raw"; |
|
|
|
|
job->lutfname = CORRTABLE_PATH "/CPS60L01.lut"; |
|
|
|
|
job->laminatefname = "S60MAT02.raw"; |
|
|
|
|
job->lutfname = "CPS60L01.lut"; |
|
|
|
|
|
|
|
|
|
if (mhdr.speed == 3 || mhdr.speed == 4) { |
|
|
|
|
mhdr.speed = 4; /* Ultra Fine */ |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPS60T03.cpc"; |
|
|
|
|
job->cpcfname = "CPS60T03.cpc"; |
|
|
|
|
} else { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/CPS60T01.cpc"; |
|
|
|
|
job->cpcfname = "CPS60T01.cpc"; |
|
|
|
|
} |
|
|
|
|
if (mhdr.hdr[3] != 0x00) { |
|
|
|
|
WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); |
|
|
|
|
mhdr.hdr[3] = 0x00; |
|
|
|
|
} |
|
|
|
|
} else if (ctx->type == P_KODAK_305) { |
|
|
|
|
job->laminatefname = CORRTABLE_PATH "/EK305MAT.raw"; // Same as K60
|
|
|
|
|
job->lutfname = CORRTABLE_PATH "/EK305L01.lut"; |
|
|
|
|
job->laminatefname = "EK305MAT.raw"; // Same as K60
|
|
|
|
|
job->lutfname = "EK305L01.lut"; |
|
|
|
|
|
|
|
|
|
if (mhdr.speed == 3 || mhdr.speed == 4) { |
|
|
|
|
mhdr.speed = 4; /* Ultra Fine */ |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/EK305T03.cpc"; |
|
|
|
|
job->cpcfname = "EK305T03.cpc"; |
|
|
|
|
} else { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/EK305T01.cpc"; |
|
|
|
|
job->cpcfname = "EK305T01.cpc"; |
|
|
|
|
} |
|
|
|
|
// XXX what about using K60 media if we read back the proper code?
|
|
|
|
|
if (mhdr.hdr[3] != 0x90) { |
|
|
|
@ -991,13 +991,13 @@ repeat: |
|
|
|
|
mhdr.hdr[3] = 0x90; |
|
|
|
|
} |
|
|
|
|
} else if (ctx->type == P_FUJI_ASK300) { |
|
|
|
|
job->laminatefname = CORRTABLE_PATH "/ASK300M2.raw"; /* Same as D70 */ |
|
|
|
|
job->laminatefname = "ASK300M2.raw"; /* Same as D70 */ |
|
|
|
|
job->lutfname = NULL; /* Printer does not come with external LUT */ |
|
|
|
|
if (mhdr.speed == 3 || mhdr.speed == 4) { |
|
|
|
|
mhdr.speed = 3; /* Super Fine */ |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/ASK300T3.cpc"; |
|
|
|
|
job->cpcfname = "ASK300T3.cpc"; |
|
|
|
|
} else { |
|
|
|
|
job->cpcfname = CORRTABLE_PATH "/ASK300T1.cpc"; |
|
|
|
|
job->cpcfname = "ASK300T1.cpc"; |
|
|
|
|
} |
|
|
|
|
if (mhdr.hdr[3] != 0x80) { |
|
|
|
|
WARNING("Print job has wrong submodel specifier (%x)\n", mhdr.hdr[3]); |
|
|
|
@ -1531,25 +1531,33 @@ static int mitsu70x_main_loop(void *vctx, const void *vjob) |
|
|
|
|
|
|
|
|
|
/* Load in the CPC file, if needed */ |
|
|
|
|
if (job->cpcfname && job->cpcfname != ctx->last_cpcfname) { |
|
|
|
|
char full[2048]; |
|
|
|
|
ctx->last_cpcfname = job->cpcfname; |
|
|
|
|
if (ctx->lib.cpcdata) |
|
|
|
|
ctx->lib.DestroyCPCData(ctx->lib.cpcdata); |
|
|
|
|
ctx->lib.cpcdata = ctx->lib.GetCPCData(job->cpcfname); |
|
|
|
|
|
|
|
|
|
snprintf(full, sizeof(full), "%s/%s", corrtable_path, job->cpcfname); |
|
|
|
|
|
|
|
|
|
ctx->lib.cpcdata = ctx->lib.GetCPCData(full); |
|
|
|
|
if (!ctx->lib.cpcdata) { |
|
|
|
|
ERROR("Unable to load CPC file '%s'\n", job->cpcfname); |
|
|
|
|
ERROR("Unable to load CPC file '%s'\n", full); |
|
|
|
|
return CUPS_BACKEND_CANCEL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Load in the secondary CPC, if needed */ |
|
|
|
|
if (job->ecpcfname != ctx->last_ecpcfname) { |
|
|
|
|
char full[2048]; |
|
|
|
|
ctx->last_ecpcfname = job->ecpcfname; |
|
|
|
|
if (ctx->lib.ecpcdata) |
|
|
|
|
ctx->lib.DestroyCPCData(ctx->lib.ecpcdata); |
|
|
|
|
|
|
|
|
|
snprintf(full, sizeof(full), "%s/%s", corrtable_path, job->ecpcfname); |
|
|
|
|
|
|
|
|
|
if (job->ecpcfname) { |
|
|
|
|
ctx->lib.ecpcdata = ctx->lib.GetCPCData(job->ecpcfname); |
|
|
|
|
ctx->lib.ecpcdata = ctx->lib.GetCPCData(full); |
|
|
|
|
if (!ctx->lib.ecpcdata) { |
|
|
|
|
ERROR("Unable to load CPC file '%s'\n", job->cpcfname); |
|
|
|
|
ERROR("Unable to load CPC file '%s'\n", full); |
|
|
|
|
return CUPS_BACKEND_CANCEL; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|