Lines Matching refs:scan

890 	ScanDef  *scan  = &dev->scanning;
896 memset( scan, 0, sizeof(ScanDef));
900 scan->sParam.dMCLK = dMCLK_ADF;
904 scan->fGrayFromColor = 0;
915 scan->fGrayFromColor = 2;
922 scan->fGrayFromColor = 2;
929 scan->fGrayFromColor = 2;
936 scan->fGrayFromColor = 10;
943 usb_GetImageInfo ( dev, &si->ImgDef, &scan->sParam.Size );
946 scan->dwFlag = si->ImgDef.dwFlag &
955 scan->dwFlag |= SCANDEF_QualityScan;
958 scan->sParam.brightness = si->siBrightness;
959 scan->sParam.contrast = si->siContrast;
961 if( scan->sParam.bBitDepth <= 8 )
962 scan->dwFlag &= ~SCANFLAG_RightAlign;
964 if( scan->dwFlag & SCANFLAG_DWORDBoundary ) {
965 if( scan->fGrayFromColor && scan->fGrayFromColor < 10)
966 scan->dwBytesLine = (scan->sParam.Size.dwBytes / 3 + 3) & 0xfffffffcUL;
968 scan->dwBytesLine = (scan->sParam.Size.dwBytes + 3UL) & 0xfffffffcUL;
972 if( scan->fGrayFromColor && scan->fGrayFromColor < 10)
973 scan->dwBytesLine = scan->sParam.Size.dwBytes / 3;
975 scan->dwBytesLine = scan->sParam.Size.dwBytes;
983 if( scan->dwFlag & SCANFLAG_BottomUp)
984 scan->lBufAdjust = -(long)scan->dwBytesLine;
986 scan->lBufAdjust = scan->dwBytesLine;
991 if( scan->sParam.bBitDepth > 8 ) {
995 scan->sParam.bBitDepth = 8;
996 scan->dwFlag |= SCANFLAG_Pseudo48;
997 scan->sParam.Size.dwBytes >>= 1;
1002 if( scan->sParam.bSource == SOURCE_Reflection ) {
1005 scan->sParam.Origin.x += dev->usbDev.pSource->DataOrigin.x +
1007 scan->sParam.Origin.y += dev->usbDev.pSource->DataOrigin.y +
1010 } else if( scan->sParam.bSource == SOURCE_Transparency ) {
1013 scan->sParam.Origin.x += dev->usbDev.pSource->DataOrigin.x +
1015 scan->sParam.Origin.y += dev->usbDev.pSource->DataOrigin.y +
1018 } else if( scan->sParam.bSource == SOURCE_Negative ) {
1021 scan->sParam.Origin.x += dev->usbDev.pSource->DataOrigin.x +
1023 scan->sParam.Origin.y += dev->usbDev.pSource->DataOrigin.y +
1029 scan->sParam.Origin.x += dev->usbDev.pSource->DataOrigin.x +
1031 scan->sParam.Origin.y += dev->usbDev.pSource->DataOrigin.y +
1035 if( scan->sParam.bSource == SOURCE_ADF ) {
1037 if( scan->dwFlag & SCANDEF_ContinuousScan )
1072 ScanDef *scan = &dev->scanning;
1077 if( scan->dwFlag & SCANDEF_QualityScan )
1084 if((scan->dwFlag & SCANDEF_Adf) && (scan->dwFlag & SCANDEF_ContinuousScan)) {
1085 scan->fCalibrated = SANE_TRUE;
1087 scan->fCalibrated = SANE_FALSE;
1090 scan->sParam.PhyDpi.x = usb_SetAsicDpiX(dev,scan->sParam.UserDpi.x);
1091 scan->sParam.PhyDpi.y = usb_SetAsicDpiY(dev,scan->sParam.UserDpi.y);
1093 /* Allocate shading/scan buffer */
1094 scan->pScanBuffer = (u_long*)malloc( _SCANBUF_SIZE );
1096 if( scan->pScanBuffer == NULL )
1099 scan->dwFlag |= SCANFLAG_StartScan;
1113 m_fAutoPark = (scan->dwFlag&SCANFLAG_StillModule)?SANE_FALSE:SANE_TRUE;
1133 ScanDef *scan = &dev->scanning;
1178 if( !(scan->dwFlag & SCANFLAG_Scanning)) {
1184 scan->bLinesToSkip = (u_char)(scan->sParam.PhyDpi.y / 50);
1186 scan->dwLinesDiscard = 0;
1187 if( scan->sParam.bChannels == 3 ) {
1188 scan->dwLinesDiscard = (u_long)scaps->bSensorDistance *
1189 scan->sParam.PhyDpi.y / scaps->OpticDpi.y;
1190 scan->dwLinesDiscard <<= 1;
1193 if( !usb_SetScanParameters( dev, &scan->sParam )) {
1207 scan->pbScanBufBegin = (u_char*)scan->pScanBuffer;
1210 scan->dwLinesScanBuf = 8;
1212 scan->dwLinesScanBuf = 32;
1214 scan->dwBytesScanBuf = scan->dwLinesScanBuf *
1215 scan->sParam.Size.dwPhyBytes;
1217 scan->dwNumberOfScanBufs = _SCANBUF_SIZE / scan->dwBytesScanBuf;
1218 scan->dwLinesPerScanBufs = scan->dwNumberOfScanBufs *
1219 scan->dwLinesScanBuf;
1220 scan->pbScanBufEnd = scan->pbScanBufBegin +
1221 scan->dwLinesPerScanBufs *
1222 scan->sParam.Size.dwPhyBytes;
1223 scan->dwRedShift = 0;
1224 scan->dwBlueShift = 0;
1225 scan->dwGreenShift = 0;
1228 if( scan->sParam.bChannels == 3 ) {
1230 scan->dwLinesDiscard = (u_long)scaps->bSensorDistance *
1231 scan->sParam.PhyDpi.y / scaps->OpticDpi.y;
1236 scan->Red.pb = scan->pbScanBufBegin;
1237 scan->Green.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1238 scan->sParam.Size.dwPhyBytes;
1239 scan->Blue.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1240 scan->sParam.Size.dwPhyBytes * 2UL;
1244 scan->Red.pb = scan->pbScanBufBegin;
1245 scan->Blue.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1246 scan->sParam.Size.dwPhyBytes;
1247 scan->Green.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1248 scan->sParam.Size.dwPhyBytes * 2UL;
1252 scan->Green.pb = scan->pbScanBufBegin;
1253 scan->Blue.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1254 scan->sParam.Size.dwPhyBytes;
1255 scan->Red.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1256 scan->sParam.Size.dwPhyBytes * 2UL;
1260 scan->Green.pb = scan->pbScanBufBegin;
1261 scan->Red.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1262 scan->sParam.Size.dwPhyBytes;
1263 scan->Blue.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1264 scan->sParam.Size.dwPhyBytes * 2UL;
1268 scan->Blue.pb = scan->pbScanBufBegin;
1269 scan->Red.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1270 scan->sParam.Size.dwPhyBytes;
1271 scan->Green.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1272 scan->sParam.Size.dwPhyBytes * 2UL;
1276 scan->Blue.pb = scan->pbScanBufBegin;
1277 scan->Green.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1278 scan->sParam.Size.dwPhyBytes;
1279 scan->Red.pb = scan->pbScanBufBegin + scan->dwLinesDiscard *
1280 scan->sParam.Size.dwPhyBytes * 2UL;
1284 scan->dwLinesDiscard <<= 1;
1285 scan->dwGreenShift = (7UL+scan->sParam.bBitDepth) >> 3;
1286 scan->Green.pb += scan->dwGreenShift;
1287 scan->Blue.pb += (scan->dwGreenShift * 2);
1289 if( scan->dwFlag & SCANFLAG_bgr) {
1291 u_char *pb = scan->Blue.pb;
1293 scan->Blue.pb = scan->Red.pb;
1294 scan->Red.pb = pb;
1295 scan->dwBlueShift = 0;
1296 scan->dwRedShift = scan->dwGreenShift << 1;
1298 scan->dwRedShift = 0;
1299 scan->dwBlueShift = scan->dwGreenShift << 1;
1307 scan->dwLinesDiscard = 0;
1308 scan->Green.pb = scan->pbScanBufBegin;
1310 if(( scan->sParam.bDataType == SCANDATATYPE_Color ) &&
1314 u_long len = scan->sParam.Size.dwPhyBytes / 3;
1319 if (scan->sParam.PhyDpi.x > scaps->bPCB) {
1329 scan->Red.pb = scan->pbScanBufBegin;
1330 scan->Green.pb = scan->pbScanBufBegin + len;
1331 scan->Blue.pb = scan->pbScanBufBegin + len * 2UL;
1335 scan->Green.pb = scan->pbScanBufBegin;
1336 scan->Blue.pb = scan->pbScanBufBegin + len;
1337 scan->Red.pb = scan->pbScanBufBegin + len * 2UL;
1350 if( scan->sParam.bSource == SOURCE_ADF )
1351 scan->dwFlag |= SCANFLAG_StillModule;
1353 DBG( _DBG_INFO, "* scan->dwFlag=0x%08lx\n", scan->dwFlag );
1356 (scan->dwFlag&SCANFLAG_StillModule) ? SANE_FALSE:SANE_TRUE)) {
1361 scan->dwFlag |= SCANFLAG_Scanning;
1363 if( scan->sParam.UserDpi.y != scan->sParam.PhyDpi.y ) {
1365 if( scan->sParam.UserDpi.y < scan->sParam.PhyDpi.y ) {
1367 scan->wSumY = scan->sParam.PhyDpi.y - scan->sParam.UserDpi.y;
1368 scan->dwFlag |= SCANFLAG_SampleY;
1370 scan->sParam.UserDpi.y, scan->sParam.PhyDpi.y, scan->wSumY );
1375 dumpPicInit( &scan->sParam, "plustek-pic.raw" );
1381 scan->dwLinesUser = scan->sParam.Size.dwLines;
1382 if( !scan->dwLinesUser )
1385 if( scan->sParam.Size.dwLines < scan->dwLinesUser )
1386 scan->dwLinesUser = scan->sParam.Size.dwLines;
1388 scan->sParam.Size.dwLines -= scan->dwLinesUser;
1389 if( scan->dwFlag & SCANFLAG_BottomUp )
1390 scan->UserBuf.pb = buf + (scan->dwLinesUser - 1) * scan->dwBytesLine;
1392 scan->UserBuf.pb = buf;
1395 DBG(_DBG_INFO,"PhyDpi.x = %u\n", scan->sParam.PhyDpi.x );
1396 DBG(_DBG_INFO,"PhyDpi.y = %u\n", scan->sParam.PhyDpi.y );
1397 DBG(_DBG_INFO,"UserDpi.x = %u\n", scan->sParam.UserDpi.x );
1398 DBG(_DBG_INFO,"UserDpi.y = %u\n", scan->sParam.UserDpi.y );
1399 DBG(_DBG_INFO,"NumberOfScanBufs = %lu\n",scan->dwNumberOfScanBufs);
1400 DBG(_DBG_INFO,"LinesPerScanBufs = %lu\n",scan->dwLinesPerScanBufs);
1401 DBG(_DBG_INFO,"dwPhyBytes = %lu\n",scan->sParam.Size.dwPhyBytes);
1402 DBG(_DBG_INFO,"dwPhyPixels = %lu\n",scan->sParam.Size.dwPhyPixels);
1403 DBG(_DBG_INFO,"dwTotalBytes = %lu\n",scan->sParam.Size.dwTotalBytes);
1404 DBG(_DBG_INFO,"dwPixels = %lu\n",scan->sParam.Size.dwPixels);
1405 DBG(_DBG_INFO,"dwBytes = %lu\n",scan->sParam.Size.dwBytes);
1406 DBG(_DBG_INFO,"dwValidPixels = %lu\n",scan->sParam.Size.dwValidPixels);
1407 DBG(_DBG_INFO,"dwBytesScanBuf = %lu\n",scan->dwBytesScanBuf );
1408 DBG(_DBG_INFO,"dwLinesDiscard = %lu\n",scan->dwLinesDiscard );
1409 DBG(_DBG_INFO,"dwLinesToSkip = %u\n", scan->bLinesToSkip );
1410 DBG(_DBG_INFO,"dwLinesUser = %lu\n",scan->dwLinesUser );
1411 DBG(_DBG_INFO,"dwBytesLine = %lu\n",scan->dwBytesLine );
1413 scan->pbGetDataBuf = scan->pbScanBufBegin;
1415 scan->dwLinesToProcess = usb_ReadData( dev );
1416 if( 0 == scan->dwLinesToProcess )
1429 ScanDef *scan = &dev->scanning;
1432 cur = scan->dwLinesUser;
1437 while( cur == scan->dwLinesUser ) {
1444 if( !(scan->dwFlag & SCANFLAG_SampleY)) {
1446 scan->pfnProcess( dev );
1449 scan->UserBuf.pb += scan->lBufAdjust;
1450 scan->dwLinesUser--;
1454 scan->wSumY += scan->sParam.UserDpi.y;
1456 if( scan->wSumY >= scan->sParam.PhyDpi.y ) {
1457 scan->wSumY -= scan->sParam.PhyDpi.y;
1459 scan->pfnProcess( dev );
1462 scan->UserBuf.pb += scan->lBufAdjust;
1463 scan->dwLinesUser--;
1470 if( scan->sParam.bDataType == SCANDATATYPE_Color ) {
1472 scan->Red.pb += scan->sParam.Size.dwPhyBytes;
1473 if( scan->Red.pb >= scan->pbScanBufEnd ) {
1474 scan->Red.pb = scan->pbScanBufBegin + scan->dwRedShift;
1478 scan->Green.pb += scan->sParam.Size.dwPhyBytes;
1479 if( scan->Green.pb >= scan->pbScanBufEnd ) {
1480 scan->Green.pb = scan->pbScanBufBegin + scan->dwGreenShift;
1484 scan->Blue.pb += scan->sParam.Size.dwPhyBytes;
1485 if( scan->Blue.pb >= scan->pbScanBufEnd ) {
1486 scan->Blue.pb = scan->pbScanBufBegin + scan->dwBlueShift;
1490 scan->Green.pb += scan->sParam.Size.dwPhyBytes;
1491 if( scan->Green.pb >= scan->pbScanBufEnd )
1492 scan->Green.pb = scan->pbScanBufBegin + scan->dwGreenShift;
1500 u_long len = scan->sParam.Size.dwPhyBytes;
1504 if(scan->sParam.bDataType == SCANDATATYPE_Color) {
1507 scan->Red.pb = scan->pbScanBufBegin;
1508 scan->Green.pb = scan->pbScanBufBegin + len;
1509 scan->Blue.pb = scan->pbScanBufBegin + len * 2UL;
1515 scan->dwLinesToProcess--;
1517 if( 0 == scan->dwLinesToProcess ) {
1519 scan->dwLinesToProcess = usb_ReadData( dev );
1520 if( 0 == scan->dwLinesToProcess ) {