kopia lustrzana https://gitlab.com/sane-project/backends
pixma: fix for 2400 dpi striping on MP760/770/780/790 by Gernot Hassenpflug.
modified: ChangeLog modified: backend/pixma_mp750.cmerge-requests/1/head
rodzic
018412102e
commit
3dd2b12f6e
|
@ -1,3 +1,7 @@
|
||||||
|
2010-09-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
||||||
|
* backend/pixma_mp750.c:
|
||||||
|
pixma: fix for 2400 dpi striping on MP760/770/780/790 by Gernot Hassenpflug.
|
||||||
|
|
||||||
2010-09-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
2010-09-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
||||||
* doc/sane-pixma.man:
|
* doc/sane-pixma.man:
|
||||||
pixma: man page update for devices as reported by Gernot Hassenpflug.
|
pixma: man page update for devices as reported by Gernot Hassenpflug.
|
||||||
|
|
|
@ -109,6 +109,7 @@ typedef struct mp750_t
|
||||||
uint8_t *buf, *rawimg, *img;
|
uint8_t *buf, *rawimg, *img;
|
||||||
unsigned rawimg_left, imgbuf_len, last_block_size, imgbuf_ofs;
|
unsigned rawimg_left, imgbuf_len, last_block_size, imgbuf_ofs;
|
||||||
int shifted_bytes;
|
int shifted_bytes;
|
||||||
|
int stripe_shift; /* for 2400dpi */
|
||||||
unsigned last_block;
|
unsigned last_block;
|
||||||
|
|
||||||
unsigned monochrome:1;
|
unsigned monochrome:1;
|
||||||
|
@ -408,13 +409,17 @@ step1 (pixma_t * s)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shift_rgb (const uint8_t * src, unsigned pixels,
|
shift_rgb (const uint8_t * src, unsigned pixels,
|
||||||
int sr, int sg, int sb, uint8_t * dst)
|
int sr, int sg, int sb, int stripe_shift,
|
||||||
|
int line_size, uint8_t * dst)
|
||||||
{
|
{
|
||||||
|
unsigned st;
|
||||||
|
|
||||||
for (; pixels != 0; pixels--)
|
for (; pixels != 0; pixels--)
|
||||||
{
|
{
|
||||||
*(dst++ + sr) = *src++;
|
st = (pixels % 2 == 0) ? -2 * stripe_shift * line_size : 0;
|
||||||
*(dst++ + sg) = *src++;
|
*(dst++ + sr + st) = *src++;
|
||||||
*(dst++ + sb) = *src++;
|
*(dst++ + sg + st) = *src++;
|
||||||
|
*(dst++ + sb + st) = *src++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -578,7 +583,12 @@ mp750_scan (pixma_t * s)
|
||||||
mp->raw_width = ALIGN_SUP (s->param->w, 4);
|
mp->raw_width = ALIGN_SUP (s->param->w, 4);
|
||||||
|
|
||||||
dpi = s->param->ydpi;
|
dpi = s->param->ydpi;
|
||||||
spare = 2 * calc_component_shifting (s); /* FIXME: or maybe (2*... + 1)? */
|
|
||||||
|
/* add a stripe shift for 2400dpi */
|
||||||
|
mp->stripe_shift = (dpi == 2400) ? 4 : 0;
|
||||||
|
|
||||||
|
/* modify for stripe shift */
|
||||||
|
spare = 2 * calc_component_shifting (s) + 2 * mp->stripe_shift; /* FIXME: or maybe (2*... + 1)? */
|
||||||
mp->raw_height = s->param->h + spare;
|
mp->raw_height = s->param->h + spare;
|
||||||
PDBG (pixma_dbg (3, "raw_width=%u raw_height=%u dpi=%u\n",
|
PDBG (pixma_dbg (3, "raw_width=%u raw_height=%u dpi=%u\n",
|
||||||
mp->raw_width, mp->raw_height, dpi));
|
mp->raw_width, mp->raw_height, dpi));
|
||||||
|
@ -746,7 +756,8 @@ mp750_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
|
||||||
n = mp->rawimg_left / 3;
|
n = mp->rawimg_left / 3;
|
||||||
/* n = number of pixels in the buffer */
|
/* n = number of pixels in the buffer */
|
||||||
shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2],
|
shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2],
|
||||||
mp->img + mp->imgbuf_ofs);
|
mp->stripe_shift, s->param->line_size,
|
||||||
|
mp->img + mp->imgbuf_ofs);
|
||||||
n *= 3;
|
n *= 3;
|
||||||
mp->shifted_bytes += n;
|
mp->shifted_bytes += n;
|
||||||
mp->rawimg_left -= n; /* rawimg_left = 0, 1 or 2 bytes left in the buffer. */
|
mp->rawimg_left -= n; /* rawimg_left = 0, 1 or 2 bytes left in the buffer. */
|
||||||
|
|
Ładowanie…
Reference in New Issue