1/* 2 * Print plug-in CANON BJL driver for the GIMP. 3 * 4 * Copyright 1997-2000 Michael Sweet (mike@easysw.com), 5 * Robert Krawitz (rlk@alum.mit.edu) and 6 * Andy Thaller (thaller@ph.tum.de) 7 * Copyright (c) 2006 - 2007 Sascha Sommer (saschasommer@freenet.de) 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU General Public License as published by the Free 11 * Software Foundation; either version 2 of the License, or (at your option) 12 * any later version. 13 * 14 * This program is distributed in the hope that it will be useful, but 15 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17 * for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 */ 23 24/* This file contains definitions for the various inks 25*/ 26 27#ifndef GUTENPRINT_INTERNAL_CANON_INKS_H 28#define GUTENPRINT_INTERNAL_CANON_INKS_H 29 30/* ink definition: 31 * ink dots can be printed in various sizes 32 * one size is called level 33 * every level is represented by a bitcombination and a density 34 * the density ranges from 0 (no dot is printed) to 1.0 (maximum dot size) 35 * 36 * an ink is therefore defined by the number of bits used for the bitpattern (bitdepth) and the number of possible levels: 37 * a 1 bit ink can have 2 possible levels 0 and 1 38 * a 2 bit ink can have 2*2=4 possible levels with the bitpatterns 0,1,2 and 3 39 * a 3 bit ink can have 2*2*2=8 possible levels with the bitpatterns 0 to 7 40 * ... 41 * some inks use less levels than possible with the given bitdepth 42 * some inks use special compressions to store for example 5 3 level pixels in 1 byte 43 * naming: 44 * dotsizes are named dotsizes_xl where x is the number of levels (number of dotsizes + 1) 45 * inks are named canon_xb_yl_ink where x is the number of bits representing the y possible ink levels 46 * inks that contain special (compression) flags are named canon_xb_yl_c_ink 47 * order: 48 * dotsizes are ordered ascending by the number of dots 49 * 50*/ 51 52 53typedef struct { 54 const int bits; /* bitdepth */ 55 const int flags; /* flags: */ 56#define INK_FLAG_5pixel_in_1byte 0x1 /* use special compression where 5 3level pixels get stored in 1 byte */ 57 int numsizes; /* number of possible {bit,density} tuples */ 58 const stp_dotsize_t *dot_sizes; /* pointer to an array of {bit,density} tuples */ 59} canon_ink_t; 60 61/* declare a standard ink */ 62#define DECLARE_INK(bits,levels) \ 63static const canon_ink_t canon_##bits##b_##levels##l_ink = { \ 64 bits,0, \ 65 sizeof(dotsizes_##levels##l)/sizeof(stp_dotsize_t), dotsizes_##levels##l \ 66} 67 68/* declare an ink with flags */ 69#define DECLARE_INK_EXTENDED(bits,levels,flags) \ 70static const canon_ink_t canon_##bits##b_##levels##l_c_ink = { \ 71 bits,flags, \ 72 sizeof(dotsizes_##levels##l)/sizeof(stp_dotsize_t), dotsizes_##levels##l \ 73} 74 75 76 77/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE 78 * 79 * Some of the bitpattern/density combinations were taken from print-escp2.c 80 * and do NOT represent the requirements of canon inks. Feel free to play 81 * with them and send a patch to gimp-print-devel@lists.sourceforge.net 82 */ 83 84 85static const stp_dotsize_t dotsizes_2l[] = { 86 { 0x1, 1.0 } 87}; 88 89DECLARE_INK(1,2); 90 91/* test */ 92DECLARE_INK(2,2); 93 94static const stp_dotsize_t dotsizes_3l[] = { 95 { 0x1, 0.5 }, 96 { 0x2, 1.0 } 97}; 98 99DECLARE_INK(2,3); 100 101DECLARE_INK_EXTENDED(2,3,INK_FLAG_5pixel_in_1byte); 102 103static const stp_dotsize_t dotsizes_4l[] = { 104 { 0x1, 0.45 }, 105 { 0x2, 0.68 }, 106 { 0x3, 1.0 } 107}; 108 109DECLARE_INK(2,4); 110 111/*under development*/ 112DECLARE_INK(4,4); 113 114static const stp_dotsize_t dotsizes_5l[] = { 115 { 0x1, 0.45 }, 116 { 0x2, 0.55 }, 117 { 0x3, 0.68 }, 118 { 0x4, 1.0 } 119}; 120 121/*under development*/ 122DECLARE_INK(4,5); 123DECLARE_INK_EXTENDED(4,5,INK_FLAG_5pixel_in_1byte); 124 125static const stp_dotsize_t dotsizes_6l[] = { 126 { 0x1, 0.2 }, 127 { 0x2, 0.4 }, 128 { 0x3, 0.6 }, 129 { 0x4, 0.8 }, 130 { 0x5, 1.0 } 131}; 132 133/*under development*/ 134DECLARE_INK(4,6); 135DECLARE_INK_EXTENDED(4,6,INK_FLAG_5pixel_in_1byte); 136 137static const stp_dotsize_t dotsizes_7l[] = { 138 { 0x1, 0.45 }, 139 { 0x2, 0.55 }, 140 { 0x3, 0.66 }, 141 { 0x4, 0.77 }, 142 { 0x5, 0.88 }, 143 { 0x6, 1.0 } 144}; 145 146DECLARE_INK(3,7); 147 148/*under development*/ 149DECLARE_INK(4,7); 150 151static const stp_dotsize_t dotsizes_8l[] = { 152 { 0x1, 0.14 }, 153 { 0x2, 0.29 }, 154 { 0x3, 0.43 }, 155 { 0x4, 0.58 }, 156 { 0x5, 0.71 }, 157 { 0x6, 0.86 }, 158 { 0x7, 1.00 } 159}; 160 161DECLARE_INK(4,8); 162 163static const stp_dotsize_t dotsizes_9l[] = { 164 { 0x1, 0.14 }, 165 { 0x2, 0.29 }, 166 { 0x3, 0.43 }, 167 { 0x4, 0.55 }, 168 { 0x5, 0.66 }, 169 { 0x6, 0.71 }, 170 { 0x7, 0.88 }, 171 { 0x8, 1.00 } 172}; 173 174/*under development*/ 175DECLARE_INK(4,9); 176DECLARE_INK(8,9); 177 178static const stp_dotsize_t dotsizes_16l[] = { 179 { 0x1, 0.07 }, 180 { 0x2, 0.13 }, 181 { 0x3, 0.20 }, 182 { 0x4, 0.27 }, 183 { 0x5, 0.33 }, 184 { 0x6, 0.40 }, 185 { 0x7, 0.47 }, 186 { 0x8, 0.53 }, 187 { 0x9, 0.60 }, 188 { 0xA, 0.67 }, 189 { 0xB, 0.73 }, 190 { 0xC, 0.80 }, 191 { 0xD, 0.87 }, 192 { 0xE, 0.93 }, 193 { 0xF, 1.00 } 194}; 195 196DECLARE_INK(4,16); 197DECLARE_INK(8,16); 198 199 200/* A inkset is a list of inks and their (relative) densities 201 * For printers that use the extended SetImage command t) 202 * the inkset will be used to build the parameter list 203 * therefore invalid inksets will let the printer fallback 204 * to a default mode which will then lead to wrong output 205 * use {0,0.0,NULL} for undefined placeholder inks 206 * set density to 0.0 to disable certain inks 207 * the paramters will then still occure in the t) command 208 * 209 * names: 210 * inksets are named canon_X_ where X is the number of possible inks in the set 211 * followed by YZ combinations for every defined ink where Y is the letter 212 * representing the color and Z the maximum level of the color 213 * if an inkset contains one or more compressed inks a _c is appended 214 * the inkset name ends with _inkset 215 * see the examples below 216 * order: 217 * inksets are ordered by ascending number of possible inks, used inks, compression 218 * 219 */ 220 221 222typedef struct { 223 const int channel; 224 const double density; 225 const canon_ink_t* ink; 226} canon_inkset_t; 227 228 229/* Inkset for printing in K and 1bit/pixel */ 230static const canon_inkset_t canon_1_K2_inkset[] = { 231 {'K',1.0,&canon_1b_2l_ink} 232}; 233 234/* Inkset for printing in CMY and 1bit/pixel */ 235static const canon_inkset_t canon_3_C2M2Y2_inkset[] = { 236 {'C',1.0,&canon_1b_2l_ink}, 237 {'M',1.0,&canon_1b_2l_ink}, 238 {'Y',1.0,&canon_1b_2l_ink} 239}; 240 241 242/* Inkset for printing in CMY and 2bit/pixel */ 243static const canon_inkset_t canon_3_C4M4Y4_inkset[] = { 244 {'C',1.0,&canon_2b_4l_ink}, 245 {'M',1.0,&canon_2b_4l_ink}, 246 {'Y',1.0,&canon_2b_4l_ink} 247}; 248 249/* Inkset for printing in CMYK and 1bit/pixel */ 250static const canon_inkset_t canon_4_C2M2Y2K2_inkset[] = { 251 {'C',1.0,&canon_1b_2l_ink}, 252 {'M',1.0,&canon_1b_2l_ink}, 253 {'Y',1.0,&canon_1b_2l_ink}, 254 {'K',1.0,&canon_1b_2l_ink} 255}; 256 257/* Inkset for printing in CMYK and 2bit/pixel */ 258static const canon_inkset_t canon_4_C4M4Y4K4_inkset[] = { 259 {'C',1.0,&canon_2b_4l_ink}, 260 {'M',1.0,&canon_2b_4l_ink}, 261 {'Y',1.0,&canon_2b_4l_ink}, 262 {'K',1.0,&canon_2b_4l_ink} 263}; 264 265/* 266 * Dither ranges specifically for any Color and 3bit/pixel 267 * (see NOTE above) 268 * 269 * BIG NOTE: The bjc8200 has this kind of ink. One Byte seems to hold 270 * drop sizes for 3 pixels in a 3/2/2 bit fashion. 271 * Size values for 3bit-sized pixels range from 1 to 7, 272 * size values for 2bit-sized picels from 1 to 3 (kill msb). 273 * 274 * 275 */ 276 277/* Inkset for printing in CMYK and 3bit/pixel */ 278static const canon_inkset_t canon_4_C7M7Y7K7_inkset[] = { 279 {'C',1.0,&canon_3b_7l_ink}, 280 {'M',1.0,&canon_3b_7l_ink}, 281 {'Y',1.0,&canon_3b_7l_ink}, 282 {'K',1.0,&canon_3b_7l_ink} 283}; 284 285/* Inkset for printing in CMYKcm and 1bit/pixel */ 286/* FIXME is it really correct that the density of the CM inks is lowered? */ 287static const canon_inkset_t canon_6_C2M2Y2K2c2m2_inkset[] = { 288 {'C',0.25,&canon_1b_2l_ink}, 289 {'M',0.26,&canon_1b_2l_ink}, 290 {'Y',1.0,&canon_1b_2l_ink}, 291 {'K',1.0,&canon_1b_2l_ink}, 292 {'c',1.0,&canon_1b_2l_ink}, 293 {'m',1.0,&canon_1b_2l_ink} 294}; 295 296/* Inkset for printing in CMYKcm and 2bit/pixel */ 297/* FIXME is it really correct that the density of the CM inks is lowered? */ 298static const canon_inkset_t canon_6_C4M4Y4K4c4m4_inkset[] = { 299 {'C',0.33,&canon_2b_4l_ink}, 300 {'M',0.33,&canon_2b_4l_ink}, 301 {'Y',1.0,&canon_2b_4l_ink}, 302 {'K',1.0,&canon_2b_4l_ink}, 303 {'c',1.0,&canon_2b_4l_ink}, 304 {'m',1.0,&canon_2b_4l_ink} 305}; 306 307/* Inkset for printing in CMYKcm and 3bit/pixel */ 308/* FIXME is it really correct that the density of the CM inks is lowered? */ 309static const canon_inkset_t canon_6_C7M7Y7K7c7m7_inkset[] = { 310 {'C',0.33,&canon_3b_7l_ink}, 311 {'M',0.33,&canon_3b_7l_ink}, 312 {'Y',1.0,&canon_3b_7l_ink}, 313 {'K',1.0,&canon_3b_7l_ink}, 314 {'c',1.0,&canon_3b_7l_ink}, 315 {'m',1.0,&canon_3b_7l_ink} 316}; 317 318static const canon_inkset_t canon_7_C4M4Y4c4m4k4K4_inkset[] = { 319 {'C',1.0,&canon_2b_4l_ink}, 320 {'M',1.0,&canon_2b_4l_ink}, 321 {'Y',1.0,&canon_2b_4l_ink}, 322 {'c',1.0,&canon_2b_4l_ink}, 323 {'m',1.0,&canon_2b_4l_ink}, 324 {'k',1.0,&canon_2b_4l_ink}, 325 {'K',1.0,&canon_2b_4l_ink}, 326}; 327 328static const canon_inkset_t canon_9_C2M2Y2K2_inkset[] = { 329 {'C',1.0,&canon_1b_2l_ink}, 330 {'M',1.0,&canon_1b_2l_ink}, 331 {'Y',1.0,&canon_1b_2l_ink}, 332 {'K',1.0,&canon_1b_2l_ink}, 333 {0,0.0,NULL}, 334 {0,0.0,NULL}, 335 {0,0.0,NULL}, 336 {0,0.0,NULL}, 337 {0,0.0,NULL}, 338}; 339 340static const canon_inkset_t canon_9_C3M3Y2K2h_inkset[] = { 341 {'C',1.0,&canon_2b_3l_ink}, 342 {'M',1.0,&canon_2b_3l_ink}, 343 {'Y',1.0,&canon_2b_2l_ink}, 344 {'K',1.0,&canon_1b_2l_ink}, 345 {0,0.0,NULL}, 346 {0,0.0,NULL}, 347 {0,0.0,NULL}, 348 {0,0.0,NULL}, 349 {0,0.0,NULL}, 350}; 351 352static const canon_inkset_t canon_9_C3M3Y2K2_inkset[] = { 353 {'C',1.0,&canon_2b_3l_ink}, 354 {'M',1.0,&canon_2b_3l_ink}, 355 {'Y',1.0,&canon_1b_2l_ink}, 356 {'K',1.0,&canon_1b_2l_ink}, 357 {0,0.0,NULL}, 358 {0,0.0,NULL}, 359 {0,0.0,NULL}, 360 {0,0.0,NULL}, 361 {0,0.0,NULL}, 362}; 363 364static const canon_inkset_t canon_9_C3M3Y2K2_c_inkset[] = { 365 {'C',1.0,&canon_2b_3l_c_ink}, 366 {'M',1.0,&canon_2b_3l_c_ink}, 367 {'Y',1.0,&canon_1b_2l_ink}, 368 {'K',1.0,&canon_1b_2l_ink}, 369 {0,0.0,NULL}, 370 {0,0.0,NULL}, 371 {0,0.0,NULL}, 372 {0,0.0,NULL}, 373 {0,0.0,NULL} 374}; 375 376/* iP6000D */ 377static const canon_inkset_t canon_9_C3M3Y3K3_inkset[] = { 378 {'C',1.0,&canon_2b_3l_ink}, 379 {'M',1.0,&canon_2b_3l_ink}, 380 {'Y',1.0,&canon_2b_3l_ink}, 381 {'K',1.0,&canon_2b_3l_ink}, 382 {0,0.0,NULL}, 383 {0,0.0,NULL}, 384 {0,0.0,NULL}, 385 {0,0.0,NULL}, 386 {0,0.0,NULL} 387}; 388 389/* iP4000 default print mode (quality 2) */ 390static const canon_inkset_t canon_9_C3M3Y2K2k3_c_inkset[] = { 391 {'C',1.0,&canon_2b_3l_c_ink}, 392 {'M',1.0,&canon_2b_3l_c_ink}, 393 {'Y',1.0,&canon_1b_2l_ink}, 394 {'K',1.0,&canon_1b_2l_ink}, 395 {0,0.0,NULL}, 396 {0,0.0,NULL}, 397 {0,0.0,NULL}, 398 {'k',0.0,&canon_2b_3l_c_ink}, /* even though we won't use the photo black in this mode its parameters have to be set */ 399 {0,0.0,NULL} 400}; 401 402static const canon_inkset_t canon_9_C3M3Y3K2c3m3_c_inkset[] = { 403 {'C',1.0,&canon_2b_3l_c_ink}, 404 {'M',1.0,&canon_2b_3l_c_ink}, 405 {'Y',1.0,&canon_2b_3l_c_ink}, 406 {'K',0.0,&canon_1b_2l_ink}, 407 {'c',0.5,&canon_2b_3l_c_ink}, 408 {'m',0.5,&canon_2b_3l_c_ink}, 409 {0,0.0,NULL}, 410 {0,0.0,NULL}, 411 {0,0.0,NULL} 412}; 413 414/* iP4000 mode used for Super Photo Paper (quality 1) */ 415static const canon_inkset_t canon_9_C3M3Y3K2c3m3k3_c_inkset[] = { 416 {'C',1.0,&canon_2b_3l_c_ink}, 417 {'M',1.0,&canon_2b_3l_c_ink}, 418 {'Y',1.0,&canon_2b_3l_c_ink}, 419 {'K',0.0,&canon_1b_2l_ink}, 420 {'c',0.5,&canon_2b_3l_c_ink}, 421 {'m',0.5,&canon_2b_3l_c_ink}, 422 {0,0.0,NULL}, 423 {'k',1.0,&canon_2b_3l_c_ink}, 424 {0,0.0,NULL} 425}; 426 427static const canon_inkset_t canon_9_C4M4Y4K2_inkset[] = { 428 {'C',1.0,&canon_2b_4l_ink}, 429 {'M',1.0,&canon_2b_4l_ink}, 430 {'Y',1.0,&canon_2b_4l_ink}, 431 {'K',1.0,&canon_1b_2l_ink}, 432 {0,0.0,NULL}, 433 {0,0.0,NULL}, 434 {0,0.0,NULL}, 435 {0,0.0,NULL}, 436 {0,0.0,NULL}, 437}; 438 439/* iP4000 mode used for T-Shirt (quality 2) */ 440static const canon_inkset_t canon_9_C4M4Y4K2k4_inkset[] = { 441 {'C',1.0,&canon_2b_4l_ink}, 442 {'M',1.0,&canon_2b_4l_ink}, 443 {'Y',1.0,&canon_2b_4l_ink}, 444 {'K',1.0,&canon_1b_2l_ink}, 445 {0,0.0,NULL}, 446 {0,0.0,NULL}, 447 {0,0.0,NULL}, 448 {'k',1.0,&canon_2b_4l_ink}, 449 {0,0.0,NULL}, 450}; 451 452static const canon_inkset_t canon_9_C4M4Y4K3_inkset[] = { 453 {'C',1.0,&canon_2b_4l_ink}, 454 {'M',1.0,&canon_2b_4l_ink}, 455 {'Y',1.0,&canon_2b_4l_ink}, 456 {'K',1.0,&canon_2b_3l_ink}, 457 {0,0.0,NULL}, 458 {0,0.0,NULL}, 459 {0,0.0,NULL}, 460 {0,0.0,NULL}, 461 {0,0.0,NULL}, 462}; 463 464/* check this one!!!! */ 465static const canon_inkset_t canon_9_C4M4Y4K2c4m4_inkset[] = { 466 {'C',1.0,&canon_2b_4l_ink}, 467 {'M',1.0,&canon_2b_4l_ink}, 468 {'Y',1.0,&canon_2b_4l_ink}, 469 {'K',0.0,&canon_1b_2l_ink}, 470 {'c',0.5,&canon_2b_4l_ink}, 471 {'m',0.5,&canon_2b_4l_ink}, 472 {0,0.0,NULL}, 473 {0,0.0,NULL}, 474 {0,0.0,NULL} 475}; 476 477static const canon_inkset_t canon_9_C4M4Y4K4_inkset[] = { 478 {'C',1.0,&canon_2b_4l_ink}, 479 {'M',1.0,&canon_2b_4l_ink}, 480 {'Y',1.0,&canon_2b_4l_ink}, 481 {'K',1.0,&canon_2b_4l_ink}, /* put K back in for OHP */ 482 {0,0.0,NULL}, 483 {0,0.0,NULL}, 484 {0,0.0,NULL}, 485 {0,0.0,NULL}, 486 {0,0.0,NULL} 487}; 488 489/* check this one !!! */ 490static const canon_inkset_t canon_9_C4M4Y4K4c4m4_inkset[] = { 491 {'C',1.0,&canon_4b_4l_ink}, 492 {'M',1.0,&canon_4b_4l_ink}, 493 {'Y',1.0,&canon_4b_4l_ink}, 494 {'K',0.0,&canon_2b_4l_ink}, 495 {'c',1.0,&canon_4b_4l_ink}, 496 {'m',1.0,&canon_4b_4l_ink}, 497 {'y',1.0,&canon_4b_4l_ink}, 498 {0,0.0,NULL}, 499 {0,0.0,NULL} 500}; 501 502/* check this one!!! */ 503static const canon_inkset_t canon_9_C4M4Y4K2c4m4y4_inkset[] = { 504 {'C',1.0,&canon_4b_4l_ink}, 505 {'M',1.0,&canon_4b_4l_ink}, 506 {'Y',1.0,&canon_4b_4l_ink}, 507 {'K',0.0,&canon_1b_2l_ink}, 508 {'c',0.5,&canon_4b_4l_ink}, 509 {'m',0.5,&canon_4b_4l_ink}, 510 {'y',1.0,&canon_4b_4l_ink}, 511 {0,0.0,NULL}, 512 {0,0.0,NULL} 513}; 514 515/* iP4000 mode used for CD printing (quality 3) */ 516/* Gernot: This is also the normal hi-quality mode for iP4000 at quality level 3 */ 517/* The same inket is used at quality levels 4, 3 and 2 for CD printing */ 518static const canon_inkset_t canon_9_C4M4Y4K2c4m4k4_inkset[] = { 519 {'C',1.0,&canon_2b_4l_ink}, 520 {'M',1.0,&canon_2b_4l_ink}, 521 {'Y',1.0,&canon_2b_4l_ink}, 522 {'K',0.0,&canon_1b_2l_ink}, 523 {'c',0.5,&canon_2b_4l_ink}, 524 {'m',0.5,&canon_2b_4l_ink}, 525 {0,0.0,NULL}, 526 {'k',1.0,&canon_2b_4l_ink}, 527 {0,0.0,NULL} 528}; 529 530static const canon_inkset_t canon_9_C5M5Y5_inkset[] = { 531 {'C',1.0,&canon_4b_5l_ink}, 532 {'M',1.0,&canon_4b_5l_ink}, 533 {'Y',1.0,&canon_4b_5l_ink}, 534 {0,0.0,NULL}, 535 {0,0.0,NULL}, 536 {0,0.0,NULL}, 537 {0,0.0,NULL}, 538 {0,0.0,NULL}, 539 {0,0.0,NULL}, 540}; 541 542static const canon_inkset_t canon_9_C5M5Y5K2_inkset[] = { 543 {'C',1.0,&canon_4b_5l_ink}, 544 {'M',1.0,&canon_4b_5l_ink}, 545 {'Y',1.0,&canon_4b_5l_ink}, 546 {'K',0.0,&canon_1b_2l_ink}, /* for PPpro, so no use */ 547 {0,0.0,NULL}, 548 {0,0.0,NULL}, 549 {0,0.0,NULL}, 550 {0,0.0,NULL}, 551 {0,0.0,NULL}, 552}; 553 554static const canon_inkset_t canon_9_C8M8Y4K4c8m8_inkset[] = { 555 {'C',1.0,&canon_4b_8l_ink}, 556 {'M',1.0,&canon_4b_8l_ink}, 557 {'Y',1.0,&canon_2b_4l_ink}, 558 {'K',1.0,&canon_2b_4l_ink}, 559 {'c',1.0,&canon_4b_8l_ink}, 560 {'m',1.0,&canon_4b_8l_ink}, 561 {0,0.0,NULL}, 562 {0,0.0,NULL}, 563 {0,0.0,NULL} 564}; 565 566static const canon_inkset_t canon_9_C8M8Y8c16m16_inkset[] = { 567 {'C',1.0,&canon_4b_8l_ink}, 568 {'M',1.0,&canon_4b_8l_ink}, 569 {'Y',1.0,&canon_4b_8l_ink}, 570 {0,0.0,NULL}, 571 {'c',0.5,&canon_8b_16l_ink}, 572 {'m',0.5,&canon_8b_16l_ink}, 573 {0,0.0,NULL}, 574 {0,0.0,NULL}, 575 {0,0.0,NULL} 576}; 577 578/* iP4000 mode used for Professional Photo Paper in Quality 4 */ 579static const canon_inkset_t canon_9_C8M8Y8c16m16k8_inkset[] = { 580 {'C',1.0,&canon_4b_8l_ink}, 581 {'M',1.0,&canon_4b_8l_ink}, 582 {'Y',1.0,&canon_4b_8l_ink}, 583 {0,0.0,NULL}, 584 {'c',0.5,&canon_4b_16l_ink}, 585 {'m',0.5,&canon_4b_16l_ink}, 586 {0,0.0,NULL}, 587 {'k',1.0,&canon_4b_8l_ink}, 588 {0,0.0,NULL} 589}; 590 591static const canon_inkset_t canon_9_C9M9Y9K2_inkset[] = { 592 {'C',1.0,&canon_4b_9l_ink}, 593 {'M',1.0,&canon_4b_9l_ink}, 594 {'Y',1.0,&canon_4b_9l_ink}, 595 {'K',1.0,&canon_1b_2l_ink}, 596 {0,0.0,NULL}, 597 {0,0.0,NULL}, 598 {0,0.0,NULL}, 599 {0,0.0,NULL}, 600 {0,0.0,NULL} 601}; 602 603static const canon_inkset_t canon_9_C9M9Y9K2c9m9y9_inkset[] = { 604 {'C',1.0,&canon_4b_9l_ink}, 605 {'M',1.0,&canon_4b_9l_ink}, 606 {'Y',1.0,&canon_4b_9l_ink}, 607 {'K',0.0,&canon_1b_2l_ink}, /* for PPpro, so no use */ 608 {'c',1.0,&canon_4b_9l_ink}, 609 {'m',1.0,&canon_4b_9l_ink}, 610 {'y',1.0,&canon_4b_9l_ink}, 611 {0,0.0,NULL}, 612 {0,0.0,NULL} 613}; 614 615static const canon_inkset_t canon_9_c9m9y9_inkset[] = { 616 {0,0.0,NULL}, 617 {0,0.0,NULL}, 618 {0,0.0,NULL}, 619 {0,0.0,NULL}, 620 {'c',1.0,&canon_8b_9l_ink}, 621 {'m',1.0,&canon_8b_9l_ink}, 622 {'y',1.0,&canon_8b_9l_ink}, 623 {0,0.0,NULL}, 624 {0,0.0,NULL}, 625 {0,0.0,NULL}, 626 {0,0.0,NULL}, 627 {0,0.0,NULL}, 628 {0,0.0,NULL}, 629}; 630 631/* PIXMA Pro9000, Pro9000 Mk.II, Pro9500, Pro9500 Mk.II, PIXMA iP8500 */ 632static const canon_inkset_t canon_11_C2M2Y2K2_inkset[] = { 633 {'C',1.0,&canon_1b_2l_ink}, 634 {'M',1.0,&canon_1b_2l_ink}, 635 {'Y',1.0,&canon_1b_2l_ink}, 636 {'K',1.0,&canon_1b_2l_ink}, 637 {0,0.0,NULL}, 638 {0,0.0,NULL}, 639 {0,0.0,NULL}, 640 {0,0.0,NULL}, 641 {0,0.0,NULL}, 642 {0,0.0,NULL}, 643 {0,0.0,NULL} 644}; 645 646/* Pro9000 */ 647static const canon_inkset_t canon_11_C5M5Y5K5c5m5_c_inkset[] = { 648 {'C',1.0,&canon_4b_5l_c_ink}, 649 {'M',1.0,&canon_4b_5l_c_ink}, 650 {'Y',1.0,&canon_4b_5l_c_ink}, 651 {'K',1.0,&canon_4b_5l_c_ink}, 652 {'c',1.0,&canon_4b_5l_c_ink}, 653 {'m',1.0,&canon_4b_5l_c_ink}, 654 {0,0.0,NULL}, 655 {0,0.0,NULL}, 656 {0,0.0,NULL}, 657 {0,0.0,NULL}, 658 {0,0.0,NULL} 659}; 660 661/* PIXMA Pro9000, Pro9000 Mk.II, Pro9500, Pro9500 Mk.II, PIXMA iP8500 */ 662static const canon_inkset_t canon_11_C6M6Y6K6_c_inkset[] = { 663 {'C',1.0,&canon_4b_6l_c_ink}, 664 {'M',1.0,&canon_4b_6l_c_ink}, 665 {'Y',1.0,&canon_4b_6l_c_ink}, 666 {'K',1.0,&canon_4b_6l_c_ink}, 667 {0,0.0,NULL}, 668 {0,0.0,NULL}, 669 {0,0.0,NULL}, 670 {0,0.0,NULL}, 671 {0,0.0,NULL}, 672 {0,0.0,NULL}, 673 {0,0.0,NULL} 674}; 675 676/* Pro9000, Pro9000 Mk.II */ 677static const canon_inkset_t canon_11_C6M6Y6K6c6m6_c_inkset[] = { 678 {'C',1.0,&canon_4b_6l_c_ink}, 679 {'M',1.0,&canon_4b_6l_c_ink}, 680 {'Y',1.0,&canon_4b_6l_c_ink}, 681 {'K',1.0,&canon_4b_6l_c_ink}, 682 {'c',1.0,&canon_4b_6l_c_ink}, 683 {'m',1.0,&canon_4b_6l_c_ink}, 684 {0,0.0,NULL}, 685 {0,0.0,NULL}, 686 {0,0.0,NULL}, 687 {0,0.0,NULL}, 688 {0,0.0,NULL} 689}; 690 691/* Pro9000, Pro9000 Mk.II */ 692static const canon_inkset_t canon_11_C6M6Y6K6c16m16_c_inkset[] = { 693 {'C',1.0,&canon_4b_6l_c_ink}, 694 {'M',1.0,&canon_4b_6l_c_ink}, 695 {'Y',1.0,&canon_4b_6l_c_ink}, 696 {'K',1.0,&canon_4b_6l_c_ink}, 697 {'c',1.0,&canon_4b_16l_ink}, 698 {'m',1.0,&canon_4b_16l_ink}, 699 {0,0.0,NULL}, 700 {0,0.0,NULL}, 701 {0,0.0,NULL}, 702 {0,0.0,NULL}, 703 {0,0.0,NULL} 704}; 705 706/* Pro9000, Pro9000 Mk.II, PIXMA iP8500 */ 707static const canon_inkset_t canon_11_C6M6Y6K9c6m6_c_inkset[] = { 708 {'C',1.0,&canon_4b_6l_c_ink}, 709 {'M',1.0,&canon_4b_6l_c_ink}, 710 {'Y',1.0,&canon_4b_6l_c_ink}, 711 {'K',1.0,&canon_4b_9l_ink}, 712 {'c',1.0,&canon_4b_6l_c_ink}, 713 {'m',1.0,&canon_4b_6l_c_ink}, 714 {0,0.0,NULL}, 715 {0,0.0,NULL}, 716 {0,0.0,NULL}, 717 {0,0.0,NULL}, 718 {0,0.0,NULL} 719}; 720 721/* PIXMA Pro9500, Pro9500 Mk.II */ 722static const canon_inkset_t canon_11_C16M16Y16k16_inkset[] = { 723 {'C',1.0,&canon_4b_16l_ink}, 724 {'M',1.0,&canon_4b_16l_ink}, 725 {'Y',1.0,&canon_4b_16l_ink}, 726 {0,0.0,NULL}, 727 {0,0.0,NULL}, 728 {0,0.0,NULL}, 729 {0,0.0,NULL}, 730 {'k',1.0,&canon_4b_16l_ink}, 731 {0,0.0,NULL}, 732 {0,0.0,NULL}, 733 {0,0.0,NULL} 734}; 735 736/* Pro9000 Mk.II */ 737static const canon_inkset_t canon_11_C16M16Y16K16c16m16_inkset[] = { 738 {'C',1.0,&canon_4b_16l_ink}, 739 {'M',1.0,&canon_4b_16l_ink}, 740 {'Y',1.0,&canon_4b_16l_ink}, 741 {'K',1.0,&canon_4b_16l_ink}, 742 {'c',1.0,&canon_4b_16l_ink}, 743 {'m',1.0,&canon_4b_16l_ink}, 744 {0,0.0,NULL}, 745 {0,0.0,NULL}, 746 {0,0.0,NULL}, 747 {0,0.0,NULL}, 748 {0,0.0,NULL} 749}; 750 751/* Gernot: MP150 (MP170 for tests) greyscale */ 752static const canon_inkset_t canon_13_K2_inkset[] = { 753 {0,0.0,NULL}, 754 {0,0.0,NULL}, 755 {0,0.0,NULL}, 756 {'K',1.0,&canon_1b_2l_ink}, 757 {0,0.0,NULL}, 758 {0,0.0,NULL}, 759 {0,0.0,NULL}, 760 {0,0.0,NULL}, 761 {0,0.0,NULL}, 762 {0,0.0,NULL}, 763 {0,0.0,NULL}, 764 {0,0.0,NULL}, 765 {0,0.0,NULL}, 766}; 767 768/* MP150 (MP250 for tests) greyscale */ 769static const canon_inkset_t canon_13_K3_inkset[] = { 770 {0,0.0,NULL}, 771 {0,0.0,NULL}, 772 {0,0.0,NULL}, 773 {'K',1.0,&canon_2b_3l_ink}, 774 {0,0.0,NULL}, 775 {0,0.0,NULL}, 776 {0,0.0,NULL}, 777 {0,0.0,NULL}, 778 {0,0.0,NULL}, 779 {0,0.0,NULL}, 780 {0,0.0,NULL}, 781 {0,0.0,NULL}, 782 {0,0.0,NULL}, 783}; 784 785/* iP2700, MP270 color cartridge only, plain fast mode */ 786static const canon_inkset_t canon_13_C2M2Y2_inkset[] = { 787 {'C',1.0,&canon_1b_2l_ink}, 788 {'M',1.0,&canon_1b_2l_ink}, 789 {'Y',1.0,&canon_1b_2l_ink}, 790 {0,0.0,NULL}, 791 {0,0.0,NULL}, 792 {0,0.0,NULL}, 793 {0,0.0,NULL}, 794 {0,0.0,NULL}, 795 {0,0.0,NULL}, 796 {0,0.0,NULL}, 797 {0,0.0,NULL}, 798 {0,0.0,NULL}, 799 {0,0.0,NULL}, 800}; 801 802static const canon_inkset_t canon_13_C2M2Y2K2_inkset[] = { 803 {'C',1.0,&canon_1b_2l_ink}, 804 {'M',1.0,&canon_1b_2l_ink}, 805 {'Y',1.0,&canon_1b_2l_ink}, 806 {'K',1.0,&canon_1b_2l_ink}, 807 {0,0.0,NULL}, 808 {0,0.0,NULL}, 809 {0,0.0,NULL}, 810 {0,0.0,NULL}, 811 {0,0.0,NULL}, 812 {0,0.0,NULL}, 813 {0,0.0,NULL}, 814 {0,0.0,NULL}, 815 {0,0.0,NULL}, 816}; 817 818/* MX7600, iX7000 */ 819static const canon_inkset_t canon_13_C2M2Y2K2k2_inkset[] = { 820 {'C',1.0,&canon_1b_2l_ink}, 821 {'M',1.0,&canon_1b_2l_ink}, 822 {'Y',1.0,&canon_1b_2l_ink}, 823 {'K',1.0,&canon_1b_2l_ink}, 824 {0,0.0,NULL}, 825 {0,0.0,NULL}, 826 {'k',1.0,&canon_1b_2l_ink}, /* swap y and k */ 827 {0,0.0,NULL}, 828 {0,0.0,NULL}, 829 {0,0.0,NULL}, 830 {0,0.0,NULL}, 831 {0,0.0,NULL}, 832 {0,0.0,NULL}, 833}; 834 835/* iP2700, MP270 color cartridge only, plain mode */ 836static const canon_inkset_t canon_13_C3M3Y2_inkset[] = { 837 {'C',1.0,&canon_2b_3l_ink}, 838 {'M',1.0,&canon_2b_3l_ink}, 839 {'Y',1.0,&canon_1b_2l_ink}, 840 {0,0.0,NULL}, 841 {0,0.0,NULL}, 842 {0,0.0,NULL}, 843 {0,0.0,NULL}, 844 {0,0.0,NULL}, 845 {0,0.0,NULL}, 846 {0,0.0,NULL}, 847 {0,0.0,NULL}, 848 {0,0.0,NULL}, 849 {0,0.0,NULL}, 850}; 851 852/* iP1900 color cartridge only, plain mode */ 853static const canon_inkset_t canon_13_C3M3Y2b_inkset[] = { 854 {'C',1.0,&canon_2b_3l_ink}, 855 {'M',1.0,&canon_2b_3l_ink}, 856 {'Y',1.0,&canon_2b_2l_ink}, 857 {0,0.0,NULL}, 858 {0,0.0,NULL}, 859 {0,0.0,NULL}, 860 {0,0.0,NULL}, 861 {0,0.0,NULL}, 862 {0,0.0,NULL}, 863 {0,0.0,NULL}, 864 {0,0.0,NULL}, 865 {0,0.0,NULL}, 866 {0,0.0,NULL}, 867}; 868 869static const canon_inkset_t canon_13_C3M3Y2K2_inkset[] = { 870 {'C',1.0,&canon_2b_3l_ink}, 871 {'M',1.0,&canon_2b_3l_ink}, 872 {'Y',1.0,&canon_1b_2l_ink}, 873 {'K',1.0,&canon_1b_2l_ink}, 874 {0,0.0,NULL}, 875 {0,0.0,NULL}, 876 {0,0.0,NULL}, 877 {0,0.0,NULL}, 878 {0,0.0,NULL}, 879 {0,0.0,NULL}, 880 {0,0.0,NULL}, 881 {0,0.0,NULL}, 882 {0,0.0,NULL}, 883}; 884 885/* iP1900, std mode, plain media */ 886static const canon_inkset_t canon_13_C3M3Y2K2b_inkset[] = { 887 {'C',1.0,&canon_2b_3l_ink}, 888 {'M',1.0,&canon_2b_3l_ink}, 889 {'Y',1.0,&canon_2b_2l_ink}, 890 {'K',1.0,&canon_1b_2l_ink}, 891 {0,0.0,NULL}, 892 {0,0.0,NULL}, 893 {0,0.0,NULL}, 894 {0,0.0,NULL}, 895 {0,0.0,NULL}, 896 {0,0.0,NULL}, 897 {0,0.0,NULL}, 898 {0,0.0,NULL}, 899 {0,0.0,NULL}, 900}; 901 902/* Gernot: iP4500 standard mode changed from the compressed one below */ 903/* iP4700 also uses this */ 904/* iP4800 also uses this */ 905/* MG5100, MG5200 */ 906/* TODO: how to get both K and k working, for Hagaki and Env modes */ 907static const canon_inkset_t canon_13_C3M3Y2K2y3_c_inkset[] = { 908 {'C',1.0,&canon_2b_3l_c_ink}, 909 {'M',1.0,&canon_2b_3l_c_ink}, 910 {'Y',1.0,&canon_1b_2l_ink}, 911 {'K',1.0,&canon_1b_2l_ink}, 912 {0,0.0,NULL}, 913 {0,0.0,NULL}, 914 {'k',0.0,&canon_2b_3l_c_ink}, /* swap y for k, but in any case it is not in output for plain modes */ 915 {0,0.0,NULL}, 916 {0,0.0,NULL}, 917 {0,0.0,NULL}, 918 {0,0.0,NULL}, 919 {0,0.0,NULL}, 920 {0,0.0,NULL}, 921}; 922 923/* iX7000 */ 924static const canon_inkset_t canon_13_C3M3Y2K2k3_c_inkset[] = { 925 {'C',1.0,&canon_2b_3l_c_ink}, 926 {'M',1.0,&canon_2b_3l_c_ink}, 927 {'Y',1.0,&canon_1b_2l_ink}, 928 {'K',1.0,&canon_1b_2l_ink}, 929 {0,0.0,NULL}, 930 {0,0.0,NULL}, 931 {'k',0.0,&canon_2b_3l_c_ink}, /* swap y and k */ 932 {0,0.0,NULL}, 933 {0,0.0,NULL}, 934 {0,0.0,NULL}, 935 {0,0.0,NULL}, 936 {0,0.0,NULL}, 937 {0,0.0,NULL}, 938}; 939 940/* Gernot: MP250, MP280 photo modes */ 941static const canon_inkset_t canon_13_C4M4Y4_inkset[] = { 942 {'C',1.0,&canon_2b_4l_ink}, 943 {'M',1.0,&canon_2b_4l_ink}, 944 {'Y',1.0,&canon_2b_4l_ink}, 945 {0,0.0,NULL}, 946 {0,0.0,NULL}, 947 {0,0.0,NULL}, 948 {0,0.0,NULL}, 949 {0,0.0,NULL}, 950 {0,0.0,NULL}, 951 {0,0.0,NULL}, 952 {0,0.0,NULL}, 953 {0,0.0,NULL}, 954 {0,0.0,NULL}, 955}; 956 957static const canon_inkset_t canon_13_C4M4Y4K2_inkset[] = { 958 {'C',1.0,&canon_2b_4l_ink}, 959 {'M',1.0,&canon_2b_4l_ink}, 960 {'Y',1.0,&canon_2b_4l_ink}, 961 {'K',1.0,&canon_1b_2l_ink}, 962 {0,0.0,NULL}, 963 {0,0.0,NULL}, 964 {0,0.0,NULL}, 965 {0,0.0,NULL}, 966 {0,0.0,NULL}, 967 {0,0.0,NULL}, 968 {0,0.0,NULL}, 969 {0,0.0,NULL}, 970 {0,0.0,NULL}, 971}; 972 973/* Gernot: MP250, MP270, MP280 high mode */ 974static const canon_inkset_t canon_13_C4M4Y3K3_inkset[] = { 975 {'C',1.0,&canon_2b_4l_ink}, 976 {'M',1.0,&canon_2b_4l_ink}, 977 {'Y',1.0,&canon_2b_3l_ink}, 978 {'K',1.0,&canon_2b_3l_ink}, 979 {0,0.0,NULL}, 980 {0,0.0,NULL}, 981 {0,0.0,NULL}, 982 {0,0.0,NULL}, 983 {0,0.0,NULL}, 984 {0,0.0,NULL}, 985 {0,0.0,NULL}, 986 {0,0.0,NULL}, 987 {0,0.0,NULL}, 988}; 989 990 991/* Gernot: MP150 (MP170 for tests) high-quality mode */ 992static const canon_inkset_t canon_13_C4M4Y4K2c4m4y4_inkset[] = { 993 {'C',1.0,&canon_4b_4l_ink}, 994 {'M',1.0,&canon_4b_4l_ink}, 995 {'Y',1.0,&canon_4b_4l_ink}, 996 {'K',1.0,&canon_1b_2l_ink}, 997 {'c',1.0,&canon_4b_4l_ink}, 998 {'m',1.0,&canon_4b_4l_ink}, 999 {'y',1.0,&canon_4b_4l_ink}, /* output uses y */ 1000 {0,0.0,NULL}, 1001 {0,0.0,NULL}, 1002 {0,0.0,NULL}, 1003 {0,0.0,NULL}, 1004 {0,0.0,NULL}, 1005 {0,0.0,NULL}, 1006}; 1007 1008/* test on iP5300 --- swap y and k */ 1009static const canon_inkset_t canon_13_C4M4Y4K2c4m4k4_inkset[] = { 1010 {'C',1.0,&canon_4b_4l_ink}, 1011 {'M',1.0,&canon_4b_4l_ink}, 1012 {'Y',1.0,&canon_4b_4l_ink}, 1013 {'K',0.0,&canon_1b_2l_ink}, /* do not use for photo modes */ 1014 {'c',1.0,&canon_4b_4l_ink}, 1015 {'m',1.0,&canon_4b_4l_ink}, 1016 {'k',1.0,&canon_4b_4l_ink}, 1017 {0,0.0,NULL}, 1018 {0,0.0,NULL}, 1019 {0,0.0,NULL}, 1020 {0,0.0,NULL}, 1021 {0,0.0,NULL}, 1022 {0,0.0,NULL}, 1023}; 1024 1025/* iP2700 in user-defined highest quality mode for PPGlossPro paper */ 1026/* MP270 same for PPGpro */ 1027/* MP280 same for PPGproPlat */ 1028/* less 0x60 in bytes */ 1029static const canon_inkset_t canon_13_c3m3y3_inkset[] = { 1030 {0,0.0,NULL}, 1031 {0,0.0,NULL}, 1032 {0,0.0,NULL}, 1033 {0,0.0,NULL}, 1034 {'c',1.0,&canon_2b_3l_ink}, 1035 {'m',1.0,&canon_2b_3l_ink}, 1036 {'y',1.0,&canon_2b_3l_ink}, 1037 {0,0.0,NULL}, 1038 {0,0.0,NULL}, 1039 {0,0.0,NULL}, 1040 {0,0.0,NULL}, 1041 {0,0.0,NULL}, 1042 {0,0.0,NULL}, 1043}; 1044 1045/* Gernot: MP150 (MP170 for tests) high-quality mode for 1046 High Resolution Paper 1047 Inkjet Hagaki 1048 pro Photo Paper 1049 super Photo Paper 1050 super Photo Paper Double Sided 1051 matte Photo Paper 1052 other Photo Paper 1053 1054Also used for all modes of gloss Photo Paper 1055*/ 1056static const canon_inkset_t canon_13_C4M4Y4c4m4y4_inkset[] = { 1057 {'C',1.0,&canon_4b_4l_ink}, 1058 {'M',1.0,&canon_4b_4l_ink}, 1059 {'Y',1.0,&canon_4b_4l_ink}, 1060 {0,0.0,NULL}, 1061 {'c',1.0,&canon_4b_4l_ink}, 1062 {'m',1.0,&canon_4b_4l_ink}, 1063 {'k',1.0,&canon_4b_4l_ink}, /* swap y and k */ 1064 {0,0.0,NULL}, 1065 {0,0.0,NULL}, 1066 {0,0.0,NULL}, 1067 {0,0.0,NULL}, 1068 {0,0.0,NULL}, 1069 {0,0.0,NULL}, 1070}; 1071 1072/* Gernot: MP150 (MP170 for tests) T-shirt transfers */ 1073static const canon_inkset_t canon_13_C5M5Y5_inkset[] = { 1074 {'C',1.0,&canon_4b_5l_ink}, 1075 {'M',1.0,&canon_4b_5l_ink}, 1076 {'Y',1.0,&canon_4b_5l_ink}, 1077 {0,0.0,NULL}, 1078 {0,0.0,NULL}, 1079 {0,0.0,NULL}, 1080 {0,0.0,NULL}, 1081 {0,0.0,NULL}, 1082 {0,0.0,NULL}, 1083 {0,0.0,NULL}, 1084 {0,0.0,NULL}, 1085 {0,0.0,NULL}, 1086 {0,0.0,NULL}, 1087}; 1088 1089/* Gernot: added for iP4700 CD printing */ 1090/* iP4800 also uses this */ 1091/* also MG5200 */ 1092static const canon_inkset_t canon_13_C5M5Y4y4_inkset[] = { 1093 {'C',1.0,&canon_4b_5l_ink}, 1094 {'M',1.0,&canon_4b_5l_ink}, 1095 {'Y',1.0,&canon_2b_4l_ink}, 1096 {0,0.0,NULL}, 1097 {0,0.0,NULL}, 1098 {0,0.0,NULL}, 1099 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1100 {0,0.0,NULL}, 1101 {0,0.0,NULL}, 1102 {0,0.0,NULL}, 1103 {0,0.0,NULL}, 1104 {0,0.0,NULL}, 1105 {0,0.0,NULL}, 1106}; 1107 1108/* iX7000 photo mode */ 1109static const canon_inkset_t canon_13_C6M6Y2K2k4_inkset[] = { 1110 {'C',1.0,&canon_4b_6l_ink}, 1111 {'M',1.0,&canon_4b_6l_ink}, 1112 {'Y',1.0,&canon_2b_2l_ink}, 1113 {'K',1.0,&canon_1b_2l_ink}, 1114 {0,0.0,NULL}, 1115 {0,0.0,NULL}, 1116 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1117 {0,0.0,NULL}, 1118 {0,0.0,NULL}, 1119 {0,0.0,NULL}, 1120 {0,0.0,NULL}, 1121 {0,0.0,NULL}, 1122 {0,0.0,NULL}, 1123}; 1124 1125/* Gernot: added for iP4700 photo standard quality */ 1126/* MG5100, MG5200 */ 1127static const canon_inkset_t canon_13_C6M6Y4y4_inkset[] = { 1128 {'C',1.0,&canon_4b_6l_ink}, 1129 {'M',1.0,&canon_4b_6l_ink}, 1130 {'Y',1.0,&canon_2b_4l_ink}, 1131 {0,0.0,NULL}, 1132 {0,0.0,NULL}, 1133 {0,0.0,NULL}, 1134 {'k',1.0,&canon_2b_4l_ink}, /* set y to k for photo modes */ 1135 {0,0.0,NULL}, 1136 {0,0.0,NULL}, 1137 {0,0.0,NULL}, 1138 {0,0.0,NULL}, 1139 {0,0.0,NULL}, 1140 {0,0.0,NULL}, 1141}; 1142 1143/* Gernot: added for iP4500 high quality --- check the pos of k/y */ 1144/* iP4700 also uses this */ 1145/* iP4800 also uses this */ 1146/* MG5100, MG5200 */ 1147static const canon_inkset_t canon_13_C6M6Y4K2y4_inkset[] = { 1148 {'C',1.0,&canon_4b_6l_ink}, 1149 {'M',1.0,&canon_4b_6l_ink}, 1150 {'Y',1.0,&canon_2b_4l_ink}, 1151 {'K',1.0,&canon_1b_2l_ink}, 1152 {0,0.0,NULL}, 1153 {0,0.0,NULL}, 1154 {'k',1.0,&canon_2b_4l_ink}, /* set y to k for photo modes */ 1155 {0,0.0,NULL}, 1156 {0,0.0,NULL}, 1157 {0,0.0,NULL}, 1158 {0,0.0,NULL}, 1159 {0,0.0,NULL}, 1160 {0,0.0,NULL}, 1161}; 1162 1163static const canon_inkset_t canon_13_C6M6Y4K2k4_inkset[] = { 1164 {'C',1.0,&canon_4b_6l_ink}, 1165 {'M',1.0,&canon_4b_6l_ink}, 1166 {'Y',1.0,&canon_2b_4l_ink}, 1167 {'K',1.0,&canon_1b_2l_ink}, 1168 {0,0.0,NULL}, 1169 {0,0.0,NULL}, 1170 {'k',0.0,&canon_2b_4l_ink}, 1171 {0,0.0,NULL}, 1172 {0,0.0,NULL}, 1173 {0,0.0,NULL}, 1174 {0,0.0,NULL}, 1175 {0,0.0,NULL}, 1176 {0,0.0,NULL}, 1177}; 1178 1179/* MX7600, iX7000 */ 1180static const canon_inkset_t canon_13_C6M6Y4K3k4_c_inkset[] = { 1181 {'C',1.0,&canon_4b_6l_ink}, 1182 {'M',1.0,&canon_4b_6l_ink}, 1183 {'Y',1.0,&canon_2b_4l_ink}, 1184 {'K',1.0,&canon_2b_3l_c_ink}, 1185 {0,0.0,NULL}, 1186 {0,0.0,NULL}, 1187 {'k',0.0,&canon_2b_4l_ink},/* swapped y and k */ 1188 {0,0.0,NULL}, 1189 {0,0.0,NULL}, 1190 {0,0.0,NULL}, 1191 {0,0.0,NULL}, 1192 {0,0.0,NULL}, 1193 {0,0.0,NULL}, 1194}; 1195 1196static const canon_inkset_t canon_13_C6M6Y4k4yask_inkset[] = { 1197 {'C',1.0,&canon_4b_6l_ink}, 1198 {'M',1.0,&canon_4b_6l_ink}, 1199 {'Y',1.0,&canon_2b_4l_ink}, 1200 {0,0.0,NULL}, 1201 {0,0.0,NULL}, 1202 {0,0.0,NULL}, 1203 {'k',1.0,&canon_2b_4l_ink}, 1204 {0,0.0,NULL}, 1205 {0,0.0,NULL}, 1206 {0,0.0,NULL}, 1207 {0,0.0,NULL}, 1208 {0,0.0,NULL}, 1209 {0,0.0,NULL}, 1210}; 1211 1212/* Gernot: iP4500 photo mode */ 1213/* iP4700 also uses this */ 1214/* iP4800 also uses this */ 1215/* MG5100, MG5200 */ 1216static const canon_inkset_t canon_13_C8M8Y4y4_inkset[] = { 1217 {'C',1.0,&canon_4b_8l_ink}, 1218 {'M',1.0,&canon_4b_8l_ink}, 1219 {'Y',1.0,&canon_2b_4l_ink}, 1220 {0,0.0,NULL}, 1221 {0,0.0,NULL}, 1222 {0,0.0,NULL}, 1223 {'k',1.0,&canon_2b_4l_ink}, /* set y to k for photo modes */ 1224 {0,0.0,NULL}, 1225 {0,0.0,NULL}, 1226 {0,0.0,NULL}, 1227 {0,0.0,NULL}, 1228 {0,0.0,NULL}, 1229 {0,0.0,NULL}, 1230}; 1231 1232static const canon_inkset_t canon_13_C8M8Y4K4k4_inkset[] = { 1233 {'C',1.0,&canon_4b_8l_ink}, 1234 {'M',1.0,&canon_4b_8l_ink}, 1235 {'Y',1.0,&canon_2b_4l_ink}, 1236 {'K',1.0,&canon_2b_4l_ink}, 1237 {0,0.0,NULL}, 1238 {0,0.0,NULL}, 1239 {0,0.0,NULL}, 1240 {'k',1.0,&canon_2b_4l_ink}, 1241 {0,0.0,NULL}, 1242 {0,0.0,NULL}, 1243 {0,0.0,NULL}, 1244 {0,0.0,NULL}, 1245 {0,0.0,NULL}, 1246}; 1247 1248static const canon_inkset_t canon_13_C8M8Y4k4yask_inkset[] = { 1249 {'C',1.0,&canon_4b_8l_ink}, 1250 {'M',1.0,&canon_4b_8l_ink}, 1251 {'Y',1.0,&canon_2b_4l_ink}, 1252 {0,0.0,NULL}, 1253 {0,0.0,NULL}, 1254 {0,0.0,NULL}, 1255 {'k',1.0,&canon_2b_4l_ink}, 1256 {0,0.0,NULL}, 1257 {0,0.0,NULL}, 1258 {0,0.0,NULL}, 1259 {0,0.0,NULL}, 1260 {0,0.0,NULL}, 1261 {0,0.0,NULL}, 1262}; 1263 1264/* Gernot: MP150 (MP170 for tests) high-quality mode for 1265 High Resolution Paper 1266 Inkjet Hagaki 1267 pro Photo Paper 1268 super Photo Paper 1269 super Photo Paper Double Sided 1270 matte Photo Paper 1271 other Photo Paper 1272 1273 for some reason there is a hack for iP6700 appearing here which might make the y into a k (swapping) 1274*/ 1275static const canon_inkset_t canon_13_c9m9y9_inkset[] = { 1276 {0,0.0,NULL}, 1277 {0,0.0,NULL}, 1278 {0,0.0,NULL}, 1279 {0,0.0,NULL}, 1280 {'c',1.0,&canon_8b_9l_ink}, 1281 {'m',1.0,&canon_8b_9l_ink}, 1282 {'y',1.0,&canon_8b_9l_ink}, 1283 {0,0.0,NULL}, 1284 {0,0.0,NULL}, 1285 {0,0.0,NULL}, 1286 {0,0.0,NULL}, 1287 {0,0.0,NULL}, 1288 {0,0.0,NULL}, 1289}; 1290 1291/* MP980 uss 16 inks */ 1292static const canon_inkset_t canon_16_C8M8Y4k4_inkset[] = { 1293 {'C',1.0,&canon_4b_8l_ink}, 1294 {'M',1.0,&canon_4b_8l_ink}, 1295 {'Y',1.0,&canon_2b_4l_ink}, 1296 {0,0.0,NULL}, 1297 {0,0.0,NULL}, 1298 {0,0.0,NULL}, 1299 {'k',1.0,&canon_2b_4l_ink}, /* y and k swapped */ 1300 {0,0.0,NULL}, 1301 {0,0.0,NULL}, 1302 {0,0.0,NULL}, 1303 {0,0.0,NULL}, 1304 {0,0.0,NULL}, 1305 {0,0.0,NULL}, 1306 {0,0.0,NULL}, 1307 {0,0.0,NULL}, 1308 {0,0.0,NULL}, 1309}; 1310 1311static const canon_inkset_t canon_16_C6M6Y4K2k4_inkset[] = { 1312 {'C',1.0,&canon_4b_6l_ink}, 1313 {'M',1.0,&canon_4b_6l_ink}, 1314 {'Y',1.0,&canon_2b_4l_ink}, 1315 {'K',1.0,&canon_1b_2l_ink}, 1316 {0,0.0,NULL}, 1317 {0,0.0,NULL}, 1318 {'k',1.0,&canon_2b_4l_ink}, /* y and k swapped */ 1319 {0,0.0,NULL}, 1320 {0,0.0,NULL}, 1321 {0,0.0,NULL}, 1322 {0,0.0,NULL}, 1323 {0,0.0,NULL}, 1324 {0,0.0,NULL}, 1325 {0,0.0,NULL}, 1326 {0,0.0,NULL}, 1327 {0,0.0,NULL}, 1328}; 1329 1330static const canon_inkset_t canon_16_C6M6Y4k4_inkset[] = { 1331 {'C',1.0,&canon_4b_6l_ink}, 1332 {'M',1.0,&canon_4b_6l_ink}, 1333 {'Y',1.0,&canon_2b_4l_ink}, 1334 {0,0.0,NULL}, 1335 {0,0.0,NULL}, 1336 {0,0.0,NULL}, 1337 {'k',1.0,&canon_2b_4l_ink}, /* y and k swapped */ 1338 {0,0.0,NULL}, 1339 {0,0.0,NULL}, 1340 {0,0.0,NULL}, 1341 {0,0.0,NULL}, 1342 {0,0.0,NULL}, 1343 {0,0.0,NULL}, 1344 {0,0.0,NULL}, 1345 {0,0.0,NULL}, 1346 {0,0.0,NULL}, 1347}; 1348 1349static const canon_inkset_t canon_16_C5M5Y4k4_inkset[] = { 1350 {'C',1.0,&canon_4b_5l_ink}, 1351 {'M',1.0,&canon_4b_5l_ink}, 1352 {'Y',1.0,&canon_2b_4l_ink}, 1353 {0,0.0,NULL}, 1354 {0,0.0,NULL}, 1355 {0,0.0,NULL}, 1356 {'k',1.0,&canon_2b_4l_ink}, /* y and k swapped */ 1357 {0,0.0,NULL}, 1358 {0,0.0,NULL}, 1359 {0,0.0,NULL}, 1360 {0,0.0,NULL}, 1361 {0,0.0,NULL}, 1362 {0,0.0,NULL}, 1363 {0,0.0,NULL}, 1364 {0,0.0,NULL}, 1365 {0,0.0,NULL}, 1366}; 1367 1368static const canon_inkset_t canon_16_C3M3Y2K2k3_c_inkset[] = { 1369 {'C',1.0,&canon_2b_3l_c_ink}, 1370 {'M',1.0,&canon_2b_3l_c_ink}, 1371 {'Y',1.0,&canon_1b_2l_ink}, 1372 {'K',1.0,&canon_1b_2l_ink}, 1373 {0,0.0,NULL}, 1374 {0,0.0,NULL}, 1375 {'k',1.0,&canon_2b_3l_c_ink}, /* y and k swapped */ 1376 {0,0.0,NULL}, 1377 {0,0.0,NULL}, 1378 {0,0.0,NULL}, 1379 {0,0.0,NULL}, 1380 {0,0.0,NULL}, 1381 {0,0.0,NULL}, 1382 {0,0.0,NULL}, 1383 {0,0.0,NULL}, 1384 {0,0.0,NULL}, 1385}; 1386 1387static const canon_inkset_t canon_16_C2M2Y2K2_inkset[] = { 1388 {'C',1.0,&canon_1b_2l_ink}, 1389 {'M',1.0,&canon_1b_2l_ink}, 1390 {'Y',1.0,&canon_1b_2l_ink}, 1391 {'K',1.0,&canon_1b_2l_ink}, 1392 {0,0.0,NULL}, 1393 {0,0.0,NULL}, 1394 {0,0.0,NULL}, 1395 {0,0.0,NULL}, 1396 {0,0.0,NULL}, 1397 {0,0.0,NULL}, 1398 {0,0.0,NULL}, 1399 {0,0.0,NULL}, 1400 {0,0.0,NULL}, 1401 {0,0.0,NULL}, 1402 {0,0.0,NULL}, 1403 {0,0.0,NULL}, 1404}; 1405 1406 1407static const canon_inkset_t canon_19_C2M2Y2K2_inkset[] = { 1408 {'C',1.0,&canon_1b_2l_ink}, 1409 {'M',1.0,&canon_1b_2l_ink}, 1410 {'Y',1.0,&canon_1b_2l_ink}, 1411 {'K',1.0,&canon_1b_2l_ink}, 1412 {0,0.0,NULL}, 1413 {0,0.0,NULL}, 1414 {0,0.0,NULL}, 1415 {0,0.0,NULL}, 1416 {0,0.0,NULL}, 1417 {0,0.0,NULL}, 1418 {0,0.0,NULL}, 1419 {0,0.0,NULL}, 1420 {0,0.0,NULL}, 1421 {0,0.0,NULL}, 1422 {0,0.0,NULL}, 1423 {0,0.0,NULL}, 1424 {0,0.0,NULL}, 1425 {0,0.0,NULL}, 1426 {0,0.0,NULL}, 1427}; 1428 1429/* iP6700D Fast plain mode */ 1430static const canon_inkset_t canon_19_C2M2Y2k2_inkset[] = { 1431 {'C',1.0,&canon_1b_2l_ink}, 1432 {'M',1.0,&canon_1b_2l_ink}, 1433 {'Y',1.0,&canon_1b_2l_ink}, 1434 {0,0.0,NULL}, 1435 {0,0.0,NULL}, 1436 {0,0.0,NULL}, 1437 {'k',1.0,&canon_1b_2l_ink},/* swap y and k */ 1438 {0,0.0,NULL}, 1439 {0,0.0,NULL}, 1440 {0,0.0,NULL}, 1441 {0,0.0,NULL}, 1442 {0,0.0,NULL}, 1443 {0,0.0,NULL}, 1444 {0,0.0,NULL}, 1445 {0,0.0,NULL}, 1446 {0,0.0,NULL}, 1447 {0,0.0,NULL}, 1448 {0,0.0,NULL}, 1449 {0,0.0,NULL}, 1450}; 1451 1452static const canon_inkset_t canon_19_C3M3Y3k3_inkset[] = { 1453 {'C',1.0,&canon_2b_3l_ink}, 1454 {'M',1.0,&canon_2b_3l_ink}, 1455 {'Y',1.0,&canon_2b_3l_ink}, 1456 {0,0.0,NULL}, 1457 {0,0.0,NULL}, 1458 {0,0.0,NULL}, 1459 {'k',1.0,&canon_2b_3l_ink}, /* swap y and k */ 1460 {0,0.0,NULL}, 1461 {0,0.0,NULL}, 1462 {0,0.0,NULL}, 1463 {0,0.0,NULL}, 1464 {0,0.0,NULL}, 1465 {0,0.0,NULL}, 1466 {0,0.0,NULL}, 1467 {0,0.0,NULL}, 1468 {0,0.0,NULL}, 1469 {0,0.0,NULL}, 1470 {0,0.0,NULL}, 1471 {0,0.0,NULL}, 1472}; 1473 1474/* works OK on MP960 */ 1475static const canon_inkset_t canon_19_C3M3Y3K2k3_inkset[] = { 1476 {'C',1.0,&canon_2b_3l_ink}, 1477 {'M',1.0,&canon_2b_3l_ink}, 1478 {'Y',1.0,&canon_2b_3l_ink}, 1479 {'K',1.0,&canon_1b_2l_ink}, 1480 {0,0.0,NULL}, 1481 {0,0.0,NULL}, 1482 {'k',1.0,&canon_2b_3l_ink},/* need to swap y -> k */ 1483 {0,0.0,NULL}, 1484 {0,0.0,NULL}, 1485 {0,0.0,NULL}, 1486 {0,0.0,NULL}, 1487 {0,0.0,NULL}, 1488 {0,0.0,NULL}, 1489 {0,0.0,NULL}, 1490 {0,0.0,NULL}, 1491 {0,0.0,NULL}, 1492 {0,0.0,NULL}, 1493 {0,0.0,NULL}, 1494 {0,0.0,NULL}, 1495}; 1496 1497/* photo mode iP6700D T-shirt transfers */ 1498static const canon_inkset_t canon_19_C4M4Y4k4_inkset[] = { 1499 {'C',1.0,&canon_2b_4l_ink}, 1500 {'M',1.0,&canon_2b_4l_ink}, 1501 {'Y',1.0,&canon_2b_4l_ink}, 1502 {0,0.0,NULL}, 1503 {0,0.0,NULL}, 1504 {0,0.0,NULL}, 1505 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1506 {0,0.0,NULL}, 1507 {0,0.0,NULL}, 1508 {0,0.0,NULL}, 1509 {0,0.0,NULL}, 1510 {0,0.0,NULL}, 1511 {0,0.0,NULL}, 1512 {0,0.0,NULL}, 1513 {0,0.0,NULL}, 1514 {0,0.0,NULL}, 1515 {0,0.0,NULL}, 1516 {0,0.0,NULL}, 1517 {0,0.0,NULL}, 1518}; 1519 1520/* photo mode MP960 T-shirt transfers --- works OK! */ 1521static const canon_inkset_t canon_19_C4M4Y4K2k4_inkset[] = { 1522 {'C',1.0,&canon_2b_4l_ink}, 1523 {'M',1.0,&canon_2b_4l_ink}, 1524 {'Y',1.0,&canon_2b_4l_ink}, 1525 {'K',1.0,&canon_1b_2l_ink}, 1526 {0,0.0,NULL}, 1527 {0,0.0,NULL}, 1528 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1529 {0,0.0,NULL}, 1530 {0,0.0,NULL}, 1531 {0,0.0,NULL}, 1532 {0,0.0,NULL}, 1533 {0,0.0,NULL}, 1534 {0,0.0,NULL}, 1535 {0,0.0,NULL}, 1536 {0,0.0,NULL}, 1537 {0,0.0,NULL}, 1538 {0,0.0,NULL}, 1539 {0,0.0,NULL}, 1540 {0,0.0,NULL}, 1541}; 1542 1543/* photo mode MP960 CDs and iP6700D Photo High 2 [PPmatte, Coated] */ 1544static const canon_inkset_t canon_19_C4M4Y4c4m4k4_inkset[] = { 1545 {'C',1.0,&canon_2b_4l_ink}, 1546 {'M',1.0,&canon_2b_4l_ink}, 1547 {'Y',1.0,&canon_2b_4l_ink}, 1548 {0,0.0,NULL}, 1549 {'c',1.0,&canon_2b_4l_ink}, 1550 {'m',1.0,&canon_2b_4l_ink}, 1551 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1552 {0,0.0,NULL}, 1553 {0,0.0,NULL}, 1554 {0,0.0,NULL}, 1555 {0,0.0,NULL}, 1556 {0,0.0,NULL}, 1557 {0,0.0,NULL}, 1558 {0,0.0,NULL}, 1559 {0,0.0,NULL}, 1560 {0,0.0,NULL}, 1561 {0,0.0,NULL}, 1562 {0,0.0,NULL}, 1563 {0,0.0,NULL}, 1564}; 1565 1566/* photo mode iP6700D CDs, position of cmk guessed */ 1567static const canon_inkset_t canon_19_C4M4Y4c4m4k4CD_inkset[] = { 1568 {'C',1.0,&canon_2b_4l_ink}, 1569 {'M',1.0,&canon_2b_4l_ink}, 1570 {'Y',1.0,&canon_2b_4l_ink}, 1571 {0,0.0,NULL}, 1572 {0,0.0,NULL}, 1573 {0,0.0,NULL}, 1574 {0,0.0,NULL}, 1575 {0,0.0,NULL}, 1576 {0,0.0,NULL}, 1577 {0,0.0,NULL}, 1578 {'c',1.0,&canon_2b_4l_ink}, 1579 {'m',1.0,&canon_2b_4l_ink}, 1580 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1581 {0,0.0,NULL}, 1582 {0,0.0,NULL}, 1583 {0,0.0,NULL}, 1584 {0,0.0,NULL}, 1585 {0,0.0,NULL}, 1586 {0,0.0,NULL}, 1587}; 1588 1589/* photo mode MP960 PPmatte works! */ 1590static const canon_inkset_t canon_19_C4M4Y4K2c4m4k4_inkset[] = { 1591 {'C',1.0,&canon_2b_4l_ink}, 1592 {'M',1.0,&canon_2b_4l_ink}, 1593 {'Y',1.0,&canon_2b_4l_ink}, 1594 {'K',0.0,&canon_1b_2l_ink}, /* works when K is set to 0 */ 1595 {'c',1.0,&canon_2b_4l_ink}, 1596 {'m',1.0,&canon_2b_4l_ink}, 1597 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1598 {0,0.0,NULL}, 1599 {0,0.0,NULL}, 1600 {0,0.0,NULL}, 1601 {0,0.0,NULL}, 1602 {0,0.0,NULL}, 1603 {0,0.0,NULL}, 1604 {0,0.0,NULL}, 1605 {0,0.0,NULL}, 1606 {0,0.0,NULL}, 1607 {0,0.0,NULL}, 1608 {0,0.0,NULL}, 1609 {0,0.0,NULL}, 1610}; 1611 1612/* MP960 HIGH works OK */ 1613static const canon_inkset_t canon_19_C6M6Y4K2_inkset[] = { 1614 {'C',1.0,&canon_4b_6l_ink}, 1615 {'M',1.0,&canon_4b_6l_ink}, 1616 {'Y',1.0,&canon_2b_4l_ink}, 1617 {'K',1.0,&canon_1b_2l_ink}, 1618 {0,0.0,NULL}, 1619 {0,0.0,NULL}, 1620 {0,0.0,NULL}, 1621 {0,0.0,NULL}, 1622 {0,0.0,NULL}, 1623 {0,0.0,NULL}, 1624 {0,0.0,NULL}, 1625 {0,0.0,NULL}, 1626 {0,0.0,NULL}, 1627 {0,0.0,NULL}, 1628 {0,0.0,NULL}, 1629 {0,0.0,NULL}, 1630 {0,0.0,NULL}, 1631 {0,0.0,NULL}, 1632 {0,0.0,NULL}, 1633}; 1634 1635/* iP6700D Plain High: CMYk */ 1636static const canon_inkset_t canon_19_C6M6Y4c6m6k4_inkset[] = { 1637 {'C',1.0,&canon_4b_6l_ink}, 1638 {'M',1.0,&canon_4b_6l_ink}, 1639 {'Y',1.0,&canon_2b_4l_ink}, 1640 {0,0.0,NULL}, 1641 {'c',0.0,&canon_4b_6l_ink}, /* not used */ 1642 {'m',0.0,&canon_4b_6l_ink}, /* not used */ 1643 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1644 {0,0.0,NULL}, 1645 {0,0.0,NULL}, 1646 {0,0.0,NULL}, 1647 {0,0.0,NULL}, 1648 {0,0.0,NULL}, 1649 {0,0.0,NULL}, 1650 {0,0.0,NULL}, 1651 {0,0.0,NULL}, 1652 {0,0.0,NULL}, 1653 {0,0.0,NULL}, 1654 {0,0.0,NULL}, 1655 {0,0.0,NULL}, 1656}; 1657 1658/* iP6700D Photo Std: CMYKcmk */ 1659static const canon_inkset_t canon_19_C6M6Y4c6m6k4photo_inkset[] = { 1660 {'C',1.0,&canon_4b_6l_ink}, 1661 {'M',1.0,&canon_4b_6l_ink}, 1662 {'Y',1.0,&canon_2b_4l_ink}, 1663 {0,0.0,NULL}, 1664 {'c',1.0,&canon_4b_6l_ink}, 1665 {'m',1.0,&canon_4b_6l_ink}, 1666 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1667 {0,0.0,NULL}, 1668 {0,0.0,NULL}, 1669 {0,0.0,NULL}, 1670 {0,0.0,NULL}, 1671 {0,0.0,NULL}, 1672 {0,0.0,NULL}, 1673 {0,0.0,NULL}, 1674 {0,0.0,NULL}, 1675 {0,0.0,NULL}, 1676 {0,0.0,NULL}, 1677 {0,0.0,NULL}, 1678 {0,0.0,NULL}, 1679}; 1680 1681/* hagaki std & high MP960 : CMYKk*/ 1682static const canon_inkset_t canon_19_C6M6Y4K2c6m6k4hagaki_inkset[] = { 1683 {'C',1.0,&canon_4b_6l_ink}, 1684 {'M',1.0,&canon_4b_6l_ink}, 1685 {'Y',1.0,&canon_2b_4l_ink}, 1686 {'K',1.0,&canon_1b_2l_ink}, 1687 {'c',0.0,&canon_4b_6l_ink}, /* will not use, so have to set to 0 */ 1688 {'m',0.0,&canon_4b_6l_ink}, /* will not use, so have to set to 0 */ 1689 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1690 {0,0.0,NULL}, 1691 {0,0.0,NULL}, 1692 {0,0.0,NULL}, 1693 {0,0.0,NULL}, 1694 {0,0.0,NULL}, 1695 {0,0.0,NULL}, 1696 {0,0.0,NULL}, 1697 {0,0.0,NULL}, 1698 {0,0.0,NULL}, 1699 {0,0.0,NULL}, 1700 {0,0.0,NULL}, 1701 {0,0.0,NULL}, 1702}; 1703 1704/* photo std mode MP960 and inkjet Hagaki Std: CMYcmk*/ 1705static const canon_inkset_t canon_19_C6M6Y4K2c6m6k4_inkset[] = { 1706 {'C',1.0,&canon_4b_6l_ink}, 1707 {'M',1.0,&canon_4b_6l_ink}, 1708 {'Y',1.0,&canon_2b_4l_ink}, 1709 {'K',0.0,&canon_1b_2l_ink}, /* will not use K */ 1710 {'c',1.0,&canon_4b_6l_ink}, 1711 {'m',1.0,&canon_4b_6l_ink}, 1712 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1713 {0,0.0,NULL}, 1714 {0,0.0,NULL}, 1715 {0,0.0,NULL}, 1716 {0,0.0,NULL}, 1717 {0,0.0,NULL}, 1718 {0,0.0,NULL}, 1719 {0,0.0,NULL}, 1720 {0,0.0,NULL}, 1721 {0,0.0,NULL}, 1722 {0,0.0,NULL}, 1723 {0,0.0,NULL}, 1724 {0,0.0,NULL}, 1725}; 1726 1727/* iP6700D Photo High: CMYkcm */ 1728static const canon_inkset_t canon_19_C7M7Y4c7m7k4_inkset[] = { 1729 {'C',1.0,&canon_4b_7l_ink}, 1730 {'M',1.0,&canon_4b_7l_ink}, 1731 {'Y',1.0,&canon_2b_4l_ink}, 1732 {0,0.0,NULL}, 1733 {'c',1.0,&canon_4b_7l_ink}, 1734 {'m',1.0,&canon_4b_7l_ink}, 1735 {'k',1.0,&canon_2b_4l_ink}, /* swap y and k */ 1736 {0,0.0,NULL}, 1737 {0,0.0,NULL}, 1738 {0,0.0,NULL}, 1739 {0,0.0,NULL}, 1740 {0,0.0,NULL}, 1741 {0,0.0,NULL}, 1742 {0,0.0,NULL}, 1743 {0,0.0,NULL}, 1744 {0,0.0,NULL}, 1745 {0,0.0,NULL}, 1746 {0,0.0,NULL}, 1747 {0,0.0,NULL}, 1748}; 1749 1750/* photo high mode MP960 and inkjetHagaki High: CMYcmk */ 1751static const canon_inkset_t canon_19_C7M7Y4K2c7m7k4_inkset[] = { 1752 {'C',1.0,&canon_4b_7l_ink}, 1753 {'M',1.0,&canon_4b_7l_ink}, 1754 {'Y',1.0,&canon_2b_4l_ink}, 1755 {'K',0.0,&canon_1b_2l_ink}, /* will not use K */ 1756 {'c',1.0,&canon_4b_7l_ink}, 1757 {'m',1.0,&canon_4b_7l_ink}, 1758 {'k',1.0,&canon_2b_4l_ink}, /* change y to k */ 1759 {0,0.0,NULL}, 1760 {0,0.0,NULL}, 1761 {0,0.0,NULL}, 1762 {0,0.0,NULL}, 1763 {0,0.0,NULL}, 1764 {0,0.0,NULL}, 1765 {0,0.0,NULL}, 1766 {0,0.0,NULL}, 1767 {0,0.0,NULL}, 1768 {0,0.0,NULL}, 1769 {0,0.0,NULL}, 1770 {0,0.0,NULL}, 1771}; 1772 1773static const canon_inkset_t canon_22_C2M2Y2K2_inkset[] = { 1774 {'C',1.0,&canon_1b_2l_ink}, 1775 {'M',1.0,&canon_1b_2l_ink}, 1776 {'Y',1.0,&canon_1b_2l_ink}, 1777 {'K',1.0,&canon_1b_2l_ink}, 1778 {0,0.0,NULL}, 1779 {0,0.0,NULL}, 1780 {0,0.0,NULL}, 1781 {0,0.0,NULL}, 1782 {0,0.0,NULL}, 1783 {0,0.0,NULL}, 1784 {0,0.0,NULL}, 1785 {0,0.0,NULL}, 1786 {0,0.0,NULL}, 1787 {0,0.0,NULL}, 1788 {0,0.0,NULL}, 1789 {0,0.0,NULL}, 1790 {0,0.0,NULL}, 1791 {0,0.0,NULL}, 1792 {0,0.0,NULL}, 1793 {0,0.0,NULL}, 1794 {0,0.0,NULL}, 1795 {0,0.0,NULL}, 1796}; 1797 1798static const canon_inkset_t canon_22_C3M3Y2K2_c_inkset[] = { 1799 {'C',1.0,&canon_2b_3l_c_ink}, 1800 {'M',1.0,&canon_2b_3l_c_ink}, 1801 {'Y',1.0,&canon_1b_2l_ink}, 1802 {'K',1.0,&canon_1b_2l_ink}, 1803 {0,0.0,NULL}, 1804 {0,0.0,NULL}, 1805 {0,0.0,NULL}, 1806 {0,0.0,NULL}, 1807 {0,0.0,NULL}, 1808 {0,0.0,NULL}, 1809 {0,0.0,NULL}, 1810 {0,0.0,NULL}, 1811 {0,0.0,NULL}, 1812 {0,0.0,NULL}, 1813 {0,0.0,NULL}, 1814 {0,0.0,NULL}, 1815 {0,0.0,NULL}, 1816 {0,0.0,NULL}, 1817 {0,0.0,NULL}, 1818 {0,0.0,NULL}, 1819 {0,0.0,NULL}, 1820 {0,0.0,NULL}, 1821}; 1822 1823static const canon_inkset_t canon_22_C3M3Y2K2k3_c_inkset[] = { 1824 {'C',1.0,&canon_2b_3l_c_ink}, 1825 {'M',1.0,&canon_2b_3l_c_ink}, 1826 {'Y',1.0,&canon_1b_2l_ink}, 1827 {'K',1.0,&canon_1b_2l_ink}, 1828 {0,0.0,NULL}, 1829 {0,0.0,NULL}, 1830 {0,0.0,NULL}, 1831 {'k',0.0,&canon_2b_3l_c_ink}, /* even though we won't use the photo black in this mode its parameters have to be set */ 1832 {0,0.0,NULL}, 1833 {0,0.0,NULL}, 1834 {0,0.0,NULL}, 1835 {0,0.0,NULL}, 1836 {0,0.0,NULL}, 1837 {0,0.0,NULL}, 1838 {0,0.0,NULL}, 1839 {0,0.0,NULL}, 1840 {0,0.0,NULL}, 1841 {0,0.0,NULL}, 1842 {0,0.0,NULL}, 1843 {0,0.0,NULL}, 1844 {0,0.0,NULL}, 1845 {0,0.0,NULL}, 1846}; 1847 1848/* MP520 photo standard */ 1849static const canon_inkset_t canon_22_C3M3Y3K2c3m3_c_inkset[] = { 1850 {'C',1.0,&canon_2b_3l_c_ink}, 1851 {'M',1.0,&canon_2b_3l_c_ink}, 1852 {'Y',1.0,&canon_2b_3l_c_ink}, 1853 {'K',0.0,&canon_1b_2l_ink}, /* set to 0 */ 1854 {'c',1.0,&canon_2b_3l_c_ink}, 1855 {'m',1.0,&canon_2b_3l_c_ink}, 1856 {0,0.0,NULL}, 1857 {'k',0.0,&canon_2b_3l_ink}, /* even though we won't use the photo black in this mode its parameters have to be set */ 1858 {0,0.0,NULL}, 1859 {0,0.0,NULL}, 1860 {0,0.0,NULL}, 1861 {0,0.0,NULL}, 1862 {0,0.0,NULL}, 1863 {0,0.0,NULL}, 1864 {0,0.0,NULL}, 1865 {0,0.0,NULL}, 1866 {0,0.0,NULL}, 1867 {0,0.0,NULL}, 1868 {0,0.0,NULL}, 1869 {0,0.0,NULL}, 1870 {0,0.0,NULL}, 1871 {0,0.0,NULL}, 1872}; 1873 1874static const canon_inkset_t canon_22_C3M3Y3K2c3m3k3_c_inkset[] = { 1875 {'C',1.0,&canon_2b_3l_c_ink}, 1876 {'M',1.0,&canon_2b_3l_c_ink}, 1877 {'Y',1.0,&canon_2b_3l_c_ink}, 1878 {'K',0.0,&canon_1b_2l_ink}, /* set to 0 */ 1879 {'c',1.0,&canon_2b_3l_c_ink}, 1880 {'m',1.0,&canon_2b_3l_c_ink}, 1881 {0,0.0,NULL}, 1882 {'k',1.0,&canon_2b_3l_c_ink}, 1883 {0,0.0,NULL}, 1884 {0,0.0,NULL}, 1885 {0,0.0,NULL}, 1886 {0,0.0,NULL}, 1887 {0,0.0,NULL}, 1888 {0,0.0,NULL}, 1889 {0,0.0,NULL}, 1890 {0,0.0,NULL}, 1891 {0,0.0,NULL}, 1892 {0,0.0,NULL}, 1893 {0,0.0,NULL}, 1894 {0,0.0,NULL}, 1895 {0,0.0,NULL}, 1896 {0,0.0,NULL}, 1897}; 1898 1899static const canon_inkset_t canon_22_C4M4Y4K2_inkset[] = { 1900 {'C',1.0,&canon_2b_4l_ink}, 1901 {'M',1.0,&canon_2b_4l_ink}, 1902 {'Y',1.0,&canon_2b_4l_ink}, 1903 {'K',1.0,&canon_1b_2l_ink}, 1904 {0,0.0,NULL}, 1905 {0,0.0,NULL}, 1906 {0,0.0,NULL}, 1907 {0,0.0,NULL}, 1908 {0,0.0,NULL}, 1909 {0,0.0,NULL}, 1910 {0,0.0,NULL}, 1911 {0,0.0,NULL}, 1912 {0,0.0,NULL}, 1913 {0,0.0,NULL}, 1914 {0,0.0,NULL}, 1915 {0,0.0,NULL}, 1916 {0,0.0,NULL}, 1917 {0,0.0,NULL}, 1918 {0,0.0,NULL}, 1919 {0,0.0,NULL}, 1920 {0,0.0,NULL}, 1921 {0,0.0,NULL}, 1922}; 1923 1924/* MP830 T-Shirt */ 1925static const canon_inkset_t canon_22_C4M4Y4K2k4_inkset[] = { 1926 {'C',1.0,&canon_2b_4l_ink}, 1927 {'M',1.0,&canon_2b_4l_ink}, 1928 {'Y',1.0,&canon_2b_4l_ink}, 1929 {'K',1.0,&canon_1b_2l_ink}, 1930 {0,0.0,NULL}, 1931 {0,0.0,NULL}, 1932 {0,0.0,NULL}, 1933 {'k',1.0,&canon_2b_4l_ink}, 1934 {0,0.0,NULL}, 1935 {0,0.0,NULL}, 1936 {0,0.0,NULL}, 1937 {0,0.0,NULL}, 1938 {0,0.0,NULL}, 1939 {0,0.0,NULL}, 1940 {0,0.0,NULL}, 1941 {0,0.0,NULL}, 1942 {0,0.0,NULL}, 1943 {0,0.0,NULL}, 1944 {0,0.0,NULL}, 1945 {0,0.0,NULL}, 1946 {0,0.0,NULL}, 1947 {0,0.0,NULL}, 1948}; 1949 1950/* MP520 high */ 1951static const canon_inkset_t canon_22_C4M4Y4K2c4m4_inkset[] = { 1952 {'C',1.0,&canon_2b_4l_ink}, 1953 {'M',1.0,&canon_2b_4l_ink}, 1954 {'Y',1.0,&canon_2b_4l_ink}, 1955 {'K',0.0,&canon_1b_2l_ink}, /* set to 0 */ 1956 {'c',1.0,&canon_2b_4l_ink}, 1957 {'m',1.0,&canon_2b_4l_ink}, 1958 {0,0.0,NULL}, 1959 {'k',0.0,&canon_2b_4l_ink}, /* even though we won't use the photo black in this mode its parameters have to be set */ 1960 {0,0.0,NULL}, 1961 {0,0.0,NULL}, 1962 {0,0.0,NULL}, 1963 {0,0.0,NULL}, 1964 {0,0.0,NULL}, 1965 {0,0.0,NULL}, 1966 {0,0.0,NULL}, 1967 {0,0.0,NULL}, 1968 {0,0.0,NULL}, 1969 {0,0.0,NULL}, 1970 {0,0.0,NULL}, 1971 {0,0.0,NULL}, 1972 {0,0.0,NULL}, 1973 {0,0.0,NULL}, 1974}; 1975 1976static const canon_inkset_t canon_22_C4M4Y4K2c4m4k4_inkset[] = { 1977 {'C',1.0,&canon_2b_4l_ink}, 1978 {'M',1.0,&canon_2b_4l_ink}, 1979 {'Y',1.0,&canon_2b_4l_ink}, 1980 {'K',1.0,&canon_1b_2l_ink}, 1981 {'c',0.5,&canon_2b_4l_ink}, 1982 {'m',0.5,&canon_2b_4l_ink}, 1983 {0,0.0,NULL}, 1984 {'k',0.0,&canon_2b_4l_ink}, /* even though we won't use the photo black in this mode its parameters have to be set */ 1985 {0,0.0,NULL}, 1986 {0,0.0,NULL}, 1987 {0,0.0,NULL}, 1988 {0,0.0,NULL}, 1989 {0,0.0,NULL}, 1990 {0,0.0,NULL}, 1991 {0,0.0,NULL}, 1992 {0,0.0,NULL}, 1993 {0,0.0,NULL}, 1994 {0,0.0,NULL}, 1995 {0,0.0,NULL}, 1996 {0,0.0,NULL}, 1997 {0,0.0,NULL}, 1998 {0,0.0,NULL}, 1999}; 2000 2001/* high */ 2002/* MP990, MG6100, MG800 */ 2003/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */ 2004/*static const canon_inkset_t canon_30_C2M6K6m4k4_inkset[] = {*/ 2005static const canon_inkset_t canon_30_K2C6M6Y4k4_inkset[] = { 2006 {'K',1.0,&canon_1b_2l_ink}, 2007 {'C',1.0,&canon_4b_6l_ink}, 2008 {0,0.0,NULL}, 2009 {'M',1.0,&canon_4b_6l_ink}, 2010 {0,0.0,NULL}, 2011 {'Y',1.0,&canon_2b_4l_ink}, 2012 {0,0.0,NULL}, 2013 {'k',0.0,&canon_2b_4l_ink}, /* will not use it, but need to specify it */ 2014 {0,0.0,NULL}, 2015 {0,0.0,NULL}, 2016 {0,0.0,NULL}, 2017 {0,0.0,NULL}, 2018 {0,0.0,NULL}, 2019 {0,0.0,NULL}, 2020 {0,0.0,NULL}, 2021 {0,0.0,NULL}, 2022 {0,0.0,NULL}, 2023 {0,0.0,NULL}, 2024 {0,0.0,NULL}, 2025 {0,0.0,NULL}, 2026 {0,0.0,NULL}, 2027 {0,0.0,NULL}, 2028 {0,0.0,NULL}, 2029 {0,0.0,NULL}, 2030 {0,0.0,NULL}, 2031 {0,0.0,NULL}, 2032 {0,0.0,NULL}, 2033 {0,0.0,NULL}, 2034 {0,0.0,NULL}, 2035 {0,0.0,NULL}, 2036}; 2037 2038/* standard */ 2039/* MP990, MG6100, MG800 */ 2040/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */ 2041static const canon_inkset_t canon_30_K2C3M3Y2k3_c_inkset[] = { 2042 {'K',1.0,&canon_1b_2l_ink}, 2043 {'C',1.0,&canon_2b_3l_c_ink}, 2044 {0,0.0,NULL}, 2045 {'M',1.0,&canon_2b_3l_c_ink}, 2046 {0,0.0,NULL}, 2047 {'Y',1.0,&canon_1b_2l_ink}, 2048 {0,0.0,NULL}, 2049 {'k',0.0,&canon_2b_3l_c_ink}, /* will not use it, but need to specify it */ 2050 {0,0.0,NULL}, 2051 {0,0.0,NULL}, 2052 {0,0.0,NULL}, 2053 {0,0.0,NULL}, 2054 {0,0.0,NULL}, 2055 {0,0.0,NULL}, 2056 {0,0.0,NULL}, 2057 {0,0.0,NULL}, 2058 {0,0.0,NULL}, 2059 {0,0.0,NULL}, 2060 {0,0.0,NULL}, 2061 {0,0.0,NULL}, 2062 {0,0.0,NULL}, 2063 {0,0.0,NULL}, 2064 {0,0.0,NULL}, 2065 {0,0.0,NULL}, 2066 {0,0.0,NULL}, 2067 {0,0.0,NULL}, 2068 {0,0.0,NULL}, 2069 {0,0.0,NULL}, 2070 {0,0.0,NULL}, 2071 {0,0.0,NULL}, 2072}; 2073 2074/* fast */ 2075/* MP990, MG6100, MG800 */ 2076/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */ 2077/*static const canon_inkset_t canon_30_C2M2K2m2_inkset[] = {*/ 2078static const canon_inkset_t canon_30_K2C2M2Y2_inkset[] = { 2079 {'K',1.0,&canon_1b_2l_ink}, 2080 {'C',1.0,&canon_1b_2l_ink}, 2081 {0,0.0,NULL}, 2082 {'M',1.0,&canon_1b_2l_ink}, 2083 {0,0.0,NULL}, 2084 {'Y',1.0,&canon_1b_2l_ink}, 2085 {0,0.0,NULL}, 2086 {0,0.0,NULL}, 2087 {0,0.0,NULL}, 2088 {0,0.0,NULL}, 2089 {0,0.0,NULL}, 2090 {0,0.0,NULL}, 2091 {0,0.0,NULL}, 2092 {0,0.0,NULL}, 2093 {0,0.0,NULL}, 2094 {0,0.0,NULL}, 2095 {0,0.0,NULL}, 2096 {0,0.0,NULL}, 2097 {0,0.0,NULL}, 2098 {0,0.0,NULL}, 2099 {0,0.0,NULL}, 2100 {0,0.0,NULL}, 2101 {0,0.0,NULL}, 2102 {0,0.0,NULL}, 2103 {0,0.0,NULL}, 2104 {0,0.0,NULL}, 2105 {0,0.0,NULL}, 2106 {0,0.0,NULL}, 2107 {0,0.0,NULL}, 2108 {0,0.0,NULL}, 2109}; 2110 2111/* CD photo */ 2112/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */ 2113/*static const canon_inkset_t canon_30_M5K5m4k4_inkset[] = {*/ 2114static const canon_inkset_t canon_30_C5M5Y4k4_inkset[] = { 2115 {0,0.0,NULL}, 2116 {'C',1.0,&canon_4b_5l_ink}, 2117 {0,0.0,NULL}, 2118 {'M',1.0,&canon_4b_5l_ink}, 2119 {0,0.0,NULL}, 2120 {'Y',1.0,&canon_2b_4l_ink}, 2121 {0,0.0,NULL}, 2122 {'k',1.0,&canon_2b_4l_ink}, 2123 {0,0.0,NULL}, 2124 {0,0.0,NULL}, 2125 {0,0.0,NULL}, 2126 {0,0.0,NULL}, 2127 {0,0.0,NULL}, 2128 {0,0.0,NULL}, 2129 {0,0.0,NULL}, 2130 {0,0.0,NULL}, 2131 {0,0.0,NULL}, 2132 {0,0.0,NULL}, 2133 {0,0.0,NULL}, 2134 {0,0.0,NULL}, 2135 {0,0.0,NULL}, 2136 {0,0.0,NULL}, 2137 {0,0.0,NULL}, 2138 {0,0.0,NULL}, 2139 {0,0.0,NULL}, 2140 {0,0.0,NULL}, 2141 {0,0.0,NULL}, 2142 {0,0.0,NULL}, 2143 {0,0.0,NULL}, 2144 {0,0.0,NULL}, 2145}; 2146 2147#endif 2148 2149