Lines Matching refs:ps

83 static void tpaP98SubNoise( pScanData ps, pULong pdwSum, pUShort pwShading,
92 for (dwPixels = 0; dwPixels < (ps->dwShadingPixels - 4); dwPixels++,
95 pw = (pUShort)ps->Shade.pHilight + dwHilightOff + dwPixels;
101 pw = ps->pwShadow + dwShadowOff + dwPixels;
106 *pwShading = (UShort)((*pdwSum - dwSum) / ps->Shade.dwDiv);
108 if (ps->dwShadingPixels != 5400UL) {
117 static void tpaP98ShadingWaveformSum( pScanData ps )
122 pd.pdw = (pULong)ps->pScanBuffer1;
123 pt.pw = (pUShort)ps->pScanBuffer1;
125 if ((ps->DataInf.dwScanFlag & SCANDEF_TPA ) ||
126 (0 == ps->bShadingTimeFlag)) {
128 if( ps->Shade.pHilight ) {
130 tpaP98SubNoise( ps, (pULong)ps->pScanBuffer1,
131 (pUShort)ps->pScanBuffer1, 0, 0);
133 tpaP98SubNoise( ps ,(pULong)ps->pScanBuffer1 + 5400UL,
134 (pUShort)ps->pScanBuffer1 + 5400UL,
135 ps->dwHilightCh, ps->dwShadowCh);
137 tpaP98SubNoise( ps, (pULong)ps->pScanBuffer1 + 5400UL * 2UL,
138 (pUShort)ps->pScanBuffer1 + 5400UL * 2UL,
139 ps->dwHilightCh * 2, ps->dwShadowCh * 2);
148 if (02 == ps->bShadingTimeFlag ) {
161 static void tpaP98GetNegativeTempRamData( pScanData ps )
170 ps->bFastMoveFlag = _FastMove_Low_C75_G150;
172 MotorP98GoFullStep( ps ,80 );
174 pNegativeTempRam = (pUShort)(ps->pScanBuffer1 + 5400 * 6);
182 ps->AsicReg.RD_Motor0Control = 0;
184 IOCmdRegisterToScanner( ps, ps->RegMotor0Control,
185 ps->AsicReg.RD_Motor0Control );
187 ps->AsicReg.RD_ModeControl = _ModeScan;
188 ps->AsicReg.RD_Motor0Control = _MotorOn + _MotorHEightStep + _MotorDirForward;
189 ps->AsicReg.RD_ModelControl = _ModelDpi600 + _LED_CONTROL + _LED_ACTIVITY;
190 ps->AsicReg.RD_Dpi = ps->PhysicalDpi;
192 if (!ps->wNegAdjustX) {
193 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 + ps->Device.DataOriginX +
196 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 + ps->Device.DataOriginX +
197 ps->wNegAdjustX);
200 ps->AsicReg.RD_Pixels = 960;
201 ps->AsicReg.RD_XStepTime = 32;
203 IOPutOnAllRegisters( ps );
206 p.pb = ps->a_nbNewAdrPointer;
210 IOSetToMotorRegister( ps );
218 while((IOReadFifoLength( ps ) < 960) && !MiscCheckTimer( &timer )) {
224 ps->AsicReg.RD_ModeControl = _ModeFifoRSel;
225 IOReadScannerImageData( ps, (pUChar)pNegativeTempRam, 960 );
227 ps->AsicReg.RD_ModeControl = _ModeFifoGSel;
228 IOReadScannerImageData( ps, (pUChar)(pNegativeTempRam + 960), 960 );
230 ps->AsicReg.RD_ModeControl = _ModeFifoBSel;
231 IOReadScannerImageData( ps, (pUChar)(pNegativeTempRam + 960 * 2), 960 );
238 if (IOReadFifoLength( ps ) <= (960 * 2))
239 IORegisterDirectToScanner( ps, ps->RegRefreshScanState );
253 if (!ps->wNegAdjustX) {
254 dw1 = (ps->dwOffsetNegative + _Negative96OriginOffsetX * 2 * 2) / 2;
256 dw1 = (ps->dwOffsetNegative + ps->wNegAdjustX * 2) / 2;
262 (((pUShort)ps->pScanBuffer1)[dw1] +
263 ((pUShort)ps->pScanBuffer1)[dw1+1] +
264 ((pUShort)ps->pScanBuffer1)[dw1+2] +
265 ((pUShort)ps->pScanBuffer1)[dw1+3]) / 4);
269 if (!ps->wNegAdjustX)
270 dw1 = (ps->dwOffsetNegative + 5400 * 2 + _Negative96OriginOffsetX * 2 * 2) / 2;
272 dw1 = (ps->dwOffsetNegative + 5400 * 2 + ps->wNegAdjustX * 2) / 2;
277 (((pUShort)ps->pScanBuffer1)[dw1] +
278 ((pUShort)ps->pScanBuffer1)[dw1+1] +
279 ((pUShort)ps->pScanBuffer1)[dw1+2] +
280 ((pUShort)ps->pScanBuffer1)[dw1+3]) / 4);
284 if (!ps->wNegAdjustX)
285 dw1 = (ps->dwOffsetNegative + 5400 * 4 + _Negative96OriginOffsetX * 2 * 2) / 2;
287 dw1 = (ps->dwOffsetNegative + 5400 * 4 + ps->wNegAdjustX * 2) / 2;
292 (((pUShort)ps->pScanBuffer1)[dw1] +
293 ((pUShort)ps->pScanBuffer1)[dw1+1] +
294 ((pUShort)ps->pScanBuffer1)[dw1+2] +
295 ((pUShort)ps->pScanBuffer1)[dw1+3]) / 4);
318 if ((ps->bRedGainIndex += (Byte)((wRedShadingTemp / wRedTemp) * 100 - 50) / 25) > 32)
319 ps->bRedGainIndex = 31;
321 if ((ps->bGreenGainIndex += (Byte)((wGreenShadingTemp / wGreenTemp) * 100 - 50) / 25) > 32)
322 ps->bGreenGainIndex = 31;
324 if ((ps->bBlueGainIndex += (Byte)((wBlueShadingTemp / wBlueTemp) * 100 - 50) / 25) > 32)
325 ps->bBlueGainIndex = 31;
332 static void tpaP98RecalculateNegativeShadingGain( pScanData ps )
343 pNegativeTempRam = (pUChar)(ps->pScanBuffer1 + 5400 * 6);
346 ps->Shade.pCcdDac->DarkDAC.Colors.Red = ps->bsPreRedDAC;
347 ps->Shade.pCcdDac->DarkDAC.Colors.Green = ps->bsPreGreenDAC;
348 ps->Shade.pCcdDac->DarkDAC.Colors.Blue = ps->bsPreBlueDAC;
350 ps->Shade.pCcdDac->DarkCmpHi.Colors.Red = ps->wsDACCompareHighRed;
351 ps->Shade.pCcdDac->DarkCmpLo.Colors.Red = ps->wsDACCompareLowRed;
352 ps->Shade.pCcdDac->DarkCmpHi.Colors.Green = ps->wsDACCompareHighGreen;
353 ps->Shade.pCcdDac->DarkCmpLo.Colors.Green = ps->wsDACCompareLowGreen;
354 ps->Shade.pCcdDac->DarkCmpHi.Colors.Blue = ps->wsDACCompareHighBlue;
355 ps->Shade.pCcdDac->DarkCmpLo.Colors.Blue = ps->wsDACCompareLowBlue;
357 DacP98FillGainOutDirectPort( ps );
363 ps->PauseColorMotorRunStates( ps );
366 ps->AsicReg.RD_ScanControl |= _SCAN_BYTEMODE;
367 ps->AsicReg.RD_ScanControl &= 0xfd;
368 IOCmdRegisterToScanner(ps, ps->RegScanControl, ps->AsicReg.RD_ScanControl);
369 DacP98FillGainOutDirectPort( ps );
372 ps->AsicReg.RD_Motor0Control = 0;
373 IOCmdRegisterToScanner( ps, ps->RegMotor0Control,
374 ps->AsicReg.RD_Motor0Control );
376 ps->AsicReg.RD_ModeControl = _ModeScan;
377 ps->AsicReg.RD_Motor0Control = _MotorOn + _MotorHEightStep + _MotorDirForward;
378 ps->AsicReg.RD_ModelControl = _ModelDpi600 + _LED_CONTROL + _LED_ACTIVITY;
379 ps->AsicReg.RD_Dpi = ps->PhysicalDpi;
381 if (!ps->wNegAdjustX) {
382 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 +
383 ps->Device.DataOriginX +
386 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 + ps->Device.DataOriginX +
387 ps->wNegAdjustX);
389 ps->AsicReg.RD_Pixels = 960;
390 ps->AsicReg.RD_XStepTime = 32;
391 IOPutOnAllRegisters( ps );
396 while((IOReadFifoLength( ps) < 960) && !MiscCheckTimer( &timer )) {
402 ps->AsicReg.RD_ModeControl = _ModeFifoRSel;
403 IOReadScannerImageData( ps, pNegativeTempRam, 960);
405 ps->AsicReg.RD_ModeControl = _ModeFifoGSel;
406 IOReadScannerImageData( ps, pNegativeTempRam + 960, 960);
408 ps->AsicReg.RD_ModeControl = _ModeFifoBSel;
409 IOReadScannerImageData( ps, pNegativeTempRam + 960 * 2, 960);
429 ps->bRedHigh = b[0];
430 ps->bGreenHigh = b[1];
431 ps->bBlueHigh = b[2];
434 if ((ps->bRedHigh < _GAIN_LOW) ||
435 (ps->bGreenHigh < _GAIN_LOW) || (ps->bBlueHigh < _GAIN_LOW)) {
436 ps->AsicReg.RD_LineControl = 192;
439 IOCmdRegisterToScanner( ps, ps->RegLineControl,
440 ps->AsicReg.RD_LineControl );
446 ps->PauseColorMotorRunStates( ps );
447 DacP98FillGainOutDirectPort( ps );
450 ps->AsicReg.RD_Motor0Control = 0;
451 IOCmdRegisterToScanner( ps, ps->RegMotor0Control,
452 ps->AsicReg.RD_Motor0Control );
454 ps->AsicReg.RD_ModeControl = _ModeScan;
455 ps->AsicReg.RD_Motor0Control = _MotorOn + _MotorHEightStep + _MotorDirForward;
456 ps->AsicReg.RD_ModelControl = _ModelDpi600 + _LED_CONTROL + _LED_ACTIVITY;
457 ps->AsicReg.RD_Dpi = ps->PhysicalDpi;
459 if (!ps->wNegAdjustX) {
460 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 +
461 ps->Device.DataOriginX +
464 ps->AsicReg.RD_Origin = (UShort)(ps->dwOffset70 +
465 ps->Device.DataOriginX +
466 ps->wNegAdjustX);
469 ps->AsicReg.RD_Pixels = 960;
470 ps->AsicReg.RD_XStepTime = 32;
471 IOPutOnAllRegisters( ps );
475 while((IOReadFifoLength( ps ) < 960) && !MiscCheckTimer( &timer)) {
481 ps->AsicReg.RD_ModeControl = _ModeFifoRSel;
482 IOReadScannerImageData( ps, pNegativeTempRam, 960 );
484 ps->AsicReg.RD_ModeControl = _ModeFifoGSel;
485 IOReadScannerImageData( ps, pNegativeTempRam + 960, 960);
487 ps->AsicReg.RD_ModeControl = _ModeFifoBSel;
488 IOReadScannerImageData( ps ,pNegativeTempRam + 960 * 2, 960);
500 pbReg[0] = &ps->bRedGainIndex;
501 pbReg[1] = &ps->bGreenGainIndex;
502 pbReg[2] = &ps->bBlueGainIndex;
530 ps->bRedGainIndex -= 4;
531 ps->bGreenGainIndex -= 4;
532 ps->bBlueGainIndex -= 4;
537 DacP98FillGainOutDirectPort( ps );
539 ps->Shade.DarkOffset.Colors.Red = 0;
540 ps->Shade.DarkOffset.Colors.Green = 0;
541 ps->Shade.DarkOffset.Colors.Blue = 0;
543 ps->OpenScanPath( ps );
544 DacP98FillShadingDarkToShadingRegister( ps );
545 ps->CloseScanPath( ps );
547 DacP98AdjustDark( ps );
553 static void tpaP98RecalculateShadingGainandData( pScanData ps )
562 ps->Shade.pCcdDac->DarkDAC.Colors.Red = ps->bsPreRedDAC;
563 ps->Shade.pCcdDac->DarkDAC.Colors.Green = ps->bsPreGreenDAC;
564 ps->Shade.pCcdDac->DarkDAC.Colors.Blue = ps->bsPreBlueDAC;
566 ps->Shade.pCcdDac->DarkCmpHi.Colors.Red = ps->wsDACCompareHighRed;
567 ps->Shade.pCcdDac->DarkCmpLo.Colors.Red = ps->wsDACCompareLowRed;
568 ps->Shade.pCcdDac->DarkCmpHi.Colors.Green = ps->wsDACCompareHighGreen;
569 ps->Shade.pCcdDac->DarkCmpLo.Colors.Green = ps->wsDACCompareLowGreen;
570 ps->Shade.pCcdDac->DarkCmpHi.Colors.Blue = ps->wsDACCompareHighBlue;
571 ps->Shade.pCcdDac->DarkCmpLo.Colors.Blue = ps->wsDACCompareLowBlue;
573 wOldRedGain = a_wGainString[ps->bRedGainIndex] * 100/ps->wReduceRedFactor;
576 for (ps->bRedGainIndex = 0; ps->bRedGainIndex < 32; ps->bRedGainIndex++) {
577 if (wOldRedGain < a_wGainString[ps->bRedGainIndex])
581 if (0 == ps->bRedGainIndex)
582 ps->bRedGainIndex ++;
584 wNewRedGain = a_wGainString[--ps->bRedGainIndex];
586 wOldGreenGain = a_wGainString[ps->bGreenGainIndex]*100/
587 ps->wReduceGreenFactor;
590 for (ps->bGreenGainIndex = 0;
591 ps->bGreenGainIndex < 32; ps->bGreenGainIndex++) {
593 if (wOldGreenGain < a_wGainString[ps->bGreenGainIndex])
597 if (0 == ps->bGreenGainIndex)
598 ps->bGreenGainIndex ++;
600 wNewGreenGain = a_wGainString[--ps->bGreenGainIndex];
602 wOldBlueGain = a_wGainString[ps->bBlueGainIndex]*100/ps->wReduceBlueFactor;
605 for (ps->bBlueGainIndex = 0;ps->bBlueGainIndex < 32;ps->bBlueGainIndex++) {
606 if (wOldBlueGain < a_wGainString[ps->bBlueGainIndex])
609 if (0 == ps->bBlueGainIndex)
610 ps->bBlueGainIndex ++;
612 wNewBlueGain = a_wGainString[--ps->bBlueGainIndex];
614 DacP98FillGainOutDirectPort( ps );
616 ps->Shade.DarkOffset.Colors.Red = 0;
617 ps->Shade.DarkOffset.Colors.Green = 0;
618 ps->Shade.DarkOffset.Colors.Blue = 0;
620 ps->OpenScanPath( ps );
621 DacP98FillShadingDarkToShadingRegister( ps );
622 ps->CloseScanPath( ps );
624 DacP98AdjustDark( ps );
627 if (ps->DataInf.dwScanFlag & SCANDEF_Transparency) {
628 filmAdjustX = ps->wPosAdjustX;
630 filmAdjustX = ps->wNegAdjustX;
634 p.pw = (pUShort)(ps->pScanBuffer1 + ps->dwOffsetNegative +
637 p.pw = (pUShort)(ps->pScanBuffer1 +
638 ps->dwOffsetNegative + filmAdjustX);
645 if (!ps->wNegAdjustX) {
646 p.pw = (pUShort)(ps->pScanBuffer1 + 5400 * 2 +
647 ps->dwOffsetNegative + _Negative96OriginOffsetX * 2);
649 p.pw = (pUShort)(ps->pScanBuffer1 + 5400 * 2 +
650 ps->dwOffsetNegative + ps->wNegAdjustX);
657 if (!ps->wNegAdjustX) {
658 p.pw = (pUShort)(ps->pScanBuffer1 + 5400 * 4 +
659 ps->dwOffsetNegative + _Negative96OriginOffsetX * 2);
661 p.pw = (pUShort)(ps->pScanBuffer1 + 5400 * 4 +
662 ps->dwOffsetNegative + ps->wNegAdjustX);
675 _LOC void TPAP98001AverageShadingData( pScanData ps )
679 ps->wNegAdjustX = 0;
680 ps->wPosAdjustX = 0;
681 ps->dwOffsetNegative = 0;
683 tpaP98ShadingWaveformSum( ps );
687 * original code: if ((ps->DataInf.wPhyDataType >= COLOR_TRUE24) &&
689 if((ps->DataInf.wPhyDataType >= COLOR_256GRAY) &&
690 (ps->DataInf.dwScanFlag & SCANDEF_TPA)) {
692 if (((ps->DataInf.dwScanFlag & SCANDEF_Negative) && !ps->wNegAdjustX) ||
693 ((ps->DataInf.dwScanFlag & SCANDEF_Transparency) && !ps->wPosAdjustX)) {
696 pUShort pw = (pUShort)ps->pScanBuffer1;
713 if (ps->DataInf.dwScanFlag & SCANDEF_Negative) {
717 ps->wNegAdjustX = (UShort)(dwRight - _NegativePageWidth +
718 dwLeft - ps->dwOffset70 -
719 ps->Device.DataOriginX + 4U);
720 if( ps->wNegAdjustX > (_Negative96OriginOffsetX * 2U))
721 ps->wNegAdjustX = (_Negative96OriginOffsetX * 2U);
723 ps->DataInf.crImage.x += ps->wNegAdjustX;
725 ps->DataInf.crImage.x += (_Negative96OriginOffsetX * 2U);
730 ps->wPosAdjustX = (UShort)(dwRight - _TPAPageWidth +
731 dwLeft - ps->dwOffset70 -
732 ps->Device.DataOriginX + 4U);
734 if( ps->wPosAdjustX > (_Transparency96OriginOffsetX * 2U))
735 ps->wPosAdjustX = (_Transparency96OriginOffsetX * 2U);
737 ps->DataInf.crImage.x += ps->wPosAdjustX;
740 ps->DataInf.crImage.x += (_Transparency96OriginOffsetX * 2U);
748 if( ps->DataInf.dwScanFlag & SCANDEF_Negative )
749 ps->DataInf.crImage.x += ps->wNegAdjustX;
751 ps->DataInf.crImage.x += ps->wPosAdjustX;
755 if( ps->DataInf.dwScanFlag & SCANDEF_Negative ) {
757 ps->dwOffsetNegative = (ps->dwOffset70 + 64+4) * 2;
759 tpaP98GetNegativeTempRamData( ps );
760 tpaP98RecalculateNegativeShadingGain( ps );
763 ps->wReduceRedFactor = 0x3e;
764 ps->wReduceGreenFactor = 0x39;
765 ps->wReduceBlueFactor = 0x42;
767 if( ps->Device.bCCDID == _CCD_518 ) {
768 ps->wReduceRedFactor = 55;
769 ps->wReduceGreenFactor = 55;
770 ps->wReduceBlueFactor = 55;
772 if( ps->Device.bCCDID == _CCD_3797 ) {
773 ps->wReduceRedFactor = 42;
774 ps->wReduceGreenFactor = 50;
775 ps->wReduceBlueFactor = 50;
778 tpaP98RecalculateShadingGainandData( ps );
786 _LOC void TPAP98003FindCenterPointer( pScanData ps )
792 pRGBUShortDef pwSum = ps->Bufs.b2.pSumRGB;
794 if( ps->DataInf.dwScanFlag & SCANDEF_Negative )
800 left = ps->Device.DataOriginX + _NEG_ORG_OFFSETX * 2 - 600;
801 right = ps->Device.DataOriginX + _NEG_ORG_OFFSETX * 2 +
804 for( i = 5400UL - left, pwSum = ps->Bufs.b2.pSumRGB; i--; left++)
810 for( i = 5400UL - left, pwSum = ps->Bufs.b2.pSumRGB; i--; right--)
817 if( ps->DataInf.dwScanFlag & SCANDEF_Negative )
818 ps->Scan.negBegin = ps->Device.DataOriginX + _NEG_ORG_OFFSETX * 2;
820 ps->Scan.posBegin = ps->Device.DataOriginX + _POS_ORG_OFFSETX * 2;
822 if( ps->DataInf.dwScanFlag & SCANDEF_Negative )
823 ps->Scan.negBegin = (right + left) / 2UL - _NEG_PAGEWIDTH;
825 ps->Scan.posBegin = (right + left) / 2UL - _POS_PAGEWIDTH;
833 _LOC void TPAP98003Reshading( pScanData ps )
845 ps->Scan.negScan[1].exposureTime = 144;
846 ps->Scan.negScan[1].xStepTime = 18;
847 ps->Scan.negScan[2].exposureTime = 144;
848 ps->Scan.negScan[2].xStepTime = 36;
849 ps->Scan.negScan[3].exposureTime = 144;
850 ps->Scan.negScan[3].xStepTime = 72;
851 ps->Scan.negScan[4].exposureTime = 144;
852 ps->Scan.negScan[4].xStepTime = 144;
855 ps->Shade.wExposure = ps->Scan.negScan[ps->Scan.dpiIdx].exposureTime;
856 ps->Shade.wXStep = ps->Scan.negScan[ps->Scan.dpiIdx].xStepTime;
860 while(!(IOGetScanState(ps, _TRUE) & _SCANSTATE_STOP) &&
863 IODataToRegister( ps, ps->RegXStepTime,
864 (Byte)(ps->AsicReg.RD_LineControl >> 4));
866 MotorP98003PositionYProc( ps, _NEG_SHADING_OFFS );
868 IODataToRegister( ps, ps->RegXStepTime, ps->AsicReg.RD_XStepTime );
870 ps->AsicReg.RD_ScanControl = _SCAN_BYTEMODE;
871 IOSelectLampSource( ps );
873 IODataToRegister( ps, ps->RegLineControl, _LOBYTE(ps->Shade.wExposure));
874 IODataToRegister( ps, ps->RegXStepTime, _LOBYTE(ps->Shade.wXStep));
876 ps->AsicReg.RD_LineControl = _LOBYTE(ps->Shade.wExposure);
877 ps->AsicReg.RD_ExtLineControl = _HIBYTE(ps->Shade.wExposure);
878 ps->AsicReg.RD_XStepTime = (Byte)(ps->Shade.wExposure);
879 ps->AsicReg.RD_ModeControl = _ModeScan;
880 ps->AsicReg.RD_Motor0Control = _FORWARD_MOTOR;
882 ps->AsicReg.RD_Origin = (UShort)ps->Scan.negBegin;
883 ps->AsicReg.RD_Pixels = _NEG_PAGEWIDTH600;
885 memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
889 ps->a_nbNewAdrPointer[i] = 0x8f;
891 IOPutOnAllRegisters( ps );
895 memset( ps->Bufs.TpaBuf.pb, 0, _SizeTpaDataBuf );
897 RedPtr.pb = ps->Bufs.b1.pShadingMap;
903 IOReadOneShadingLine( ps, ps->Bufs.b1.pShadingMap, _NEG_PAGEWIDTH600 );
907 ps->Bufs.TpaBuf.pusrgb[i].Red += RedPtr.pb[i];
908 ps->Bufs.TpaBuf.pusrgb[i].Green += GreenPtr.pb[i];
909 ps->Bufs.TpaBuf.pusrgb[i].Blue += BluePtr.pb[i];
914 ps->Bufs.TpaBuf.pb[i] = ps->Bufs.TpaBuf.pw[i] >> 3;
916 RedPtr.pb = ps->Bufs.TpaBuf.pb;
1050 RedPtr.pusrgb = ps->Bufs.b2.pSumRGB + dwIndex +
1051 ps->AsicReg.RD_Origin + _SHADING_BEGINX;
1064 ps->Shade.bGainHigh = (Byte)dwR; /* >> 4 for average, >> 4 to 8-bit */
1067 ps->Shade.bGainHigh = (Byte)dwG;
1069 ps->Shade.bGainHigh = (Byte)dwB;
1072 ps->Shade.bGainHigh = (Byte)(ps->Shade.bGainHigh - 0x18);
1073 ps->Shade.bGainLow = (Byte)(ps->Shade.bGainHigh - 0x10);
1076 ps->Shade.Hilight.Colors.Red = 0;
1077 ps->Shade.Hilight.Colors.Green = 0;
1078 ps->Shade.Hilight.Colors.Blue = 0;
1079 ps->Shade.Gain.Colors.Red++;
1080 ps->Shade.Gain.Colors.Green++;
1081 ps->Shade.Gain.Colors.Blue++;
1082 ps->Shade.fStop = _FALSE;
1084 RedPtr.pb = ps->Bufs.b1.pShadingMap + dwIndex;
1088 for( i = 16; i-- && !ps->Shade.fStop;) {
1090 ps->Shade.fStop = _TRUE;
1092 DacP98003FillToDAC( ps, &ps->Device.RegDACGain, &ps->Shade.Gain );
1094 IODataToRegister( ps, ps->RegModeControl, _ModeIdle );
1096 ps->AsicReg.RD_ScanControl = _SCAN_BYTEMODE;
1097 IOSelectLampSource( ps );
1099 ps->AsicReg.RD_ModeControl = _ModeScan;
1100 ps->AsicReg.RD_StepControl = _MOTOR0_SCANSTATE;
1101 ps->AsicReg.RD_Motor0Control = _FORWARD_MOTOR;
1103 memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
1104 ps->a_nbNewAdrPointer[1] = 0x77;
1106 IOPutOnAllRegisters( ps );
1109 if(IOReadOneShadingLine(ps,ps->Bufs.b1.pShadingMap,_NEG_PAGEWIDTH600)) {
1116 ps->Shade.fStop = _FALSE;
1119 DacP98003AdjustGain( ps, _CHANNEL_RED, bHi[0] );
1120 DacP98003AdjustGain( ps, _CHANNEL_GREEN, bHi[1] );
1121 DacP98003AdjustGain( ps, _CHANNEL_BLUE, bHi[2] );
1124 ps->Shade.fStop = _FALSE;
1127 DacP98003FillToDAC( ps, &ps->Device.RegDACGain, &ps->Shade.Gain );
1132 if(ps->Device.bCCDID == _CCD_3797 || ps->Device.bDACType == _DA_ESIC) {
1133 ps->Shade.pCcdDac->GainResize.Colors.Red =
1135 ps->Shade.pCcdDac->GainResize.Colors.Green =
1137 ps->Shade.pCcdDac->GainResize.Colors.Blue =
1140 ps->Shade.pCcdDac->GainResize.Colors.Red =
1142 ps->Shade.pCcdDac->GainResize.Colors.Green =
1144 ps->Shade.pCcdDac->GainResize.Colors.Blue =
1147 ps->Shade.DarkOffset.Colors.Red +=
1149 ps->Shade.DarkOffset.Colors.Green +=
1151 ps->Shade.DarkOffset.Colors.Blue +=
1154 if( ps->Device.bDACType != _DA_ESIC && ps->Device.bCCDID != _CCD_3799 ) {
1155 ps->Shade.DarkOffset.Colors.Red =
1156 (UShort)(ps->Shade.DarkOffset.Colors.Red *
1157 ps->Shade.pCcdDac->GainResize.Colors.Red / 100UL);
1158 ps->Shade.DarkOffset.Colors.Green =
1159 (UShort)(ps->Shade.DarkOffset.Colors.Green *
1160 ps->Shade.pCcdDac->GainResize.Colors.Green / 100UL);
1161 ps->Shade.DarkOffset.Colors.Blue =
1162 (UShort)(ps->Shade.DarkOffset.Colors.Blue *
1163 ps->Shade.pCcdDac->GainResize.Colors.Blue / 100UL);
1168 ps->AsicReg.RD_Origin = _SHADING_BEGINX;
1169 ps->AsicReg.RD_Pixels = 5400;