handling of x start position is working

merge-requests/1/head
Stphane Voltz 2010-05-26 06:23:58 +02:00
rodzic 661933ecdb
commit 6bcc1fb121
3 zmienionych plików z 32 dodań i 5 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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
};

Wyświetl plik

@ -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;