summaryrefslogtreecommitdiff
path: root/src/main/print-olympus.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/print-olympus.c')
-rw-r--r--src/main/print-olympus.c622
1 files changed, 458 insertions, 164 deletions
diff --git a/src/main/print-olympus.c b/src/main/print-olympus.c
index 5af9d28..ad26726 100644
--- a/src/main/print-olympus.c
+++ b/src/main/print-olympus.c
@@ -232,9 +232,12 @@ typedef struct /* printer specific parameters */
const char *adj_yellow;
const laminate_list_t *laminate;
const dyesub_media_list_t *media;
- const dyesub_stringlist_t *uiconstraints;
void (*job_start_func)(stp_vars_t *);
void (*job_end_func)(stp_vars_t *);
+ const stp_parameter_t *parameters;
+ int parameter_count;
+ int (*load_parameters)(const stp_vars_t *, const char *name, stp_parameter_t *);
+ void (*parse_parameters)(stp_vars_t *);
} dyesub_cap_t;
@@ -2279,7 +2282,7 @@ static void kodak_8500_printer_init(stp_vars_t *v)
/* Number of copies */
stp_putc(0x1b, v);
stp_putc(0x4e, v);
- stp_putc(1, v); /* XXX always 1 for now, up to 50 */
+ stp_putc(1, v); /* 1-50 */
dyesub_nputc(v, 0x00, 61);
/* Paper type. Fixed. */
stp_putc(0x1b, v);
@@ -2317,7 +2320,6 @@ static void kodak_8500_printer_init(stp_vars_t *v)
stp_putc(0x47, v);
dyesub_nputc(v, 0x00, 61);
-
/* Data header */
stp_putc(0x1b, v);
stp_putc(0x5a, v);
@@ -2382,7 +2384,7 @@ static void mitsu_cp3020d_printer_init(stp_vars_t *v)
/* Number of copies */
stp_putc(0x1b, v);
stp_putc(0x4e, v);
- stp_putc(1, v); /* XXX always 1 for now, up to 50 */
+ stp_putc(1, v); /* 1-50 */
dyesub_nputc(v, 0x00, 61);
/* Unknown */
stp_putc(0x1b, v);
@@ -2529,7 +2531,7 @@ static const dyesub_pagesize_t mitsu_cp9550_page[] =
DYESUB_LANDSCAPE},
{ "w288h432-div2", "2x6*2", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
- { "w360h504", "5x7", PT(1812,346)+1, PT(2402,346)+1, 0, 0, 0, 0,
+ { "w360h504", "5x7", PT(1812,346)+1, PT(2452,346)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
{ "w432h576", "6x8", PT(2152,346)+1, PT(2792,346)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
@@ -2537,6 +2539,8 @@ static const dyesub_pagesize_t mitsu_cp9550_page[] =
DYESUB_PORTRAIT},
{ "w432h648", "6x9", PT(2152,346)+1, PT(3146,346)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
+ /* XXX also 3.3x6 and 3.5x6!
+ XXX also 4x6*2, 4.4*6*2, 3x6*3, 2x6*4! (Built on 6x9 media) */
};
LIST(dyesub_pagesize_list_t, mitsu_cp9550_page_list, dyesub_pagesize_t, mitsu_cp9550_page);
@@ -2546,7 +2550,7 @@ static const dyesub_printsize_t mitsu_cp9550_printsize[] =
{ "346x346", "B7", 1240, 1812},
{ "346x346", "w288h432", 1416, 2152},
{ "346x346", "w288h432-div2", 1416, 2152},
- { "346x346", "w360h504", 1812, 2402},
+ { "346x346", "w360h504", 1812, 2452},
{ "346x346", "w432h576", 2152, 2792},
{ "346x346", "w432h612", 2152, 2956},
{ "346x346", "w432h648", 2152, 3146},
@@ -2580,7 +2584,7 @@ static void mitsu_cp9550_printer_init(stp_vars_t *v)
stp_putc(0x08, v);
stp_putc(0x03, v);
dyesub_nputc(v, 0x00, 19);
- stp_putc(0x01, v); /* This is Copies on other models.. */
+ stp_putc(0x01, v); /* Copies */
dyesub_nputc(v, 0x00, 2);
if (strcmp(privdata.pagesize,"w288h432-div2") == 0)
stp_putc(0x83, v);
@@ -2622,6 +2626,101 @@ static void mitsu_cp9550_printer_end(stp_vars_t *v)
stp_putc(0x00, v);
}
+/* Mitsubishi 9600D/DW */
+static const dyesub_resolution_t res_mitsu9600_dpi[] =
+{
+ { "300x300", 300, 300},
+ { "600x600", 600, 600},
+};
+
+LIST(dyesub_resolution_list_t, res_mitsu9600_dpi_list, dyesub_resolution_t, res_mitsu9600_dpi);
+
+static const dyesub_pagesize_t mitsu_cp9600_page[] =
+{
+ { "B7", "3.5x5", PT(1076,300)+1, PT(1572,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w288h432", "4x6", PT(1228,300)+1, PT(1868,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w360h504", "5x7", PT(1572,300)+1, PT(2128,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h576", "6x8", PT(1868,300)+1, PT(2442,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h612", "6x8.5", PT(1868,300)+1, PT(2564,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h648", "6x9", PT(1868,300)+1, PT(2730,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, mitsu_cp9600_page_list, dyesub_pagesize_t, mitsu_cp9600_page);
+
+static const dyesub_printsize_t mitsu_cp9600_printsize[] =
+{
+ { "300x300", "B7", 1076, 1572},
+ { "600x600", "B7", 2152, 3144},
+ { "300x300", "w288h432", 1228, 1868},
+ { "600x600", "w288h432", 2458, 3736},
+ { "300x300", "w360h504", 1572, 2128},
+ { "600x600", "w360h504", 3144, 4256},
+ { "300x300", "w432h576", 1868, 2442},
+ { "600x600", "w432h576", 3736, 4846},
+ { "300x300", "w432h612", 1868, 2564},
+ { "600x600", "w432h612", 3736, 5130},
+ { "300x300", "w432h648", 1868, 2730},
+ { "600x600", "w432h648", 3736, 5462},
+};
+
+LIST(dyesub_printsize_list_t, mitsu_cp9600_printsize_list, dyesub_printsize_t, mitsu_cp9600_printsize);
+
+static void mitsu_cp9600_printer_init(stp_vars_t *v)
+{
+ /* Parameters 1 */
+ stp_putc(0x1b, v);
+ stp_putc(0x57, v);
+ stp_putc(0x21, v);
+ stp_putc(0x2e, v);
+ stp_putc(0x00, v);
+ stp_putc(0x80, v);
+ stp_putc(0x00, v);
+ stp_putc(0x22, v);
+ stp_putc(0x00, v);
+ stp_putc(0x03, v);
+ dyesub_nputc(v, 0x00, 19);
+ stp_putc(0x01, v); /* Copies */
+ dyesub_nputc(v, 0x00, 19);
+ stp_putc(0x01, v);
+ /* Parameters 2 */
+ stp_putc(0x1b, v);
+ stp_putc(0x57, v);
+ stp_putc(0x20, v);
+ stp_putc(0x2e, v);
+ stp_putc(0x00, v);
+ stp_putc(0x0a, v);
+ stp_putc(0x10, v);
+ dyesub_nputc(v, 0x00, 7);
+ stp_put16_be(privdata.w_size, v);
+ stp_put16_be(privdata.h_size, v);
+ dyesub_nputc(v, 0x00, 32);
+ /* Parameters 3 */
+ stp_putc(0x1b, v);
+ stp_putc(0x57, v);
+ stp_putc(0x26, v);
+ stp_putc(0x2e, v);
+ stp_putc(0x00, v);
+ stp_putc(0x60, v);
+ dyesub_nputc(v, 0x00, 6);
+ stp_putc(0x01, v);
+ dyesub_nputc(v, 0x00, 37);
+}
+
+static void mitsu_cp9600_printer_end(stp_vars_t *v)
+{
+ /* Page Footer */
+ stp_putc(0x1b, v);
+ stp_putc(0x50, v);
+ stp_putc(0x48, v);
+ stp_putc(0x00, v);
+}
+
/* Mitsubishi 9810D/DW */
static const dyesub_pagesize_t mitsu_cp9810_page[] =
{
@@ -2805,8 +2904,100 @@ static const laminate_t mitsu_cpd70x_laminate[] =
LIST(laminate_list_t, mitsu_cpd70x_laminate_list, laminate_t, mitsu_cpd70x_laminate);
+/* This list is *not* translated */
+static const dyesub_stringitem_t mitsu70x_uiconstraints[] = {
+ /* PPD generation handles constraint reciprocation */
+ /* Basically, exclude Matte and "Fine" quality */
+ {"UIConstraints", "*StpLaminate Matte *StpPrintSpeed Fine"},
+};
+LIST(dyesub_stringlist_t, mitsu70x_uiconstraints_list, dyesub_stringitem_t, mitsu70x_uiconstraints);
+
+typedef struct
+{
+ const char *quality;
+ int laminate_offset;
+} mitsu70x_privdata_t;
+
+static mitsu70x_privdata_t mitsu70x_privdata;
+
+static const dyesub_stringitem_t mitsu70x_qualities[] =
+{
+ { "Fine", N_ ("Fine") },
+ { "SuperFine", N_ ("Super Fine") },
+ { "UltraFine", N_ ("Ultra Fine") }
+};
+LIST(dyesub_stringlist_t, mitsu70x_quality_list, dyesub_stringitem_t, mitsu70x_qualities);
+
+static const stp_parameter_t mitsu70x_parameters[] =
+{
+ {
+ "PrintSpeed", N_("Print Speed"), "Color=No,Category=Advanced Printer Setup",
+ N_("Print Speed"),
+ STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
+ STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0
+ },
+};
+#define mitsu70x_parameter_count (sizeof(mitsu70x_parameters) / sizeof(const stp_parameter_t))
+
+static int
+mitsu70x_load_parameters(const stp_vars_t *v, const char *name,
+ stp_parameter_t *description)
+{
+ int i;
+ const dyesub_cap_t *caps = dyesub_get_model_capabilities(
+ stp_get_model_id(v));
+
+ if (caps->parameter_count && caps->parameters)
+ {
+ for (i = 0; i < caps->parameter_count; i++)
+ if (strcmp(name, caps->parameters[i].name) == 0)
+ {
+ stp_fill_parameter_settings(description, &(caps->parameters[i]));
+ break;
+ }
+ }
+
+ if (strcmp(name, "PrintSpeed") == 0)
+ {
+ description->bounds.str = stp_string_list_create();
+
+ const dyesub_stringlist_t *mlist = &mitsu70x_quality_list;
+ for (i = 0; i < mlist->n_items; i++)
+ {
+ const dyesub_stringitem_t *m = &(mlist->item[i]);
+ stp_string_list_add_string(description->bounds.str,
+ m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */
+ }
+ description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name;
+ description->is_active = 1;
+ }
+ else
+ {
+ return 0;
+ }
+ return 1;
+}
+
+static void mitsu70x_parse_parameters(stp_vars_t *v)
+{
+ mitsu70x_privdata.quality = stp_get_string_parameter(v, "PrintSpeed");
+}
+
static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model)
{
+ int quality;
+
+ /* Parse options */
+ if (strcmp(mitsu70x_privdata.quality, "SuperFine") == 0) {
+ quality = 3;
+ } else if (strcmp(mitsu70x_privdata.quality, "UltraFine") == 0) {
+ quality = 4;
+ } else if (strcmp(mitsu70x_privdata.quality, "Fine") == 0) {
+ quality = 0;
+ } else {
+ quality = 0;
+ }
+
/* Printer wakeup */
stp_putc(0x1b, v);
stp_putc(0x45, v);
@@ -2818,30 +3009,32 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model)
stp_putc(0x1b, v);
stp_putc(0x5a, v);
stp_putc(0x54, v);
- stp_putc(model, v); /* k60 == x02, 305 == x90, d70x == x01 */
+ stp_putc(model, v); /* k60 == x02, 305 == x90, d70x/d80 == x01 */
dyesub_nputc(v, 0x00, 12);
stp_put16_be(privdata.w_size, v);
stp_put16_be(privdata.h_size, v);
if (*((const char*)((privdata.laminate->seq).data)) != 0x00) {
- /* Laminate a slightly larger boundary in Matte mode */
stp_put16_be(privdata.w_size, v);
- stp_put16_be(privdata.h_size + 12, v);
if (model == 0x02 || model == 0x90) {
- stp_putc(0x04, v); /* Matte Lamination forces UltraFine on K60 or K305 */
+ mitsu70x_privdata.laminate_offset = 0;
+ quality = 4; /* Matte Lamination forces UltraFine on K60 or K305 */
} else {
- stp_putc(0x03, v); /* Matte Lamination forces Superfine (or UltraFine) */
+ /* Laminate a slightly larger boundary in Matte mode */
+ mitsu70x_privdata.laminate_offset = 12;
+ quality = 3; /* Matte Lamination forces Superfine (or UltraFine) */
}
+ stp_put16_be(privdata.h_size + mitsu70x_privdata.laminate_offset, v);
} else {
/* Glossy lamination here */
stp_put16_be(0, v);
- stp_put16_be(0, v);
- stp_putc(0x00, v); /* ...and just use fine mode. XXX (optional?) */
+ stp_put16_be(0, v);
}
+ stp_putc(quality, v);
dyesub_nputc(v, 0x00, 7);
if (model != 0x01) {
- stp_putc(0x00, v); /* D70x: 0x00 Auto deck selection, 0x01 for Lower, 0x02 for Upper */
+ stp_putc(0x00, v); /* D70x: 0x00 Auto deck selection, 0x01 for Lower, 0x02 for Upper. */
} else {
stp_putc(0x01, v); /* All others have a single "lower" deck */
}
@@ -2852,7 +3045,7 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model)
(privdata.laminate->seq).bytes, v); /* Lamination mode */
dyesub_nputc(v, 0x00, 6);
- /* Multi-cut controlx */
+ /* Multi-cut control */
if (strcmp(privdata.pagesize,"w432h576-div2") == 0) {
stp_putc(0x01, v);
} else if (strcmp(privdata.pagesize,"w360h504-div2") == 0) {
@@ -2869,7 +3062,7 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, unsigned char model)
static void mitsu_cpd70x_printer_init(stp_vars_t *v)
{
- mitsu_cpd70k60_printer_init(v, 0x01);
+ mitsu_cpd70k60_printer_init(v, 0x01);
}
static void mitsu_cpd70x_printer_end(stp_vars_t *v)
@@ -2877,54 +3070,32 @@ static void mitsu_cpd70x_printer_end(stp_vars_t *v)
/* If Matte lamination is enabled, generate a lamination plane */
if (*((const char*)((privdata.laminate->seq).data)) != 0x00) {
- /* The Windows drivers generate a lamination pattern consisting of
- three values: 0xe84b, 0x286a, 0x6c22 */
-
- int r, c;
- unsigned long seed = 1;
-
- /* Now generate lamination pattern */
- for (c = 0 ; c < privdata.w_size ; c++) {
- for (r = 0 ; r < privdata.h_size + 12 ; r++) {
- int i = xrand(&seed) & 0x3f;
- if (i < 42)
- stp_put16_be(0xe84b, v);
- else if (i < 62)
- stp_put16_be(0x286a, v);
- else
- stp_put16_be(0x6c22, v);
- }
- }
- /* Pad up to a 512-byte block */
- dyesub_nputc(v, 0x00, 512 - ((privdata.w_size * (privdata.h_size + 12) * 2) % 512));
- }
-}
-
-static void mitsu_cpk60_printer_end(stp_vars_t *v)
-{
- /* If Matte lamination is enabled, generate a lamination plane */
- if (*((const char*)((privdata.laminate->seq).data)) != 0x00) {
-
- /* The Windows drivers generate a lamination pattern consisting of
- three values: 0x9d00, 0x6500, 0x2900 */
-
int r, c;
unsigned long seed = 1;
/* Now generate lamination pattern */
for (c = 0 ; c < privdata.w_size ; c++) {
- for (r = 0 ; r < privdata.h_size + 12 ; r++) {
+ for (r = 0 ; r < privdata.h_size + mitsu70x_privdata.laminate_offset ; r++) {
int i = xrand(&seed) & 0x3f;
- if (i < 42)
- stp_put16_be(0x9d00, v);
- else if (i < 62)
- stp_put16_be(0x2900, v);
- else
- stp_put16_be(0x6500, v);
+ if (mitsu70x_privdata.laminate_offset) { /* D70x uses 0x384b, 0x286a, 0x6c22 */
+ if (i < 42)
+ stp_put16_be(0xe84b, v);
+ else if (i < 62)
+ stp_put16_be(0x286a, v);
+ else
+ stp_put16_be(0x6c22, v);
+ } else { /* K60 and EK305 use 0x9d00, 0x6500, 0x2900 */
+ if (i < 42)
+ stp_put16_be(0x9d00, v);
+ else if (i < 62)
+ stp_put16_be(0x2900, v);
+ else
+ stp_put16_be(0x6500, v);
+ }
}
}
/* Pad up to a 512-byte block */
- dyesub_nputc(v, 0x00, 512 - ((privdata.w_size * (privdata.h_size + 12) * 2) % 512));
+ dyesub_nputc(v, 0x00, 512 - ((privdata.w_size * (privdata.h_size + mitsu70x_privdata.laminate_offset) * 2) % 512));
}
}
@@ -2977,6 +3148,53 @@ static void mitsu_cpk60_printer_init(stp_vars_t *v)
mitsu_cpd70k60_printer_init(v, 0x02);
}
+/* Identical to the D70 except for one fewer quality mode */
+static const dyesub_stringitem_t mitsu_k60_qualities[] =
+{
+ { "Fine", N_ ("Fine") },
+ { "UltraFine", N_ ("Ultra Fine") }
+};
+LIST(dyesub_stringlist_t, mitsu_k60_quality_list, dyesub_stringitem_t, mitsu_k60_qualities);
+
+static int
+mitsu_k60_load_parameters(const stp_vars_t *v, const char *name,
+ stp_parameter_t *description)
+{
+ int i;
+ const dyesub_cap_t *caps = dyesub_get_model_capabilities(
+ stp_get_model_id(v));
+
+ if (caps->parameter_count && caps->parameters)
+ {
+ for (i = 0; i < caps->parameter_count; i++)
+ if (strcmp(name, caps->parameters[i].name) == 0)
+ {
+ stp_fill_parameter_settings(description, &(caps->parameters[i]));
+ break;
+ }
+ }
+
+ if (strcmp(name, "PrintSpeed") == 0)
+ {
+ description->bounds.str = stp_string_list_create();
+
+ const dyesub_stringlist_t *mlist = &mitsu_k60_quality_list;
+ for (i = 0; i < mlist->n_items; i++)
+ {
+ const dyesub_stringitem_t *m = &(mlist->item[i]);
+ stp_string_list_add_string(description->bounds.str,
+ m->name, m->text); /* Do *not* want this translated, otherwise use gettext(m->text) */
+ }
+ description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name;
+ description->is_active = 1;
+ }
+ else
+ {
+ return 0;
+ }
+ return 1;
+}
+
static const dyesub_pagesize_t mitsu_cpd80_page[] =
{
{ "w288h432", "4x6", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
@@ -3010,7 +3228,6 @@ static const dyesub_printsize_t mitsu_cpd80_printsize[] =
LIST(dyesub_printsize_list_t, mitsu_cpd80_printsize_list, dyesub_printsize_t, mitsu_cpd80_printsize);
-
/* Kodak 305 */
static const dyesub_pagesize_t kodak305_page[] =
{
@@ -3427,10 +3644,10 @@ static void shinko_chcs1245_printer_init(stp_vars_t *v)
((const unsigned char*)(privdata.laminate->seq).data)[0] == 0x03) {
stp_put32_le(0x07fffffff, v); /* Glossy */
} else {
- stp_put32_le(0x0, v); /* XXX -25>0>+25 */
+ stp_put32_le(0x0, v); /* XXX matte intensity -25>0>+25 */
}
- stp_put32_le(0x00, v); /* XXX 0x00 printer default, 0x02 for "dust removal" on, 0x01 for off. */
+ stp_put32_le(0x00, v); /* XXX "dust removal mode" -- 0x00 printer default, 0x02 on, 0x01 for off. */
stp_put32_le(privdata.w_size, v); /* Columns */
stp_put32_le(privdata.h_size, v); /* Rows */
stp_put32_le(0x01, v); /* Copies */
@@ -3987,31 +4204,12 @@ static const dyesub_media_t dnpds80dx_medias[] =
LIST(dyesub_media_list_t, dnpds80dx_media_list, dyesub_media_t, dnpds80dx_medias);
-/* This list is *not* translated */
-static const dyesub_stringitem_t dnpds80dx_uiconstraints[] =
-{
- /* PPD generation handles constraint reciprocation */
- {"UIConstraints", "*Duplex *MediaType Roll"},
- {"UIConstraints", "*PageSize A4 *MediaType Sheet"},
- {"UIConstraints", "*PageSize w576h792-w576h432_w576h360 *MediaType Sheet"},
- {"UIConstraints", "*PageSize w576h648-w576h360_w576h288 *MediaType Sheet"},
- {"UIConstraints", "*PageSize c8x10-w576h432_w576h288 *MediaType Sheet"},
- {"UIConstraints", "*PageSize w576h864-w576h576_w576h288 *MediaType Sheet"},
- {"UIConstraints", "*PageSize w576h864-div3 *MediaType Sheet"},
- {"UIConstraints", "*PageSize w576h864-div3sheet *MediaType Roll"},
- {"UIConstraints", "*PageSize w576h774-w576h756 *MediaType Roll"},
- {"UIConstraints", "*PageSize w576h774 *MediaType Roll"},
-};
-
-LIST(dyesub_stringlist_t, dnpds80dx_uiconstraints_list, dyesub_stringitem_t, dnpds80dx_uiconstraints);
-
/* This is the same as the DS80, except with 10.5" and 10.75" sizes
only meant for sheet media. Duplex is *only* supported on sheet media.
Also, 8x4*3 differs depending on if you're using sheet or roll media,
hence the almost-duplicated definition.
- See the constraints list for the illegal combinations
*/
static const dyesub_pagesize_t dnpds80dx_page[] =
@@ -4458,8 +4656,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
&p10_block_init_func, NULL,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &p10_laminate_list, NULL, NULL,
+ &p10_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Olympus P-200 */
4,
@@ -4474,8 +4673,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&p200_plane_init_func, NULL,
NULL, NULL,
p200_adj_any, p200_adj_any, p200_adj_any,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Olympus P-300 */
0,
@@ -4490,8 +4690,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, &p300_plane_end_func,
&p300_block_init_func, NULL,
p300_adj_cyan, p300_adj_magenta, p300_adj_yellow,
- NULL, NULL, NULL,
+ NULL, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Olympus P-400 */
1,
@@ -4506,8 +4707,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&p400_plane_init_func, &p400_plane_end_func,
&p400_block_init_func, NULL,
p400_adj_cyan, p400_adj_magenta, p400_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Olympus P-440 */
3,
@@ -4521,8 +4723,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
&p440_block_init_func, &p440_block_end_func,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &p10_laminate_list, NULL, NULL,
+ &p10_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Olympus P-S100 */
20,
@@ -4536,8 +4739,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon CP-10 */
1002,
@@ -4553,8 +4757,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&cpx00_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon CP-100, CP-200, CP-300 */
1000,
@@ -4570,8 +4775,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&cpx00_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon CP-220, CP-330, SELPHY CP400, SELPHY CP500, SELPHY CP510,
SELPHY CP520, SELPHY CP530, SELPHY CP600, SELPHY CP710,
@@ -4590,8 +4796,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&cpx00_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY ES1 */
1003,
@@ -4607,8 +4814,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&es1_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY ES2, SELPHY ES20 */
1005,
@@ -4624,8 +4832,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&es2_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY ES3, SELPHY ES30 */
1006,
@@ -4641,8 +4850,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&es2_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY ES40 */
1007,
@@ -4658,8 +4868,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&es2_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY CP790 */
1008,
@@ -4675,8 +4886,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&es2_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY CP800 */
1009,
@@ -4692,8 +4904,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&cpx00_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon SELPHY CP900 */
1010,
@@ -4709,8 +4922,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&cpx00_plane_init_func, NULL,
NULL, NULL,
cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Canon CP820, CP910 */
1011,
@@ -4726,8 +4940,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL, /* Printer handles color correction! */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony UP-DP10 */
2000,
@@ -4742,8 +4957,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
updp10_adj_cyan, updp10_adj_magenta, updp10_adj_yellow,
- &updp10_laminate_list, NULL, NULL,
+ &updp10_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony UP-DR150 */
2001,
@@ -4757,8 +4973,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &updp10_laminate_list, NULL, NULL,
+ &updp10_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony DPP-EX5, DPP-EX7 */
2002,
@@ -4773,8 +4990,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
&dppex5_block_init, NULL,
NULL, NULL, NULL,
- &dppex5_laminate_list, NULL, NULL,
+ &dppex5_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony UP-DR100 */
2003,
@@ -4788,8 +5006,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &updr100_laminate_list, NULL, NULL,
+ &updr100_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony UP-DR200 */
2004,
@@ -4803,8 +5022,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &updr200_laminate_list, NULL, NULL,
+ &updr200_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Sony UP-CR10L / DNP SL10 */
2005,
@@ -4818,8 +5038,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Fujifilm Printpix CX-400 */
3000,
@@ -4834,8 +5055,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Fujifilm Printpix CX-550 */
3001,
@@ -4850,8 +5072,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Fujifilm FinePix NX-500 */
3002,
@@ -4865,8 +5088,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Easyshare Dock family */
4000,
@@ -4881,8 +5105,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&kodak_dock_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Photo Printer 6800 */
4001,
@@ -4896,8 +5121,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No plane funcs */
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_6800_laminate_list, NULL, NULL,
+ &kodak_6800_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Photo Printer 6850 */
4002,
@@ -4911,8 +5137,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No plane funcs */
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_6800_laminate_list, NULL, NULL,
+ &kodak_6800_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Photo Printer 605 */
4003,
@@ -4926,8 +5153,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No plane funcs */
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_605_laminate_list, NULL, NULL,
+ &kodak_605_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Professional 1400 */
4004,
@@ -4943,8 +5171,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &kodak_6800_laminate_list, &kodak_1400_media_list, NULL,
+ &kodak_6800_laminate_list, &kodak_1400_media_list,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Photo Printer 805 */
4005,
@@ -4960,8 +5189,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No plane funcs */
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_6800_laminate_list, NULL, NULL,
+ &kodak_6800_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Professional 9810 */
4006,
@@ -4976,8 +5206,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&kodak_9810_plane_init, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_9810_laminate_list, NULL, NULL,
+ &kodak_9810_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak 8810 */
4007,
@@ -4992,8 +5223,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_8810_laminate_list, NULL, NULL,
+ &kodak_8810_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak 7000/7010 */
4008,
@@ -5008,8 +5240,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_7000_laminate_list, NULL, NULL,
+ &kodak_7000_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak 7015 */
4009,
@@ -5024,8 +5257,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_7000_laminate_list, NULL, NULL,
+ &kodak_7000_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Kodak Professional 8500 */
4100,
@@ -5039,8 +5273,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No plane funcs */
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &kodak_8500_laminate_list, &kodak_8500_media_list, NULL,
+ &kodak_8500_laminate_list, &kodak_8500_media_list,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Mitsubishi CP3020D/DU/DE */
4101,
@@ -5055,8 +5290,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&mitsu_cp3020d_plane_init, &mitsu_cp3020d_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Mitsubishi CP3020DA/DAE */
4102,
@@ -5071,8 +5307,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&mitsu_cp3020da_plane_init, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Mitsubishi CP9550D */
4103,
@@ -5087,8 +5324,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&mitsu_cp3020da_plane_init, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- NULL, NULL, NULL,
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Mitsubishi CP9810D */
4104,
@@ -5104,8 +5342,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&mitsu_cp3020da_plane_init, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cp9810_laminate_list, NULL, NULL,
+ &mitsu_cp9810_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Mitsubishi CPD70D/CPD707D */
4105,
@@ -5121,8 +5360,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, &mitsu_cpd70x_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cpd70x_laminate_list, NULL, NULL,
+ &mitsu_cpd70x_laminate_list, NULL,
NULL, NULL,
+ mitsu70x_parameters,
+ mitsu70x_parameter_count,
+ mitsu70x_load_parameters,
+ mitsu70x_parse_parameters,
},
{ /* Mitsubishi CPK60D */
4106,
@@ -5134,12 +5377,16 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP
| DYESUB_FEATURE_BIGENDIAN,
- &mitsu_cpk60_printer_init, &mitsu_cpk60_printer_end,
+ &mitsu_cpk60_printer_init, &mitsu_cpd70x_printer_end,
NULL, &mitsu_cpd70x_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cpd70x_laminate_list, NULL, NULL,
+ &mitsu_cpd70x_laminate_list, NULL,
NULL, NULL,
+ mitsu70x_parameters,
+ mitsu70x_parameter_count,
+ mitsu_k60_load_parameters,
+ mitsu70x_parse_parameters,
},
{ /* Mitsubishi CPD80D */
4107,
@@ -5155,8 +5402,12 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, &mitsu_cpd70x_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cpd70x_laminate_list, NULL, NULL,
+ &mitsu_cpd70x_laminate_list, NULL,
NULL, NULL,
+ mitsu70x_parameters,
+ mitsu70x_parameter_count,
+ mitsu70x_load_parameters,
+ mitsu70x_parse_parameters,
},
{ /* Kodak 305 */
4108,
@@ -5168,12 +5419,16 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP
| DYESUB_FEATURE_BIGENDIAN,
- &kodak305_printer_init, &mitsu_cpk60_printer_end,
+ &kodak305_printer_init, &mitsu_cpd70x_printer_end,
NULL, &mitsu_cpd70x_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cpd70x_laminate_list, NULL, NULL,
+ &mitsu_cpd70x_laminate_list, NULL,
NULL, NULL,
+ mitsu70x_parameters,
+ mitsu70x_parameter_count,
+ mitsu_k60_load_parameters,
+ mitsu70x_parse_parameters,
},
{ /* Mitsubishi CPD90D */
4109,
@@ -5187,8 +5442,43 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
- &mitsu_cpd70x_laminate_list, NULL, NULL,
+ &mitsu_cpd70x_laminate_list, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
+ },
+ { /* Mitsubishi CP9600D */
+ 4110,
+ &bgr_ink_list,
+ &res_mitsu9600_dpi_list,
+ &mitsu_cp9600_page_list,
+ &mitsu_cp9600_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
+ | DYESUB_FEATURE_PLANE_INTERLACE,
+ &mitsu_cp9600_printer_init, &mitsu_cp9600_printer_end,
+ &mitsu_cp3020da_plane_init, NULL,
+ NULL, NULL, /* No block funcs */
+ NULL, NULL, NULL, /* color profile/adjustment is built into printer */
+ NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
+ },
+ { /* Mitsubishi CP9550DW-S */
+ 4111,
+ &rgb_ink_list, /* Identical to 9550D except it's rgb instead of bgr */
+ &res_346dpi_list,
+ &mitsu_cp9550_page_list,
+ &mitsu_cp9550_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
+ | DYESUB_FEATURE_PLANE_INTERLACE,
+ &mitsu_cp9550_printer_init, &mitsu_cp9550_printer_end,
+ &mitsu_cp3020da_plane_init, NULL,
+ NULL, NULL, /* No block funcs */
+ NULL, NULL, NULL, /* color profile/adjustment is built into printer */
NULL, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Shinko CHC-S9045 (experimental) */
5000,
@@ -5202,8 +5492,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
- NULL, NULL, NULL,
+ NULL, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Shinko/Sinfonia CHC-S2145 */
5001,
@@ -5217,8 +5508,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No planes */
NULL, NULL, /* No blocks */
NULL, NULL, NULL, /* Color correction in printer */
- &shinko_chcs2145_laminate_list, NULL, NULL,
+ &shinko_chcs2145_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Shinko/Sinfonia CHC-S1245 */
5002,
@@ -5232,7 +5524,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No planes */
NULL, NULL, /* No blocks */
NULL, NULL, NULL, /* Color correction in printer */
- &shinko_chcs1245_laminate_list, NULL, NULL,
+ &shinko_chcs1245_laminate_list, NULL,
+ NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Shinko/Sinfonia CHC-S6245 */
5003,
@@ -5246,8 +5540,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No planes */
NULL, NULL, /* No blocks */
NULL, NULL, NULL, /* Color correction in printer */
- &shinko_chcs6245_laminate_list, NULL, NULL,
+ &shinko_chcs6245_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Shinko/Sinfonia CHC-S6145 */
5004,
@@ -5261,8 +5556,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No planes */
NULL, NULL, /* No blocks */
NULL, NULL, NULL, /* Color correction in printer */
- &shinko_chcs6145_laminate_list, NULL, NULL,
+ &shinko_chcs6145_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* CIAAT Brava 21 (aka CHC-S6145D) */
5005,
@@ -5276,8 +5572,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, /* No planes */
NULL, NULL, /* No blocks */
NULL, NULL, NULL, /* Color correction in printer */
- &shinko_chcs6145_laminate_list, NULL, NULL,
+ &shinko_chcs6145_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Dai Nippon Printing DS40 */
6000,
@@ -5292,8 +5589,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&dnpds40_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &dnpds40_laminate_list, NULL, NULL,
+ &dnpds40_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Dai Nippon Printing DS80 */
6001,
@@ -5308,8 +5606,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&dnpds40_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &dnpds40_laminate_list, NULL, NULL,
+ &dnpds40_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Dai Nippon Printing DSRX1 */
6002,
@@ -5324,8 +5623,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&dnpds40_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &dnpds40_laminate_list, NULL, NULL,
+ &dnpds40_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Dai Nippon Printing DS620 */
6003,
@@ -5340,8 +5640,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&dnpds40_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &dnpds620_laminate_list, NULL, NULL,
+ &dnpds620_laminate_list, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Citizen CW-01 */
6005,
@@ -5356,8 +5657,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&citizen_cw01_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- NULL, NULL, NULL,
+ NULL, NULL,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
{ /* Dai Nippon Printing DS80DX */
6006,
@@ -5372,8 +5674,9 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
&dnpds40_plane_init, NULL,
NULL, NULL,
NULL, NULL, NULL,
- &dnpds40_laminate_list, &dnpds80dx_media_list, &dnpds80dx_uiconstraints_list,
+ &dnpds40_laminate_list, &dnpds80dx_media_list,
NULL, NULL,
+ NULL, 0, NULL, NULL,
},
};
@@ -5443,12 +5746,6 @@ static const stp_parameter_t the_parameters[] =
STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0
},
- {
- "PPDUIConstraints", N_("PPD User Interface Constraints"), "Color=No,Category=Advanced Printer Functionality",
- N_("PPD UIConstraints List"),
- STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
- STP_PARAMETER_LEVEL_INTERNAL, 0, 0, STP_CHANNEL_NONE, 0, 1
- },
};
static int the_parameter_count =
@@ -5602,6 +5899,8 @@ dyesub_feature(const dyesub_cap_t *caps, int feature)
static stp_parameter_list_t
dyesub_list_parameters(const stp_vars_t *v)
{
+ const dyesub_cap_t *caps = dyesub_get_model_capabilities(stp_get_model_id(v));
+
stp_parameter_list_t *ret = stp_parameter_list_create();
int i;
@@ -5609,6 +5908,10 @@ dyesub_list_parameters(const stp_vars_t *v)
stp_parameter_list_add_param(ret, &(the_parameters[i]));
for (i = 0; i < float_parameter_count; i++)
stp_parameter_list_add_param(ret, &(float_parameters[i].param));
+ if (caps->parameter_count && caps->parameters)
+ for (i = 0; i < caps->parameter_count ; i++)
+ stp_parameter_list_add_param(ret, &(caps->parameters[i]));
+
return ret;
}
@@ -5641,6 +5944,12 @@ dyesub_parameters(const stp_vars_t *v, const char *name,
stp_fill_parameter_settings(description, &(the_parameters[i]));
break;
}
+ if (caps->load_parameters) /* do *NOT* use dyesub_exec() here */
+ {
+ if (caps->load_parameters(v, name, description))
+ return; /* Ie parameter handled */
+ }
+
if (strcmp(name, "PageSize") == 0)
{
int default_specified = 0;
@@ -5746,24 +6055,6 @@ dyesub_parameters(const stp_vars_t *v, const char *name,
description->deflt.str =
stp_string_list_param(description->bounds.str, 0)->name;
}
- else if (strcmp(name, "PPDUIConstraints") == 0)
- {
- description->bounds.str = stp_string_list_create();
- if (caps->uiconstraints) {
- const dyesub_stringlist_t *mlist = caps->uiconstraints;
- for (i = 0; i < mlist->n_items; i++)
- {
- const dyesub_stringitem_t *m = &(mlist->item[i]);
- stp_string_list_add_string(description->bounds.str,
- m->name, m->text); /* Do *not* want this translated */
- }
- description->deflt.str =
- stp_string_list_param(description->bounds.str, 0)->name;
- description->is_active = 1;
- } else {
- description->is_active = 0;
- }
- }
else if (strcmp(name, "Duplex") == 0)
{
int offer_duplex=0;
@@ -5782,7 +6073,7 @@ dyesub_parameters(const stp_vars_t *v, const char *name,
else
offer_duplex=1;
- if (offer_duplex && (caps->features & DYESUB_FEATURE_DUPLEX))
+ if (offer_duplex && dyesub_feature(caps, DYESUB_FEATURE_DUPLEX))
{
description->deflt.str = duplex_types[0].name;
for (i=0; i < NUM_DUPLEX; i++)
@@ -6329,6 +6620,9 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image)
stp_describe_resolution(v, &w_dpi, &h_dpi);
dyesub_printsize(v, &max_print_px_width, &max_print_px_height);
+ /* Parse any per-printer parameters */
+ dyesub_exec(v, caps->parse_parameters, "caps->parse_parameters");
+
/* Duplex processing -- Rotate even pages for DuplexNoTumble */
privdata.duplex_mode = stp_get_string_parameter(v, "Duplex");
privdata.page_number = stp_get_int_parameter(v, "PageNumber");
@@ -6426,7 +6720,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image)
pv.byteswap = !dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN);
#else
#error "Unable to determine endianness, aborting compilation!"
-#endif
+#endif
}
pv.image_data = dyesub_read_image(v, &pv, image);