Lines Matching refs:scan

221 	ScanDef *scan = &dev->scanning;
223 if((scan->sParam.bSource == SOURCE_Negative ||
224 scan->sParam.bSource == SOURCE_Transparency) &&
225 scan->sParam.PhyDpi.x > 800) {
227 for (dw = 0; dw < (scan->sParam.Size.dwPhyPixels - 1); dw++)
229 scan->Red.pcb[dw].a_bColor[0] =
230 (u_char)(((u_short)scan->Red.pcb[dw].a_bColor[0] +
231 (u_short)scan->Red.pcb[dw + 1].a_bColor[0]) / 2);
233 scan->Green.pcb[dw].a_bColor[0] =
234 (u_char)(((u_short)scan->Green.pcb[dw].a_bColor[0] +
235 (u_short)scan->Green.pcb[dw + 1].a_bColor[0]) / 2);
237 scan->Blue.pcb[dw].a_bColor[0] =
238 (u_char)(((u_short)scan->Blue.pcb[dw].a_bColor[0] +
239 (u_short)scan->Blue.pcb[dw + 1].a_bColor[0]) / 2);
250 ScanDef *scan = &dev->scanning;
252 if((scan->sParam.bSource == SOURCE_Negative ||
253 scan->sParam.bSource == SOURCE_Transparency) &&
254 scan->sParam.PhyDpi.x > 800) {
256 scan->Red.pcw[0].Colors[0] = _HILO2WORD(scan->Red.pcw[0].HiLo[0]) >> ls;
257 scan->Green.pcw[0].Colors[0] = _HILO2WORD(scan->Green.pcw[0].HiLo[0]) >> ls;
258 scan->Blue.pcw[0].Colors[0] = _HILO2WORD(scan->Blue.pcw[0].HiLo[0]) >> ls;
260 for (dw = 0; dw < (scan->sParam.Size.dwPhyPixels - 1); dw++)
262 scan->Red.pcw[dw + 1].Colors[0] = _HILO2WORD(scan->Red.pcw[dw + 1].HiLo[0]) >> ls;
263 scan->Green.pcw[dw + 1].Colors[0] = _HILO2WORD(scan->Green.pcw[dw + 1].HiLo[0]) >> ls;
264 scan->Blue.pcw[dw + 1].Colors[0] = _HILO2WORD(scan->Blue.pcw[dw + 1].HiLo[0]) >> ls;
266 scan->Red.pcw[dw].Colors[0] = (u_short)(((u_long)scan->Red.pcw[dw].Colors[0] +
267 (u_long)scan->Red.pcw[dw + 1].Colors[0]) / 2);
268 scan->Green.pcw[dw].Colors[0] = (u_short)(((u_long)scan->Green.pcw[dw].Colors[0] +
269 (u_long)scan->Green.pcw[dw + 1].Colors[0]) / 2);
270 scan->Blue.pcw[dw].Colors[0] = (u_short)(((u_long)scan->Blue.pcw[dw].Colors[0] +
271 (u_long)scan->Blue.pcw[dw + 1].Colors[0]) / 2);
273 scan->Red.pcw[dw].Colors[0] = _HILO2WORD(scan->Red.pcw[dw].HiLo[0]) << ls;
274 scan->Green.pcw[dw].Colors[0] = _HILO2WORD(scan->Green.pcw[dw].HiLo[0]) << ls;
275 scan->Blue.pcw[dw].Colors[0] = _HILO2WORD(scan->Blue.pcw[dw].HiLo[0]) << ls;
278 scan->Red.pcw[dw].Colors[0] = _HILO2WORD(scan->Red.pcw[dw].HiLo[0]) << ls;
279 scan->Green.pcw[dw].Colors[0] = _HILO2WORD(scan->Green.pcw[dw].HiLo[0]) << ls;
280 scan->Blue.pcw[dw].Colors[0] = _HILO2WORD(scan->Blue.pcw[dw].HiLo[0]) << ls;
289 ScanDef *scan = &dev->scanning;
291 if((scan->sParam.bSource == SOURCE_Negative ||
292 scan->sParam.bSource == SOURCE_Transparency) &&
293 scan->sParam.PhyDpi.x > 800)
295 for (dw = 0; dw < (scan->sParam.Size.dwPhyPixels - 1); dw++)
296 scan->Green.pb[dw] = (u_char)(((u_short)scan->Green.pb[dw]+
297 (u_short)scan->Green.pb[dw+1]) / 2);
306 ScanDef *scan = &dev->scanning;
308 if((scan->sParam.bSource == SOURCE_Negative ||
309 scan->sParam.bSource == SOURCE_Transparency) &&
310 scan->sParam.PhyDpi.x > 800)
312 scan->Green.pw[0] = _HILO2WORD(scan->Green.philo[0]) >> 2;
314 for (dw = 0; dw < (scan->sParam.Size.dwPhyPixels - 1); dw++)
316 scan->Green.pw[dw + 1] = _HILO2WORD(scan->Green.philo[dw+1]) >> 2;
317 scan->Green.pw[dw] = (u_short)(((u_long)scan->Green.pw[dw]+
318 (u_long)scan->Green.pw[dw+1]) / 2);
319 scan->Green.pw[dw] = _HILO2WORD(scan->Green.philo[dw]) << 2;
322 scan->Green.pw[dw] = _HILO2WORD(scan->Green.philo[dw]) << 2;
330 static int usb_GetScaler( ScanDef *scan )
334 ratio = (double)scan->sParam.UserDpi.x/
335 (double)scan->sParam.PhyDpi.x;
342 /** do a simple memcopy from scan-buffer to user buffer
348 ScanDef *scan = &dev->scanning;
352 if( scan->sParam.bSource == SOURCE_ADF ) {
354 pixels = scan->sParam.Size.dwPixels - 1;
360 for( dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next ) {
362 scan->UserBuf.pb_rgb[pixels].Red = scan->Red.pcb[dw].a_bColor[0];
363 scan->UserBuf.pb_rgb[pixels].Green = scan->Green.pcb[dw].a_bColor[0];
364 scan->UserBuf.pb_rgb[pixels].Blue = scan->Blue.pcb[dw].a_bColor[0];
374 ScanDef *scan = &dev->scanning;
376 if( scan->sParam.bSource == SOURCE_ADF ) {
378 pixels = scan->sParam.Size.dwPixels - 1;
384 for( dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next ) {
386 scan->UserBuf.pb_rgb[pixels].Red = (u_char)scan->Red.pb[dw];
387 scan->UserBuf.pb_rgb[pixels].Green = (u_char)scan->Green.pb[dw];
388 scan->UserBuf.pb_rgb[pixels].Blue = (u_char)scan->Blue.pb[dw];
399 ScanDef *scan = &dev->scanning;
404 if( scan->sParam.bSource == SOURCE_ADF ) {
406 pixels = scan->sParam.Size.dwPixels - 1;
412 if( scan->dwFlag & SCANFLAG_RightAlign )
417 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
420 scan->UserBuf.pw_rgb[pixels].Red =
421 _HILO2WORD(scan->Red.pcw[dw].HiLo[0]) >> ls;
422 scan->UserBuf.pw_rgb[pixels].Green =
423 _HILO2WORD(scan->Green.pcw[dw].HiLo[0]) >> ls;
424 scan->UserBuf.pw_rgb[pixels].Blue =
425 _HILO2WORD(scan->Blue.pcw[dw].HiLo[0]) >> ls;
427 scan->UserBuf.pw_rgb[pixels].Red = scan->Red.pw[dw] >> ls;
428 scan->UserBuf.pw_rgb[pixels].Green= scan->Green.pw[dw] >> ls;
429 scan->UserBuf.pw_rgb[pixels].Blue = scan->Blue.pw[dw] >> ls;
442 ScanDef *scan = &dev->scanning;
447 if( scan->sParam.bSource == SOURCE_ADF ) {
449 pixels = scan->sParam.Size.dwPixels - 1;
455 if( scan->dwFlag & SCANFLAG_RightAlign )
460 for( dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
463 tmp = *((HiLoDef*)&scan->Red.pw[dw]);
464 scan->UserBuf.pw_rgb[pixels].Red = _HILO2WORD(tmp) >> ls;
466 tmp = *((HiLoDef*)&scan->Green.pw[dw]);
467 scan->UserBuf.pw_rgb[pixels].Green = _HILO2WORD(tmp) >> ls;
469 tmp = *((HiLoDef*)&scan->Blue.pw[dw]);
470 scan->UserBuf.pw_rgb[pixels].Blue = _HILO2WORD(tmp) >> ls;
474 scan->UserBuf.pw_rgb[pixels].Red = scan->Red.pw[dw] >> ls;
475 scan->UserBuf.pw_rgb[pixels].Green = scan->Green.pw[dw] >> ls;
476 scan->UserBuf.pw_rgb[pixels].Blue = scan->Blue.pw[dw] >> ls;
488 ScanDef *scan = &dev->scanning;
492 if (scan->sParam.bSource == SOURCE_ADF) {
494 pixels = scan->sParam.Size.dwPixels - 1;
500 wR = (u_short)scan->Red.pcb[0].a_bColor[0];
501 wG = (u_short)scan->Green.pcb[0].a_bColor[0];
502 wB = (u_short)scan->Blue.pcb[0].a_bColor[0];
504 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
506 scan->UserBuf.pw_rgb[pixels].Red =
507 (wR + scan->Red.pcb[dw].a_bColor[0]) << bShift;
508 scan->UserBuf.pw_rgb[pixels].Green =
509 (wG + scan->Green.pcb[dw].a_bColor[0]) << bShift;
510 scan->UserBuf.pw_rgb[pixels].Blue =
511 (wB + scan->Blue.pcb[dw].a_bColor[0]) << bShift;
513 wR = (u_short)scan->Red.pcb[dw].a_bColor[0];
514 wG = (u_short)scan->Green.pcb[dw].a_bColor[0];
515 wB = (u_short)scan->Blue.pcb[dw].a_bColor[0];
525 ScanDef *scan = &dev->scanning;
529 if (scan->sParam.bSource == SOURCE_ADF) {
531 pixels = scan->sParam.Size.dwPixels - 1;
537 switch(scan->fGrayFromColor) {
540 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
541 scan->UserBuf.pb[pixels] = scan->Red.pcb[dw].a_bColor[0];
544 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
545 scan->UserBuf.pb[pixels] = scan->Green.pcb[dw].a_bColor[0];
548 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
549 scan->UserBuf.pb[pixels] = scan->Blue.pcb[dw].a_bColor[0];
560 ScanDef *scan = &dev->scanning;
564 if (scan->sParam.bSource == SOURCE_ADF) {
566 pixels = scan->sParam.Size.dwPixels - 1;
572 switch(scan->fGrayFromColor)
575 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
576 scan->UserBuf.pb[pixels] = scan->Red.pb[dw];
579 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
580 scan->UserBuf.pb[pixels] = scan->Blue.pb[dw];
583 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
584 scan->UserBuf.pb[pixels] = scan->Green.pb[dw];
596 ScanDef *scan = &dev->scanning;
601 if (scan->sParam.bSource == SOURCE_ADF) {
603 pixels = scan->sParam.Size.dwPixels - 1;
608 if( scan->dwFlag & SCANFLAG_RightAlign )
613 switch(scan->fGrayFromColor) {
617 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
618 scan->UserBuf.pw[pixels] =
619 _HILO2WORD(scan->Red.pcw[dw].HiLo[0]) >> ls;
621 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
622 scan->UserBuf.pw[pixels] = scan->Red.pw[dw] >> ls;
627 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
628 scan->UserBuf.pw[pixels] =
629 _HILO2WORD(scan->Green.pcw[dw].HiLo[0]) >> ls;
631 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
632 scan->UserBuf.pw[pixels] = scan->Green.pw[dw] >> ls;
637 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
638 scan->UserBuf.pw[pixels] =
639 _HILO2WORD(scan->Blue.pcw[dw].HiLo[0]) >> ls;
641 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
642 scan->UserBuf.pw[pixels] = scan->Blue.pw[dw] >> ls;
656 ScanDef *scan = &dev->scanning;
661 if (scan->sParam.bSource == SOURCE_ADF) {
663 pixels = scan->sParam.Size.dwPixels - 1;
668 if( scan->dwFlag & SCANFLAG_RightAlign )
673 switch(scan->fGrayFromColor) {
676 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
677 tmp = *((HiLoDef*)&scan->Red.pw[dw]);
678 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
681 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
682 scan->UserBuf.pw[pixels] = scan->Red.pw[dw] >> ls;
688 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
689 tmp = *((HiLoDef*)&scan->Green.pw[dw]);
690 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
693 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
694 scan->UserBuf.pw[pixels] = scan->Green.pw[dw] >> ls;
700 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
701 tmp = *((HiLoDef*)&scan->Blue.pw[dw]);
702 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
705 for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
706 scan->UserBuf.pw[pixels] = scan->Blue.pw[dw] >> ls;
719 ScanDef *scan = &dev->scanning;
723 if( scan->sParam.bSource == SOURCE_ADF ) {
725 pixels = scan->sParam.Size.dwPixels;
726 src = scan->Green.pb;
727 dest = scan->UserBuf.pb + pixels - 1;
732 memcpy( scan->UserBuf.pb, scan->Green.pb, scan->sParam.Size.dwBytes );
745 ScanDef *scan = &dev->scanning;
750 if( scan->sParam.bSource == SOURCE_ADF ) {
752 dest = scan->UserBuf.pw + scan->sParam.Size.dwPixels - 1;
755 dest = scan->UserBuf.pw;
758 if( scan->dwFlag & SCANFLAG_RightAlign )
763 pwm = scan->Green.philo;
764 for( pixels=scan->sParam.Size.dwPixels; pixels--; pwm++, dest += next ) {
781 ScanDef *scan = &dev->scanning;
785 if (scan->sParam.bSource == SOURCE_ADF) {
787 dest = scan->UserBuf.pw + scan->sParam.Size.dwPixels - 1;
790 dest = scan->UserBuf.pw;
793 src = scan->Green.pb;
796 for( pixels=scan->sParam.Size.dwPixels; pixels--; src++, dest += next ) {
807 ScanDef *scan = &dev->scanning;
809 if(scan->sParam.bSource == SOURCE_ADF)
811 usb_ReverseBitStream( scan->Green.pb, scan->UserBuf.pb,
812 scan->sParam.Size.dwValidPixels,
813 scan->dwBytesLine, 0, 0, 1 );
815 memcpy( scan->UserBuf.pb, scan->Green.pb, scan->sParam.Size.dwBytes );
829 ScanDef *scan = &dev->scanning;
831 if( scan->sParam.bSource == SOURCE_ADF ) {
832 dest = scan->UserBuf.pb + scan->sParam.Size.dwPixels - 1;
835 dest = scan->UserBuf.pb;
839 switch(scan->fGrayFromColor) {
840 case 1: src = scan->Red.pcb; break;
841 case 3: src = scan->Blue.pcb; break;
842 default: src = scan->Green.pcb; break;
846 for( pixels = scan->sParam.Size.dwPixels; pixels; pixels--, src++ ) {
870 ScanDef *scan = &dev->scanning;
872 if( scan->sParam.bSource == SOURCE_ADF ) {
873 dest = scan->UserBuf.pb + scan->sParam.Size.dwPixels - 1;
876 dest = scan->UserBuf.pb;
880 switch(scan->fGrayFromColor) {
881 case 1: src = scan->Red.pb; break;
882 case 3: src = scan->Blue.pb; break;
883 default: src = scan->Green.pb; break;
887 for( pixels = scan->sParam.Size.dwPixels; pixels; pixels--, src++ ) {
910 ScanDef *scan = &dev->scanning;
914 dw = scan->sParam.Size.dwPixels;
916 if( scan->sParam.bSource == SOURCE_ADF ) {
918 pixels = scan->sParam.Size.dwPixels - 1;
924 switch(scan->fGrayFromColor) {
925 case 1: src = scan->Red.pcb; break;
926 case 3: src = scan->Blue.pcb; break;
927 default: src = scan->Green.pcb; break;
930 izoom = usb_GetScaler( scan );
937 scan->UserBuf.pb[pixels] = src->a_bColor[0];
953 ScanDef *scan = &dev->scanning;
957 dw = scan->sParam.Size.dwPixels;
959 if( scan->sParam.bSource == SOURCE_ADF ) {
961 pixels = scan->sParam.Size.dwPixels - 1;
967 switch(scan->fGrayFromColor) {
968 case 1: src = scan->Red.pb; break;
969 case 3: src = scan->Blue.pb; break;
970 default: src = scan->Green.pb; break;
973 izoom = usb_GetScaler( scan );
980 scan->UserBuf.pb[pixels] = *src;
997 ScanDef *scan = &dev->scanning;
1001 dw = scan->sParam.Size.dwPixels;
1003 if( scan->sParam.bSource == SOURCE_ADF ) {
1005 pixels = scan->sParam.Size.dwPixels - 1;
1011 izoom = usb_GetScaler( scan );
1013 if( scan->dwFlag & SCANFLAG_RightAlign )
1018 switch( scan->fGrayFromColor ) {
1027 scan->UserBuf.pw[pixels] =
1028 _HILO2WORD(scan->Red.pcw[bitsput].HiLo[0]) >> ls;
1030 scan->UserBuf.pw[pixels] = scan->Red.pw[bitsput] >> ls;
1046 scan->UserBuf.pw[pixels] =
1047 _HILO2WORD(scan->Green.pcw[bitsput].HiLo[0]) >> ls;
1049 scan->UserBuf.pw[pixels] = scan->Green.pw[bitsput] >> ls;
1065 scan->UserBuf.pw[pixels] =
1066 _HILO2WORD(scan->Blue.pcw[bitsput].HiLo[0]) >> ls;
1068 scan->UserBuf.pw[pixels] = scan->Blue.pw[bitsput] >> ls;
1088 ScanDef *scan = &dev->scanning;
1092 dw = scan->sParam.Size.dwPixels;
1094 if( scan->sParam.bSource == SOURCE_ADF ) {
1096 pixels = scan->sParam.Size.dwPixels - 1;
1102 izoom = usb_GetScaler( scan );
1104 if( scan->dwFlag & SCANFLAG_RightAlign )
1109 switch( scan->fGrayFromColor ) {
1118 tmp = *((HiLoDef*)&scan->Red.pw[bitsput]);
1119 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
1121 scan->UserBuf.pw[pixels] = scan->Red.pw[dw] >> ls;
1137 tmp = *((HiLoDef*)&scan->Green.pw[bitsput]);
1138 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
1140 scan->UserBuf.pw[pixels] = scan->Green.pw[bitsput] >> ls;
1156 tmp = *((HiLoDef*)&scan->Blue.pw[bitsput]);
1157 scan->UserBuf.pw[pixels] = _HILO2WORD(tmp) >> ls;
1159 scan->UserBuf.pw[pixels] = scan->Blue.pw[bitsput] >> ls;
1176 ScanDef *scan = &dev->scanning;
1180 dw = scan->sParam.Size.dwPixels;
1182 if( scan->sParam.bSource == SOURCE_ADF ) {
1184 pixels = scan->sParam.Size.dwPixels - 1;
1190 izoom = usb_GetScaler( scan );
1198 scan->UserBuf.pb_rgb[pixels].Red =
1199 scan->Red.pcb[bitsput].a_bColor[0];
1200 scan->UserBuf.pb_rgb[pixels].Green =
1201 scan->Green.pcb[bitsput].a_bColor[0];
1202 scan->UserBuf.pb_rgb[pixels].Blue =
1203 scan->Blue.pcb[bitsput].a_bColor[0];
1215 ScanDef *scan = &dev->scanning;
1217 dw = scan->sParam.Size.dwPixels;
1219 if( scan->sParam.bSource == SOURCE_ADF ) {
1221 pixels = scan->sParam.Size.dwPixels - 1;
1227 izoom = usb_GetScaler( scan );
1235 scan->UserBuf.pb_rgb[pixels].Red = scan->Red.pb[bitsput];
1236 scan->UserBuf.pb_rgb[pixels].Green = scan->Green.pb[bitsput];
1237 scan->UserBuf.pb_rgb[pixels].Blue = scan->Blue.pb[bitsput];
1254 ScanDef *scan = &dev->scanning;
1258 dw = scan->sParam.Size.dwPixels;
1260 if( scan->sParam.bSource == SOURCE_ADF ) {
1262 pixels = scan->sParam.Size.dwPixels - 1;
1268 izoom = usb_GetScaler( scan );
1270 if( scan->dwFlag & SCANFLAG_RightAlign )
1283 scan->UserBuf.pw_rgb[pixels].Red =
1284 _HILO2WORD(scan->Red.pcw[bitsput].HiLo[0]) >> ls;
1286 scan->UserBuf.pw_rgb[pixels].Green =
1287 _HILO2WORD(scan->Green.pcw[bitsput].HiLo[0]) >> ls;
1289 scan->UserBuf.pw_rgb[pixels].Blue =
1290 _HILO2WORD(scan->Blue.pcw[bitsput].HiLo[0]) >> ls;
1294 scan->UserBuf.pw_rgb[pixels].Red = scan->Red.pw[bitsput]>>ls;
1295 scan->UserBuf.pw_rgb[pixels].Green = scan->Green.pw[bitsput] >> ls;
1296 scan->UserBuf.pw_rgb[pixels].Blue = scan->Blue.pw[bitsput] >> ls;
1314 ScanDef *scan = &dev->scanning;
1318 dw = scan->sParam.Size.dwPixels;
1320 if( scan->sParam.bSource == SOURCE_ADF ) {
1322 pixels = scan->sParam.Size.dwPixels - 1;
1328 izoom = usb_GetScaler( scan );
1330 if( scan->dwFlag & SCANFLAG_RightAlign )
1343 tmp = *((HiLoDef*)&scan->Red.pw[bitsput]);
1344 scan->UserBuf.pw_rgb[pixels].Red = _HILO2WORD(tmp) >> ls;
1346 tmp = *((HiLoDef*)&scan->Green.pw[bitsput]);
1347 scan->UserBuf.pw_rgb[pixels].Green = _HILO2WORD(tmp) >> ls;
1349 tmp = *((HiLoDef*)&scan->Blue.pw[bitsput]);
1350 scan->UserBuf.pw_rgb[pixels].Blue = _HILO2WORD(tmp) >> ls;
1354 scan->UserBuf.pw_rgb[pixels].Red = scan->Red.pw[bitsput] >> ls;
1355 scan->UserBuf.pw_rgb[pixels].Green = scan->Green.pw[bitsput] >> ls;
1356 scan->UserBuf.pw_rgb[pixels].Blue = scan->Blue.pw[bitsput] >> ls;
1372 ScanDef *scan = &dev->scanning;
1376 dw = scan->sParam.Size.dwPixels;
1378 if( scan->sParam.bSource == SOURCE_ADF ) {
1380 pixels = scan->sParam.Size.dwPixels - 1;
1386 izoom = usb_GetScaler( scan );
1388 wR = (u_short)scan->Red.pcb[0].a_bColor[0];
1389 wG = (u_short)scan->Green.pcb[0].a_bColor[1];
1390 wB = (u_short)scan->Blue.pcb[0].a_bColor[2];
1398 scan->UserBuf.pw_rgb[pixels].Red =
1399 (wR + scan->Red.pcb[bitsput].a_bColor[0]) << bShift;
1401 scan->UserBuf.pw_rgb[pixels].Green =
1402 (wG + scan->Green.pcb[bitsput].a_bColor[0]) << bShift;
1404 scan->UserBuf.pw_rgb[pixels].Blue =
1405 (wB + scan->Blue.pcb[bitsput].a_bColor[0]) << bShift;
1412 wR = (u_short)scan->Red.pcb[bitsput].a_bColor[0];
1413 wG = (u_short)scan->Green.pcb[bitsput].a_bColor[0];
1414 wB = (u_short)scan->Blue.pcb[bitsput].a_bColor[0];
1425 ScanDef *scan = &dev->scanning;
1427 src = scan->Green.pb;
1428 if( scan->sParam.bSource == SOURCE_ADF ) {
1430 usb_ReverseBitStream(scan->Green.pb, scan->UserBuf.pb,
1431 scan->sParam.Size.dwValidPixels,
1432 scan->dwBytesLine, scan->sParam.PhyDpi.x,
1433 scan->sParam.UserDpi.x, 1 );
1437 dest = scan->UserBuf.pb;
1440 izoom = usb_GetScaler( scan );
1442 memset( dest, 0, scan->dwBytesLine );
1446 for( i = 0; i < scan->sParam.Size.dwValidPixels; i++ ) {
1454 if((dw>>3) < scan->sParam.Size.dwValidPixels ) {
1474 ScanDef *scan = &dev->scanning;
1476 if (scan->sParam.bSource == SOURCE_ADF) {
1477 dest = scan->UserBuf.pb + scan->sParam.Size.dwPixels - 1;
1480 dest = scan->UserBuf.pb;
1485 switch(scan->fGrayFromColor) {
1486 case 1: src = scan->Red.pcb; break;
1487 case 3: src = scan->Blue.pcb; break;
1488 default: src = scan->Green.pcb; break;
1491 izoom = usb_GetScaler( scan );
1495 for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
1524 ScanDef *scan = &dev->scanning;
1526 if (scan->sParam.bSource == SOURCE_ADF) {
1527 dest = scan->UserBuf.pb + scan->sParam.Size.dwPixels - 1;
1530 dest = scan->UserBuf.pb;
1535 switch(scan->fGrayFromColor) {
1536 case 1: src = scan->Red.pb; break;
1537 case 3: src = scan->Blue.pb; break;
1538 default: src = scan->Green.pb; break;
1541 izoom = usb_GetScaler( scan );
1545 for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
1572 ScanDef *scan = &dev->scanning;
1576 src = scan->Green.pb;
1577 if( scan->sParam.bSource == SOURCE_ADF ) {
1578 dest = scan->UserBuf.pb + scan->sParam.Size.dwPixels - 1;
1581 dest = scan->UserBuf.pb;
1585 izoom = usb_GetScaler( scan );
1588 for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
1611 ScanDef *scan = &dev->scanning;
1616 pwm = scan->Green.philo;
1617 wSum = scan->sParam.PhyDpi.x;
1619 if( scan->sParam.bSource == SOURCE_ADF ) {
1621 dest = scan->UserBuf.pw + scan->sParam.Size.dwPixels - 1;
1624 dest = scan->UserBuf.pw;
1627 izoom = usb_GetScaler( scan );
1630 if( scan->dwFlag & SCANFLAG_RightAlign )
1635 for( pixels = scan->sParam.Size.dwPixels; pixels; pwm++ ) {
1661 ScanDef *scan = &dev->scanning;
1665 if( scan->sParam.bSource == SOURCE_ADF ) {
1667 dest = scan->UserBuf.pw + scan->sParam.Size.dwPixels - 1;
1670 dest = scan->UserBuf.pw;
1673 src = scan->Green.pb;
1676 izoom = usb_GetScaler( scan );
1679 for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
1698 ScanDef *scan = &dev->scanning;
1704 if( scan->sParam.UserDpi.x != scan->sParam.PhyDpi.x ) {
1707 switch( scan->sParam.bDataType ) {
1710 if (scan->sParam.bBitDepth > 8) {
1713 scan->pfnProcess = usb_ColorScale16_2;
1716 scan->pfnProcess = usb_ColorScale16;
1719 if (scan->fGrayFromColor) {
1721 scan->pfnProcess = usb_ColorScaleGray16_2;
1724 scan->pfnProcess = usb_ColorScaleGray16;
1728 } else if (scan->dwFlag & SCANFLAG_Pseudo48) {
1729 scan->pfnProcess = usb_ColorScalePseudo16;
1732 } else if (scan->fGrayFromColor) {
1735 if (scan->fGrayFromColor > 7 ) {
1736 scan->pfnProcess = usb_BWScaleFromColor_2;
1739 scan->pfnProcess = usb_ColorScaleGray_2;
1743 if (scan->fGrayFromColor > 7 ) {
1744 scan->pfnProcess = usb_BWScaleFromColor;
1747 scan->pfnProcess = usb_ColorScaleGray;
1754 scan->pfnProcess = usb_ColorScale8_2;
1757 scan->pfnProcess = usb_ColorScale8;
1764 if (scan->sParam.bBitDepth > 8) {
1765 scan->pfnProcess = usb_GrayScale16;
1769 if (scan->dwFlag & SCANFLAG_Pseudo48) {
1770 scan->pfnProcess = usb_GrayScalePseudo16;
1773 scan->pfnProcess = usb_GrayScale8;
1780 scan->pfnProcess = usb_BWScale;
1788 switch( scan->sParam.bDataType ) {
1791 if (scan->sParam.bBitDepth > 8) {
1793 scan->pfnProcess = usb_ColorDuplicate16_2;
1796 scan->pfnProcess = usb_ColorDuplicate16;
1799 if (scan->fGrayFromColor) {
1801 scan->pfnProcess = usb_ColorDuplicateGray16_2;
1804 scan->pfnProcess = usb_ColorDuplicateGray16;
1808 } else if (scan->dwFlag & SCANFLAG_Pseudo48) {
1809 scan->pfnProcess = usb_ColorDuplicatePseudo16;
1811 } else if (scan->fGrayFromColor) {
1813 if (scan->fGrayFromColor > 7 ) {
1814 scan->pfnProcess = usb_BWDuplicateFromColor_2;
1817 scan->pfnProcess = usb_ColorDuplicateGray_2;
1821 if (scan->fGrayFromColor > 7 ) {
1822 scan->pfnProcess = usb_BWDuplicateFromColor;
1825 scan->pfnProcess = usb_ColorDuplicateGray;
1831 scan->pfnProcess = usb_ColorDuplicate8_2;
1834 scan->pfnProcess = usb_ColorDuplicate8;
1841 if (scan->sParam.bBitDepth > 8) {
1842 scan->pfnProcess = usb_GrayDuplicate16;
1845 if (scan->dwFlag & SCANFLAG_Pseudo48) {
1846 scan->pfnProcess = usb_GrayDuplicatePseudo16;
1849 scan->pfnProcess = usb_GrayDuplicate8;
1856 scan->pfnProcess = usb_BWDuplicate;
1862 if( scan->sParam.bBitDepth == 8 ) {
1864 if( scan->dwFlag & SCANFLAG_Pseudo48 ) {
1865 if( scan->dwFlag & SCANFLAG_RightAlign ) {
1898 ScanDef *scan = &dev->scanning;
1905 while( scan->sParam.Size.dwTotalBytes ) {
1912 if( scan->sParam.Size.dwTotalBytes > scan->dwBytesScanBuf )
1913 dw = scan->dwBytesScanBuf;
1915 dw = scan->sParam.Size.dwTotalBytes;
1917 scan->sParam.Size.dwTotalBytes -= dw;
1919 if(!scan->sParam.Size.dwTotalBytes && dw < (pl * 1024))
1930 while( scan->bLinesToSkip ) {
1932 DBG( _DBG_READ, "Skipping %u lines\n", scan->bLinesToSkip );
1934 dwBytes = scan->bLinesToSkip * scan->sParam.Size.dwPhyBytes;
1936 if (dwBytes > scan->dwBytesScanBuf) {
1938 dwBytes = scan->dwBytesScanBuf;
1939 scan->bLinesToSkip -= scan->dwLinesScanBuf;
1941 scan->bLinesToSkip = 0;
1944 if( !usb_ScanReadImage( dev, scan->pbGetDataBuf, dwBytes ))
1948 if( usb_ScanReadImage( dev, scan->pbGetDataBuf, dw )) {
1950 dumpPic("plustek-pic.raw", scan->pbGetDataBuf, dw, 0);
1952 if( scan->dwLinesDiscard ) {
1954 DBG(_DBG_READ, "Discarding %lu lines\n", scan->dwLinesDiscard);
1956 dwRet = dw / scan->sParam.Size.dwPhyBytes;
1958 if (scan->dwLinesDiscard > dwRet) {
1959 scan->dwLinesDiscard -= dwRet;
1962 dwRet -= scan->dwLinesDiscard;
1963 scan->dwLinesDiscard = 0;
1967 dwRet = dw / scan->sParam.Size.dwPhyBytes;
1970 scan->pbGetDataBuf += scan->dwBytesScanBuf;
1971 if( scan->pbGetDataBuf >= scan->pbScanBufEnd ) {
1972 scan->pbGetDataBuf = scan->pbScanBufBegin;