Lines Matching full:dev
72 static SANE_Bool fnReadToDriver( U12_Device *dev ) in fnReadToDriver() argument
74 dev->regs.RD_ModeControl = _ModeFifoBSel; in fnReadToDriver()
75 u12io_ReadMonoData( dev, dev->scan.BufPut.blue.bp, in fnReadToDriver()
76 dev->DataInf.dwAsicBytesPerPlane ); in fnReadToDriver()
78 dev->regs.RD_ModeControl = _ModeFifoGSel; in fnReadToDriver()
79 u12io_ReadMonoData( dev, dev->scan.BufPut.green.bp, in fnReadToDriver()
80 dev->DataInf.dwAsicBytesPerPlane ); in fnReadToDriver()
82 if( dev->scan.gd_gk.wGreenKeep ) in fnReadToDriver()
83 dev->scan.gd_gk.wGreenKeep--; in fnReadToDriver()
85 dev->scan.BufPut.green.bp += dev->DataInf.dwAsicBytesPerPlane; in fnReadToDriver()
87 if( dev->scan.BufPut.green.bp >= dev->scan.BufEnd.green.bp ) in fnReadToDriver()
88 dev->scan.BufPut.green.bp = dev->scan.BufBegin.green.bp; in fnReadToDriver()
91 dev->regs.RD_ModeControl = _ModeFifoRSel; in fnReadToDriver()
92 u12io_ReadMonoData( dev, dev->scan.BufPut.red.bp, in fnReadToDriver()
93 dev->DataInf.dwAsicBytesPerPlane ); in fnReadToDriver()
95 dev->scan.BufPut.red.bp += dev->DataInf.dwAsicBytesPerPlane; in fnReadToDriver()
96 if( dev->scan.BufPut.red.bp >= dev->scan.BufEnd.red.bp ) in fnReadToDriver()
97 dev->scan.BufPut.red.bp = dev->scan.BufBegin.red.bp; in fnReadToDriver()
99 if( dev->scan.bd_rk.wRedKeep ) { in fnReadToDriver()
100 dev->scan.bd_rk.wRedKeep--; in fnReadToDriver()
105 dev->scan.BufData.green.bp = dev->scan.BufGet.green.bp; in fnReadToDriver()
106 dev->scan.BufData.red.bp = dev->scan.BufGet.red.bp; in fnReadToDriver()
107 dev->scan.BufData.blue.bp = dev->scan.BufGet.blue.bp; in fnReadToDriver()
109 dev->scan.BufGet.red.bp += dev->DataInf.dwAsicBytesPerPlane; in fnReadToDriver()
110 dev->scan.BufGet.green.bp += dev->DataInf.dwAsicBytesPerPlane; in fnReadToDriver()
112 if( dev->scan.BufGet.red.bp >= dev->scan.BufEnd.red.bp ) in fnReadToDriver()
113 dev->scan.BufGet.red.bp = dev->scan.BufBegin.red.bp; in fnReadToDriver()
115 if( dev->scan.BufGet.green.bp >= dev->scan.BufEnd.green.bp ) in fnReadToDriver()
116 dev->scan.BufGet.green.bp = dev->scan.BufBegin.green.bp; in fnReadToDriver()
124 static SANE_Bool fnReadOutScanner( U12_Device *dev ) in fnReadOutScanner() argument
126 if( dev->scan.bd_rk.wBlueDiscard ) { in fnReadOutScanner()
128 dev->scan.bd_rk.wBlueDiscard--; in fnReadOutScanner()
129 dev->regs.RD_ModeControl = _ModeFifoBSel; in fnReadOutScanner()
131 u12io_ReadMonoData( dev, dev->bufs.b1.pReadBuf, in fnReadOutScanner()
132 dev->DataInf.dwAsicBytesPerPlane ); in fnReadOutScanner()
134 if( dev->scan.gd_gk.wGreenDiscard ) { in fnReadOutScanner()
135 dev->scan.gd_gk.wGreenDiscard--; in fnReadOutScanner()
137 dev->regs.RD_ModeControl = _ModeFifoGSel; in fnReadOutScanner()
138 u12io_ReadMonoData( dev, dev->bufs.b1.pReadBuf, in fnReadOutScanner()
139 dev->DataInf.dwAsicBytesPerPlane ); in fnReadOutScanner()
144 u12io_ReadColorData( dev, dev->bufs.b1.pReadBuf, in fnReadOutScanner()
145 dev->DataInf.dwAsicBytesPerPlane ); in fnReadOutScanner()
152 static SANE_Bool fnEveryLine( U12_Device *dev ) in fnEveryLine() argument
154 _VAR_NOT_USED( dev ); in fnEveryLine()
158 static SANE_Bool fnSampleLines( U12_Device *dev ) in fnSampleLines() argument
160 dev->DataInf.wYSum += dev->DataInf.xyAppDpi.y; in fnSampleLines()
162 if( dev->DataInf.wYSum >= dev->DataInf.xyPhyDpi.y ) { in fnSampleLines()
163 dev->DataInf.wYSum -= dev->DataInf.xyPhyDpi.y; in fnSampleLines()
169 static SANE_Bool fnSamplePreview( U12_Device *dev ) in fnSamplePreview() argument
171 dev->DataInf.wYSum += wPreviewScanned; in fnSamplePreview()
172 if( dev->DataInf.wYSum >= 150 ) { in fnSamplePreview()
174 dev->DataInf.wYSum -= 150; in fnSamplePreview()
186 static void fnDataDirect( U12_Device *dev, void *src, void *dest, u_long len ) in fnDataDirect() argument
188 _VAR_NOT_USED( dev ); in fnDataDirect()
194 static void fnColorDirect( U12_Device *dev, void *pb, void *img, u_long len ) in fnColorDirect() argument
202 for ( len = dev->DataInf.dwAsicPixelsPerPlane; len; len--, src++, dest++) { in fnColorDirect()
205 dest->Green = src[dev->DataInf.dwAsicPixelsPerPlane]; in fnColorDirect()
206 dest->Blue = src[dev->DataInf.dwAsicPixelsPerPlane*2]; in fnColorDirect()
214 static void fnColor42( U12_Device *dev, void *pb, void *img, u_long len ) in fnColor42() argument
225 for ( i = dev->DataInf.dwAsicPixelsPerPlane; i; i--, src++, dest++) { in fnColor42()
228 dest->Green = (src[dev->DataInf.dwAsicPixelsPerPlane]) << 4; in fnColor42()
229 dest->Blue = (src[dev->DataInf.dwAsicPixelsPerPlane * 2]) << 4; in fnColor42()
235 static void u12image_SetupScanStateVariables( U12_Device *dev, u_long index ) in u12image_SetupScanStateVariables() argument
240 dev->scan.dpiIdx = index; in u12image_SetupScanStateVariables()
242 if(!(dev->DataInf.dwScanFlag & _SCANDEF_TPA)) { in u12image_SetupScanStateVariables()
244 dev->shade.wExposure = nmlScan[index].exposureTime; in u12image_SetupScanStateVariables()
245 dev->shade.wXStep = nmlScan[index].xStepTime; in u12image_SetupScanStateVariables()
247 if( dev->shade.intermediate & _ScanMode_AverageOut ) { in u12image_SetupScanStateVariables()
248 dev->shade.wExposure >>= 1; in u12image_SetupScanStateVariables()
249 dev->shade.wXStep >>= 1; in u12image_SetupScanStateVariables()
252 if( dev->DataInf.dwScanFlag & _SCANDEF_Transparency ) { in u12image_SetupScanStateVariables()
253 dev->shade.wExposure = posScan[index].exposureTime; in u12image_SetupScanStateVariables()
254 dev->shade.wXStep = posScan[index].xStepTime; in u12image_SetupScanStateVariables()
256 dev->shade.wExposure = dev->scan.negScan[index].exposureTime; in u12image_SetupScanStateVariables()
257 dev->shade.wXStep = dev->scan.negScan[index].xStepTime; in u12image_SetupScanStateVariables()
260 dev->scan.dwInterval = 1; in u12image_SetupScanStateVariables()
262 if( dev->DataInf.wPhyDataType == COLOR_BW ) in u12image_SetupScanStateVariables()
265 if( dev->DataInf.wPhyDataType == COLOR_256GRAY ) in u12image_SetupScanStateVariables()
272 if((dev->DataInf.xyAppDpi.y >= 300) && var.dwValue && in u12image_SetupScanStateVariables()
273 (dev->DataInf.dwAsicBytesPerPlane <= var.dwValue)) { in u12image_SetupScanStateVariables()
274 dev->scan.dwInterval <<= 1; in u12image_SetupScanStateVariables()
277 if( var.dwValue && dev->DataInf.dwAsicBytesPerPlane > var.dwValue ) { in u12image_SetupScanStateVariables()
278 if((var.dwValue << 1) > dev->DataInf.dwAsicBytesPerPlane) in u12image_SetupScanStateVariables()
279 dev->scan.dwInterval <<= 1; in u12image_SetupScanStateVariables()
281 if((var.dwValue << 2) > dev->DataInf.dwAsicBytesPerPlane) in u12image_SetupScanStateVariables()
282 dev->scan.dwInterval <<= 2; in u12image_SetupScanStateVariables()
284 dev->scan.dwInterval <<= 3; in u12image_SetupScanStateVariables()
287 if( dev->DataInf.wPhyDataType >= COLOR_TRUE24 ) { in u12image_SetupScanStateVariables()
289 if( dev->DataInf.xyPhyDpi.y > 75U ) { in u12image_SetupScanStateVariables()
290 if( dev->f0_8_16 ) { in u12image_SetupScanStateVariables()
291 dev->scan.gd_gk.wGreenDiscard = dev->DataInf.xyPhyDpi.y / 75U; in u12image_SetupScanStateVariables()
293 dev->scan.gd_gk.wGreenDiscard = dev->DataInf.xyPhyDpi.y / 150U; in u12image_SetupScanStateVariables()
296 dev->scan.gd_gk.wGreenDiscard = 1; in u12image_SetupScanStateVariables()
299 dev->scan.bd_rk.wBlueDiscard = dev->scan.gd_gk.wGreenDiscard << 1; in u12image_SetupScanStateVariables()
301 dev->scan.bd_rk.wBlueDiscard = dev->scan.gd_gk.wGreenDiscard = 0; in u12image_SetupScanStateVariables()
308 u12image_GetPhysDPI( U12_Device *dev, ImgDef *img, SANE_Bool fDpiX ) in u12image_GetPhysDPI() argument
312 if( img->xyDpi.x > dev->dpi_max_x ) in u12image_GetPhysDPI()
313 return dev->dpi_max_x; in u12image_GetPhysDPI()
319 if( img->xyDpi.y > dev->dpi_max_y ) in u12image_GetPhysDPI()
320 return dev->dpi_max_y; in u12image_GetPhysDPI()
329 static void u12image_GetImageInfo( U12_Device *dev, ImgDef *image ) in u12image_GetImageInfo() argument
333 dev->DataInf.xyPhyDpi.x = u12image_GetPhysDPI(dev, image, SANE_TRUE ); in u12image_GetImageInfo()
334 dev->DataInf.xyPhyDpi.y = u12image_GetPhysDPI(dev, image, SANE_FALSE); in u12image_GetImageInfo()
337 dev->DataInf.xyPhyDpi.x, dev->DataInf.xyPhyDpi.y ); in u12image_GetImageInfo()
345 dev->DataInf.xyRatio = (double)dev->DataInf.xyPhyDpi.y/ in u12image_GetImageInfo()
346 (double)dev->DataInf.xyPhyDpi.x; in u12image_GetImageInfo()
348 dev->DataInf.dwAppLinesPerArea = (u_long)image->crArea.cy * in u12image_GetImageInfo()
351 dev->DataInf.dwAppPixelsPerLine = (u_long)image->crArea.cx * in u12image_GetImageInfo()
354 dev->DataInf.dwPhysBytesPerLine = (u_long)image->crArea.cx * in u12image_GetImageInfo()
355 dev->DataInf.xyPhyDpi.x / _MEASURE_BASE; in u12image_GetImageInfo()
358 dev->DataInf.dwAsicPixelsPerPlane = in u12image_GetImageInfo()
359 (dev->DataInf.dwAppPixelsPerLine+7UL) & 0xfffffff8UL; in u12image_GetImageInfo()
360 dev->DataInf.dwAppPhyBytesPerLine = in u12image_GetImageInfo()
361 dev->DataInf.dwAppBytesPerLine = in u12image_GetImageInfo()
362 dev->DataInf.dwAsicBytesPerLine = in u12image_GetImageInfo()
363 dev->DataInf.dwAsicBytesPerPlane = dev->DataInf.dwAsicPixelsPerPlane>>3; in u12image_GetImageInfo()
365 dev->DataInf.dwAsicBytesPerPlane = in u12image_GetImageInfo()
366 dev->DataInf.dwAsicPixelsPerPlane = dev->DataInf.dwAppPixelsPerLine; in u12image_GetImageInfo()
370 dev->DataInf.dwAsicBytesPerPlane *= 2; in u12image_GetImageInfo()
376 dev->scan.DataProcess = fnDataDirect; in u12image_GetImageInfo()
377 dev->DataInf.wPhyDataType = COLOR_BW; in u12image_GetImageInfo()
378 dev->shade.intermediate = _ScanMode_Mono; in u12image_GetImageInfo()
382 dev->scan.DataProcess = fnDataDirect; in u12image_GetImageInfo()
383 dev->DataInf.dwAsicBytesPerLine = in u12image_GetImageInfo()
384 dev->DataInf.dwAppPhyBytesPerLine = dev->DataInf.dwAppPixelsPerLine; in u12image_GetImageInfo()
385 dev->DataInf.wPhyDataType = COLOR_256GRAY; in u12image_GetImageInfo()
386 dev->shade.intermediate = _ScanMode_Mono; in u12image_GetImageInfo()
390 dev->scan.DataProcess = fnColorDirect; in u12image_GetImageInfo()
391 dev->DataInf.dwAsicBytesPerLine = in u12image_GetImageInfo()
392 dev->DataInf.dwAppPhyBytesPerLine = dev->DataInf.dwAppPixelsPerLine * 3; in u12image_GetImageInfo()
393 dev->DataInf.wPhyDataType = COLOR_TRUE24; in u12image_GetImageInfo()
394 dev->shade.intermediate = _ScanMode_Color; in u12image_GetImageInfo()
398 dev->scan.DataProcess = fnColor42; in u12image_GetImageInfo()
399 dev->DataInf.dwAsicBytesPerLine = in u12image_GetImageInfo()
400 dev->DataInf.dwAppPhyBytesPerLine = dev->DataInf.dwAppPixelsPerLine * 6; in u12image_GetImageInfo()
401 dev->DataInf.wPhyDataType = COLOR_TRUE42; in u12image_GetImageInfo()
402 dev->shade.intermediate = _ScanMode_Color; in u12image_GetImageInfo()
407 dev->DataInf.dwAppBytesPerLine = dev->DataInf.dwAppPhyBytesPerLine; in u12image_GetImageInfo()
409 DBG( _DBG_INFO, "AppLinesPerArea = %lu\n", dev->DataInf.dwAppLinesPerArea ); in u12image_GetImageInfo()
410 DBG( _DBG_INFO, "AppPixelsPerLine = %lu\n", dev->DataInf.dwAppPixelsPerLine ); in u12image_GetImageInfo()
411 DBG( _DBG_INFO, "AppPhyBytesPerLine = %lu\n", dev->DataInf.dwAppPhyBytesPerLine ); in u12image_GetImageInfo()
412 DBG( _DBG_INFO, "AppBytesPerLine = %lu\n", dev->DataInf.dwAppBytesPerLine ); in u12image_GetImageInfo()
413 DBG( _DBG_INFO, "AsicPixelsPerPlane = %lu\n", dev->DataInf.dwAsicPixelsPerPlane ); in u12image_GetImageInfo()
414 DBG( _DBG_INFO, "AsicBytesPerPlane = %lu\n", dev->DataInf.dwAsicBytesPerPlane ); in u12image_GetImageInfo()
415 DBG( _DBG_INFO, "AsicBytesPerLine = %lu\n", dev->DataInf.dwAsicBytesPerLine ); in u12image_GetImageInfo()
416 DBG( _DBG_INFO, "Physical Bytes = %lu\n", dev->DataInf.dwPhysBytesPerLine ); in u12image_GetImageInfo()
421 static int imageSetupScanSettings( U12_Device *dev, ImgDef *img ) in imageSetupScanSettings() argument
427 dev->DataInf.dwScanFlag = img->dwFlag; in imageSetupScanSettings()
428 dev->DataInf.crImage = img->crArea; in imageSetupScanSettings()
430 DBG( _DBG_INFO,"* DataInf.dwScanFlag = 0x%08lx\n",dev->DataInf.dwScanFlag); in imageSetupScanSettings()
432 dev->DataInf.crImage.x <<= 1; in imageSetupScanSettings()
434 dev->DataInf.xyAppDpi = img->xyDpi; in imageSetupScanSettings()
435 dev->DataInf.wAppDataType = img->wDataType; in imageSetupScanSettings()
437 u12image_GetImageInfo( dev, img ); in imageSetupScanSettings()
439 dev->scan.lBufferAdjust = (long)dev->DataInf.dwAppBytesPerLine; in imageSetupScanSettings()
443 dev->DataInf.crImage.x, dev->DataInf.crImage.y, in imageSetupScanSettings()
444 dev->DataInf.crImage.cx, dev->DataInf.crImage.cy ); in imageSetupScanSettings()
461 DBG( _DBG_INFO, "* brightness = %i\n", dev->DataInf.siBrightness ); in imageSetupScanSettings()
462 if ( dev->DataInf.siBrightness < 0) { in imageSetupScanSettings()
464 (255 - _DEF_BW_THRESHOLD) * dev->DataInf.siBrightness /127); in imageSetupScanSettings()
467 _DEF_BW_THRESHOLD * dev->DataInf.siBrightness /127); in imageSetupScanSettings()
470 dev->regs.RD_ThresholdControl = brightness; in imageSetupScanSettings()
477 static SANE_Status u12image_SetupScanSettings( U12_Device *dev, ImgDef *img ) in u12image_SetupScanSettings() argument
482 dev->scan.dpiIdx = 0; in u12image_SetupScanSettings()
483 dev->scan.negScan = negScan; in u12image_SetupScanSettings()
485 imageSetupScanSettings( dev, img ); in u12image_SetupScanSettings()
487 if( !(dev->DataInf.dwScanFlag & _SCANDEF_TPA )) { in u12image_SetupScanSettings()
489 dev->scan.dwScanOrigin = dev->adj.upNormal * 4 + _RFT_SCANNING_ORG; in u12image_SetupScanSettings()
491 } else if( dev->DataInf.dwScanFlag & _SCANDEF_Transparency) { in u12image_SetupScanSettings()
493 dev->scan.dwScanOrigin = dev->adj.upPositive * 4 + _POS_SCANNING_ORG; in u12image_SetupScanSettings()
495 dev->scan.dwScanOrigin = dev->adj.upNegative * 4 + _NEG_SCANNING_ORG; in u12image_SetupScanSettings()
497 dev->scan.dwScanOrigin += 64 /*dev->dwModelOriginY*/; in u12image_SetupScanSettings()
499 if( dev->DataInf.xyAppDpi.y <= 75 ) { in u12image_SetupScanSettings()
501 if( dev->DataInf.dwScanFlag & _SCANDEF_PREVIEW ) { in u12image_SetupScanSettings()
503 dev->scan.bDiscardAll = 0; in u12image_SetupScanSettings()
504 dev->DataInf.xyPhyDpi.y = 150; in u12image_SetupScanSettings()
505 dev->shade.intermediate |= _ScanMode_AverageOut; in u12image_SetupScanSettings()
506 u12image_SetupScanStateVariables( dev, 1 ); in u12image_SetupScanSettings()
507 dev->scan.gd_gk.wGreenDiscard = 0; in u12image_SetupScanSettings()
509 if( dev->DataInf.xyAppDpi.y >= 38 ) in u12image_SetupScanSettings()
510 dev->scan.bd_rk.wBlueDiscard = 1; in u12image_SetupScanSettings()
512 dev->scan.bd_rk.wBlueDiscard = 0; in u12image_SetupScanSettings()
514 if( dev->DataInf.wPhyDataType >= COLOR_256GRAY ) { in u12image_SetupScanSettings()
515 dev->shade.wXStep = 6; in u12image_SetupScanSettings()
516 dev->shade.wExposure = 8 * dev->shade.wXStep; in u12image_SetupScanSettings()
519 if(!(dev->DataInf.dwScanFlag & _SCANDEF_TPA) && in u12image_SetupScanSettings()
520 (dev->DataInf.xyAppDpi.y <= 50) && in u12image_SetupScanSettings()
521 (dev->DataInf.wPhyDataType >= COLOR_TRUE24)) { in u12image_SetupScanSettings()
522 dev->shade.intermediate |= _ScanMode_AverageOut; in u12image_SetupScanSettings()
525 if((dev->DataInf.wPhyDataType<COLOR_TRUE24) || dev->f0_8_16 || in u12image_SetupScanSettings()
526 (dev->shade.intermediate & _ScanMode_AverageOut)) { in u12image_SetupScanSettings()
528 dev->scan.bDiscardAll = 1; in u12image_SetupScanSettings()
529 dev->DataInf.xyPhyDpi.y = 75; in u12image_SetupScanSettings()
530 u12image_SetupScanStateVariables( dev, 0 ); in u12image_SetupScanSettings()
532 dev->scan.bDiscardAll = 2; in u12image_SetupScanSettings()
533 dev->DataInf.xyPhyDpi.y = 150; in u12image_SetupScanSettings()
534 u12image_SetupScanStateVariables( dev, 1 ); in u12image_SetupScanSettings()
538 if( dev->DataInf.xyAppDpi.y <= 150 ) { in u12image_SetupScanSettings()
540 dev->scan.bDiscardAll = 2; in u12image_SetupScanSettings()
541 dev->DataInf.xyPhyDpi.y = 150; in u12image_SetupScanSettings()
542 u12image_SetupScanStateVariables( dev, 1 ); in u12image_SetupScanSettings()
544 } else if( dev->DataInf.xyAppDpi.y <= 300 ) { in u12image_SetupScanSettings()
546 dev->scan.bDiscardAll = 4; in u12image_SetupScanSettings()
547 dev->DataInf.xyPhyDpi.y = 300; in u12image_SetupScanSettings()
548 u12image_SetupScanStateVariables( dev, 2 ); in u12image_SetupScanSettings()
550 } else if( dev->DataInf.xyAppDpi.y <= 600 ) { in u12image_SetupScanSettings()
552 dev->scan.bDiscardAll = 8; in u12image_SetupScanSettings()
553 dev->DataInf.xyPhyDpi.y = 600; in u12image_SetupScanSettings()
554 u12image_SetupScanStateVariables( dev, 3 ); in u12image_SetupScanSettings()
558 dev->scan.bDiscardAll = 16; in u12image_SetupScanSettings()
559 dev->DataInf.xyPhyDpi.y = 1200; in u12image_SetupScanSettings()
560 u12image_SetupScanStateVariables( dev, 4 ); in u12image_SetupScanSettings()
565 if( dev->DataInf.xyAppDpi.y == dev->DataInf.xyPhyDpi.y ) { in u12image_SetupScanSettings()
567 dev->scan.DoSample = fnEveryLine; in u12image_SetupScanSettings()
569 if( dev->DataInf.dwScanFlag & _SCANDEF_PREVIEW ) { in u12image_SetupScanSettings()
572 dev->scan.DoSample = fnSamplePreview; in u12image_SetupScanSettings()
573 dev->DataInf.wYSum = 150; in u12image_SetupScanSettings()
575 if( dev->DataInf.xyAppDpi.y >= 38 ) in u12image_SetupScanSettings()
576 wPreviewScanned = dev->DataInf.xyAppDpi.y * 2; in u12image_SetupScanSettings()
577 else if( dev->DataInf.xyAppDpi.y >= 19 ) in u12image_SetupScanSettings()
578 wPreviewScanned = dev->DataInf.xyAppDpi.y * 4; in u12image_SetupScanSettings()
580 wPreviewScanned = dev->DataInf.xyAppDpi.y * 8; in u12image_SetupScanSettings()
584 dev->DataInf.xyPhyDpi.y, dev->DataInf.xyAppDpi.y ); in u12image_SetupScanSettings()
585 dev->scan.DoSample = fnSampleLines; in u12image_SetupScanSettings()
586 dev->DataInf.wYSum = dev->DataInf.xyPhyDpi.y - dev->DataInf.xyAppDpi.y; in u12image_SetupScanSettings()
592 dev->scan.p48BitBuf.pb = NULL; in u12image_SetupScanSettings()
594 if( dev->DataInf.wPhyDataType >= COLOR_TRUE24 ) { in u12image_SetupScanSettings()
599 dev->DataInf.dwAsicBytesPerPlane - dev->scan.bd_rk.wRedKeep; in u12image_SetupScanSettings()
601 dev->DataInf.dwAsicBytesPerPlane - dev->scan.gd_gk.wGreenKeep; in u12image_SetupScanSettings()
605 b = (u_long)(dev->scan.bd_rk.wRedKeep + in u12image_SetupScanSettings()
606 dev->scan.gd_gk.wGreenKeep + 2U) * in u12image_SetupScanSettings()
607 dev->DataInf.dwAsicBytesPerPlane; in u12image_SetupScanSettings()
617 dev->scan.p48BitBuf.pb = dev->bufs.b1.pReadBuf; in u12image_SetupScanSettings()
621 if( dev->scan.p48BitBuf.pb ){ in u12image_SetupScanSettings()
622 dev->scan.DataRead = fnReadToDriver; in u12image_SetupScanSettings()
623 dev->scan.BufGet.red.bp = in u12image_SetupScanSettings()
624 dev->scan.BufPut.red.bp = in u12image_SetupScanSettings()
625 dev->scan.BufBegin.red.bp = dev->scan.p48BitBuf.pb; in u12image_SetupScanSettings()
626 dev->scan.BufEnd.red.bp = in u12image_SetupScanSettings()
627 dev->scan.BufBegin.green.bp = in u12image_SetupScanSettings()
628 dev->scan.BufGet.green.bp = in u12image_SetupScanSettings()
629 dev->scan.BufPut.green.bp = dev->scan.p48BitBuf.pb + in u12image_SetupScanSettings()
630 dev->DataInf.dwAsicBytesPerLine * in u12image_SetupScanSettings()
631 (dev->scan.bd_rk.wRedKeep + 1U); in u12image_SetupScanSettings()
633 dev->scan.BufEnd.green.bp = dev->scan.BufBegin.green.bp + in u12image_SetupScanSettings()
634 dev->DataInf.dwAsicBytesPerLine * in u12image_SetupScanSettings()
635 (dev->scan.gd_gk.wGreenKeep + 1U); in u12image_SetupScanSettings()
636 dev->scan.BufPut.blue.bp = in u12image_SetupScanSettings()
637 dev->scan.BufGet.blue.bp = dev->bufs.b1.pReadBuf + in u12image_SetupScanSettings()
638 dev->DataInf.dwAsicBytesPerLine * 2; in u12image_SetupScanSettings()
640 dev->scan.DataRead = fnReadOutScanner; in u12image_SetupScanSettings()
641 dev->scan.BufPut.red.bp = dev->bufs.b1.pReadBuf; in u12image_SetupScanSettings()
642 dev->scan.BufData.green.bp = in u12image_SetupScanSettings()
643 dev->scan.BufPut.green.bp = dev->scan.BufPut.red.bp + in u12image_SetupScanSettings()
644 dev->DataInf.dwAsicBytesPerLine; in u12image_SetupScanSettings()
645 dev->scan.BufPut.blue.bp = dev->scan.BufPut.green.bp + in u12image_SetupScanSettings()
646 dev->DataInf.dwAsicBytesPerLine; in u12image_SetupScanSettings()
648 dev->scan.BufData.red.bp = dev->scan.BufPut.red.bp; in u12image_SetupScanSettings()
649 dev->scan.BufData.blue.bp = dev->scan.BufPut.blue.bp; in u12image_SetupScanSettings()
688 static SANE_Bool u12image_DataIsReady( U12_Device *dev, void* buf ) in u12image_DataIsReady() argument
692 if( dev->scan.bDiscardAll ) { in u12image_DataIsReady()
693 dev->scan.bDiscardAll--; in u12image_DataIsReady()
695 if( dev->DataInf.wPhyDataType <= COLOR_256GRAY ) { in u12image_DataIsReady()
696 dev->regs.RD_ModeControl = _ModeFifoGSel; in u12image_DataIsReady()
697 u12io_ReadMonoData( dev, dev->bufs.b1.pReadBuf, in u12image_DataIsReady()
698 dev->DataInf.dwAsicBytesPerPlane ); in u12image_DataIsReady()
700 u12io_ReadColorData( dev, dev->bufs.b1.pReadBuf, in u12image_DataIsReady()
701 dev->DataInf.dwAsicBytesPerPlane ); in u12image_DataIsReady()
706 if( dev->DataInf.wPhyDataType <= COLOR_256GRAY ) { in u12image_DataIsReady()
708 dev->regs.RD_ModeControl = _ModeFifoGSel; in u12image_DataIsReady()
709 u12io_ReadMonoData( dev, buf, dev->DataInf.dwAsicBytesPerPlane ); in u12image_DataIsReady()
713 if( !dev->scan.DataRead( dev )) { in u12image_DataIsReady()
718 if( dev->scan.DoSample( dev )) { in u12image_DataIsReady()
721 if( fnDataDirect != dev->scan.DataProcess ) { in u12image_DataIsReady()
722 (*dev->scan.DataProcess)(dev, buf, (void*)(dev->scan.BufPut.red.bp), in u12image_DataIsReady()
723 dev->DataInf.dwAppPhyBytesPerLine); in u12image_DataIsReady()
732 static SANE_Status u12image_ReadOneImageLine( U12_Device *dev, void* buf ) in u12image_ReadOneImageLine() argument
743 state = u12io_GetScanState( dev ); in u12image_ReadOneImageLine()
744 dev->scan.bNowScanState = (state & _SCANSTATE_MASK); in u12image_ReadOneImageLine()
749 u12motor_ModuleForwardBackward( dev ); in u12image_ReadOneImageLine()
751 if( u12io_GetFifoLength( dev ) >= dev->scan.dwMinReadFifo ) in u12image_ReadOneImageLine()
752 if( u12image_DataIsReady( dev, buf )) in u12image_ReadOneImageLine()
757 dev->scan.bModuleState = _MotorInNormalState; in u12image_ReadOneImageLine()
758 b = dev->scan.bNowScanState - dev->scan.oldScanState; in u12image_ReadOneImageLine()
763 if( b >= dev->scan.bRefresh ) { in u12image_ReadOneImageLine()
765 u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE ); in u12image_ReadOneImageLine()
766 dev->scan.oldScanState = u12io_GetScanState( dev ); in u12image_ReadOneImageLine()
767 dev->scan.oldScanState &= _SCANSTATE_MASK; in u12image_ReadOneImageLine()
770 if( u12io_GetFifoLength( dev ) >= dev->scan.dwMaxReadFifo ) { in u12image_ReadOneImageLine()
772 if( u12image_DataIsReady( dev, buf )) in u12image_ReadOneImageLine()
777 b = dev->scan.bNowScanState - dev->scan.oldScanState; in u12image_ReadOneImageLine()
782 if( b >= dev->scan.bRefresh ) { in u12image_ReadOneImageLine()
784 u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE ); in u12image_ReadOneImageLine()
785 dev->scan.oldScanState = u12io_GetScanState( dev ); in u12image_ReadOneImageLine()
786 dev->scan.oldScanState &= _SCANSTATE_MASK; in u12image_ReadOneImageLine()
789 if( u12io_GetFifoLength( dev ) >= dev->scan.dwMinReadFifo ) { in u12image_ReadOneImageLine()
790 if( u12image_DataIsReady( dev, buf )) in u12image_ReadOneImageLine()
799 u12motor_ToHomePosition( dev, SANE_TRUE ); in u12image_ReadOneImageLine()
807 static void u12image_PrepareScaling( U12_Device *dev ) in u12image_PrepareScaling() argument
812 dev->scaleBuf = NULL; in u12image_PrepareScaling()
814 dev->DataInf.xyAppDpi.x, dev->dpi_max_x ); in u12image_PrepareScaling()
816 if( dev->DataInf.xyAppDpi.x > dev->dpi_max_x ) { in u12image_PrepareScaling()
818 dev->scaleBuf = malloc( dev->DataInf.dwAppBytesPerLine ); in u12image_PrepareScaling()
820 ratio = (double)dev->DataInf.xyAppDpi.x/(double)dev->dpi_max_x; in u12image_PrepareScaling()
821 dev->scaleIzoom = (int)(1.0/ratio * 1000); in u12image_PrepareScaling()
823 switch( dev->DataInf.wAppDataType ) { in u12image_PrepareScaling()
831 dev->scaleStep = step; in u12image_PrepareScaling()
834 dev->scaleIzoom, step ); in u12image_PrepareScaling()
844 static void u12image_ScaleX( U12_Device *dev, SANE_Byte *ib, SANE_Byte *ob ) in u12image_ScaleX() argument
851 if( 99 == dev->scaleStep ) { in u12image_ScaleX()
852 memcpy( ob, ib, dev->DataInf.dwAppBytesPerLine ); in u12image_ScaleX()
857 if( 0 == dev->scaleStep ) { in u12image_ScaleX()
862 memset( ob, 0, dev->DataInf.dwAppBytesPerLine ); in u12image_ScaleX()
864 for( i = 0; i < dev->DataInf.dwPhysBytesPerLine*8; i++ ) { in u12image_ScaleX()
872 if((x>>3) < dev->DataInf.dwAppBytesPerLine ) { in u12image_ScaleX()
877 ddax += dev->scaleIzoom; in u12image_ScaleX()
886 for( i = 0; i < dev->DataInf.dwPhysBytesPerLine*dev->scaleStep; in u12image_ScaleX()
887 i+=dev->scaleStep ) { in u12image_ScaleX()
893 for( j = 0; j < (u_long)dev->scaleStep; j++ ) { in u12image_ScaleX()
895 if((x+j) < dev->DataInf.dwAppBytesPerLine ) { in u12image_ScaleX()
899 x += dev->scaleStep; in u12image_ScaleX()
900 ddax += dev->scaleIzoom; in u12image_ScaleX()