2400 dpi for LiDE 110/210

merge-requests/1/head
Stphane Voltz 2011-01-11 06:26:41 +01:00
rodzic 922a22e308
commit 4da932ad57
4 zmienionych plików z 108 dodań i 12 usunięć

Wyświetl plik

@ -4897,8 +4897,74 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
}
else if(dev->segnb==4)
{
DBG (DBG_error, "%s: %d is an unimplemented segment number ....\n",__FUNCTION__,dev->segnb);
return SANE_STATUS_INVAL;
if(depth==8)
{
while (dev->cur < dev->len && count < size)
{
work_buffer_dst[count + 0] = 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 + 2*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 2] = dev->oe_buffer.buffer[dev->cur + dev->skip + 1*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 3] = dev->oe_buffer.buffer[dev->cur + dev->skip + 3*dev->dist + dev->oe_buffer.pos];
/* update counter and pointer */
count += 4;
dev->cur+=1;
}
}
else if(depth==16)
{
while (dev->cur < dev->len && count < size)
{
work_buffer_dst[count + 0] = 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];
work_buffer_dst[count + 2] = dev->oe_buffer.buffer[dev->cur + dev->skip + 2*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 3] = dev->oe_buffer.buffer[dev->cur + dev->skip + 2*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 4] = dev->oe_buffer.buffer[dev->cur + dev->skip + 1*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 5] = dev->oe_buffer.buffer[dev->cur + dev->skip + 1*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 6] = dev->oe_buffer.buffer[dev->cur + dev->skip + 3*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 7] = dev->oe_buffer.buffer[dev->cur + dev->skip + 3*dev->dist + dev->oe_buffer.pos+1];
/* update counter and pointer */
count += 8;
dev->cur+=2;
}
} else { /* lineart case */
while (dev->cur < dev->len && count < size)
{
/* get values to merge */
odd = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->oe_buffer.pos];
even = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist + dev->oe_buffer.pos];
/* interleave bits .... */
merged=0;
for(i=7;i>=0;i--)
{
mask=1<<i;
if(odd & mask)
{
merged |= 1;
}
merged<<=1;
if(even & mask)
{
merged |= 1;
}
/* don't shift on last bit */
if(i>0)
{
merged<<=1;
}
}
/* store result */
work_buffer_dst[count] = merged >> 8;
work_buffer_dst[count+1] = merged & 255;
/* update counter and pointer */
count += 2;
dev->cur++;
}
}
}
else
{

Wyświetl plik

@ -1310,8 +1310,8 @@ static Genesys_Model canon_lide_110_model = {
GENESYS_GL124,
NULL,
{1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */
@ -1362,8 +1362,8 @@ static Genesys_Model canon_lide_210_model = {
GENESYS_GL124,
NULL,
{1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */

Wyświetl plik

@ -2842,12 +2842,42 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
src=data+x+strpixel+i*length;
/* iterate over all the segments */
for(s=0;s<(uint32_t)dev->segnb;s++)
switch(dev->segnb)
{
ptr[0+pixels*s]=src[0+segcnt*s];
ptr[1+pixels*s]=src[1+segcnt*s];
ptr[2+pixels*s]=src[2+segcnt*s];
ptr[3+pixels*s]=src[3+segcnt*s];
case 1:
ptr[0+pixels*0]=src[0+segcnt*0];
ptr[1+pixels*0]=src[1+segcnt*0];
ptr[2+pixels*0]=src[2+segcnt*0];
ptr[3+pixels*0]=src[3+segcnt*0];
break;
case 2:
ptr[0+pixels*0]=src[0+segcnt*0];
ptr[1+pixels*0]=src[1+segcnt*0];
ptr[2+pixels*0]=src[2+segcnt*0];
ptr[3+pixels*0]=src[3+segcnt*0];
ptr[0+pixels*1]=src[0+segcnt*1];
ptr[1+pixels*1]=src[1+segcnt*1];
ptr[2+pixels*1]=src[2+segcnt*1];
ptr[3+pixels*1]=src[3+segcnt*1];
break;
case 4:
ptr[0+pixels*0]=src[0+segcnt*0];
ptr[1+pixels*0]=src[1+segcnt*0];
ptr[2+pixels*0]=src[2+segcnt*0];
ptr[3+pixels*0]=src[3+segcnt*0];
ptr[0+pixels*1]=src[0+segcnt*2];
ptr[1+pixels*1]=src[1+segcnt*2];
ptr[2+pixels*1]=src[2+segcnt*2];
ptr[3+pixels*1]=src[3+segcnt*2];
ptr[0+pixels*2]=src[0+segcnt*1];
ptr[1+pixels*2]=src[1+segcnt*1];
ptr[2+pixels*2]=src[2+segcnt*1];
ptr[3+pixels*2]=src[3+segcnt*1];
ptr[0+pixels*3]=src[0+segcnt*3];
ptr[1+pixels*3]=src[1+segcnt*3];
ptr[2+pixels*3]=src[2+segcnt*3];
ptr[3+pixels*3]=src[3+segcnt*3];
break;
}
/* next shading coefficients */

Wyświetl plik

@ -672,7 +672,7 @@ static Motor_Profile motors[]={
{MOTOR_CANONLIDE110, 5359, 0, lide110_alt},
{MOTOR_CANONLIDE110, 5360, 1, lide110_alt},
{MOTOR_CANONLIDE110, 10528, 1, lide110_slow},
{MOTOR_CANONLIDE110, 20864, 1, lide110_max},
{MOTOR_CANONLIDE110, 20864, 3, lide110_max},
};
/* *INDENT-ON* */