GNU Info

Info Node: (gimpprint.info)Canon inkjet printers

(gimpprint.info)Canon inkjet printers


Prev: Tuning Epson printers Up: New Printer
Enter node , (file) or (file)node

Canon inkjet printers
=====================

   Basically, a new Canon printer can be added to `print-canon.c' in a
similar way as described above for the epson inkjet printers. The main
differences are noted here:

   In general, Canon printers have more "built-in intelligence" than
Epson printers which results in the fact that the driver only has to
tell the printing conditions like resolutions, dot sizes, etc. to the
printer and afterwards transfer the raster data line by line for each
color used.

   `canon_cap_t' is a C struct defined as follows:

 - Data type:  canon_cap_t
          typedef struct canon_caps {
            int model;          /* model number as used in printers.xml */
            int max_width;      /* maximum printable paper size */
            int max_height;
            int base_res;       /* base resolution - shall be 150 or 180 */
            int max_xdpi;       /* maximum horizontal resolution */
            int max_ydpi;       /* maximum vertical resolution */
            int max_quality;
            int border_left;    /* left margin, points */
            int border_right;   /* right margin, points */
            int border_top;     /* absolute top margin, points */
            int border_bottom;  /* absolute bottom margin, points */
            int inks;           /* installable cartridges (CANON_INK_*) */
            int slots;          /* available paperslots */
            int features;       /* special bjl settings */
            canon_dot_size_t dot_sizes;	/* Vector of dot sizes for resolutions */
            canon_densities_t densities;	/* List of densities for each printer */
            canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
          } canon_cap_t;

   Since there are Canon printers which print in resolutions of 2^n*150
dpi (e.g. 300, 600, 1200) and others which support resolutions of
2^n*180 dpi (e.g. 360, 720, 1440), there's a base resolution (150 or
180, respectively) given in the `canon_cap_t'. The structs
`canon_dot_size_t', `canon_densities_t' and `canon_variable_inklist_t'
refer to resolutions being multiples of the base resolution.

   For the Canon driver, the struct `canon_dot_size_t' holds values for
a model's capabilities at a given resolution: `-1' if the resolution is
not supported.  `0' if it can be used and `1' if the resolution can be
used for variable dot size printing.

   In `canon_densities_t' the base densities for each resolution can be
specified like for an epson printer, the same holds true for
`canon_variable_inklist_t'.  See the descriptions above to learn about
how to adjust your model's output to yield nice results.

   There's a slight difference though in the way the Canon driver and
the escp2 driver define their variable inklists: In the Canon driver,
you need to define an inklist like this:

     static const canon_variable_inklist_t canon_ink_myinks[] =
     {
       {
         1,4, /* 1bit/pixel, 4 colors */
         &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
         &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
       },
       {
         3,4, /* 3bit/pixel, 4 colors */
         &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
         &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
       },
     };

where the `&ci_CMYK_1' and `&ci_CMYK_3' entries are references to a
previously defined const of type `canon_variable_inkset_t'.


automatically generated by info2www version 1.2.2.9