From 6bcc1fb121fae05748a773ff5c7ef494e32eac54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Voltz?= Date: Wed, 26 May 2010 06:23:58 +0200 Subject: [PATCH] handling of x start position is working --- backend/genesys.c | 20 ++++++++++++++++++++ backend/genesys_devices.c | 4 ++-- backend/genesys_gl847.c | 13 ++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/backend/genesys.c b/backend/genesys.c index 125259ddd..ef7222a6a 100644 --- a/backend/genesys.c +++ b/backend/genesys.c @@ -5132,6 +5132,8 @@ genesys_fill_read_buffer (Genesys_Device * dev) { while (dev->cur < dev->len && count < size) { + if(dev->settings.depth==8) + { /* even pixel */ work_buffer_dst[count] = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->oe_buffer.pos]; @@ -5141,6 +5143,24 @@ genesys_fill_read_buffer (Genesys_Device * dev) dev->oe_buffer.pos]; count += 2; dev->cur++; + } + else + { + /* even pixel */ + work_buffer_dst[count] = + dev->oe_buffer.buffer[dev->cur + dev->skip + dev->oe_buffer.pos]; + work_buffer_dst[count+1] = + dev->oe_buffer.buffer[dev->cur + dev->skip + dev->oe_buffer.pos+1]; + /* odd pixel */ + work_buffer_dst[count + 2] = + dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist + + dev->oe_buffer.pos]; + work_buffer_dst[count + 3] = + dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist + + dev->oe_buffer.pos+1]; + count += 5; + dev->cur+=2; + } } /* go to next line if needed */ if (dev->cur == dev->len) diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index 10b1e14c9..8befb4892 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -788,7 +788,7 @@ static Genesys_Motor Motor[] = { { /* power mode 0 */ { 2343, 1017, 128, 0.80}, /* full step */ { 4678, 2034, 64, 0.80}, /* half step */ - { 3*2652, 3*2652, 16, 0.80}, /* quarter step 0.75*2712 */ + { 3*2712, 3*2712, 16, 0.80}, /* quarter step 0.75*2712 */ /*{ 4*2034, 4*2034, 32, 0.80}, quarter step */ /* extra values kept for documentation { 2343, 864, 32, 0.80}, full step @@ -973,7 +973,7 @@ static Genesys_Model canon_lide_100_model = { | GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_CUSTOM_GAMMA, GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW, - 150, + 100, 400 }; diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.c index 90fa9d479..2f15a9356 100644 --- a/backend/genesys_gl847.c +++ b/backend/genesys_gl847.c @@ -1571,14 +1571,21 @@ gl847_init_optical_regs_scan (Genesys_Device * dev, /* words(16bit) before gamma, conversion to 8 bit or lineart*/ words_per_line = (used_pixels * dpiset) / gl847_get_dpihw (dev); - dev->bpl = words_per_line; + dev->bpl = words_per_line*(depth/8); dev->cur=0; dev->len=pixels/2; dev->dist=dev->bpl/2; - dev->skip=0; + dev->skip=((start*dpiset)/gl847_get_dpihw (dev))/2; + if(dev->skip>=dev->dist) + { + dev->skip-=dev->dist; + } + DBG (DBG_io2, "%s: dev->len=%d\n", __FUNCTION__, dev->len); + DBG (DBG_io2, "%s: dev->dist=%d\n", __FUNCTION__, dev->dist); + DBG (DBG_io2, "%s: dev->skip=%d\n", __FUNCTION__, dev->skip); RIE (sanei_genesys_buffer_free (&(dev->oe_buffer))); - RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), (dev->bpl))); + RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), dev->bpl*channels)); words_per_line *= channels;