SANE_Status sane_start (SANE_Handle h) { TScanner *s; SANE_Parameters par; HP5400_DBG (DBG_MSG, "sane_start\n"); s = (TScanner *) h; if (sane_get_parameters (h, &par) != SANE_STATUS_GOOD) { HP5400_DBG (DBG_MSG, "Invalid scan parameters (sane_get_parameters)\n"); return SANE_STATUS_INVAL; } s->iLinesLeft = par.lines; /* fill in the scanparams using the option values */ s->ScanParams.iDpi = s->aValues[optDPI].w; s->ScanParams.iLpi = s->aValues[optDPI].w; /* Guessing here. 75dpi => 1, 2400dpi => 32 */ /* s->ScanParams.iColourOffset = s->aValues[optDPI].w / 75; */ /* now we don't need correction => corrected by scan request type ? */ s->ScanParams.iColourOffset = 0; s->ScanParams.iTop = MM_TO_PIXEL (s->aValues[optTLY].w + s->HWParams.iTopLeftY, HW_LPI); s->ScanParams.iLeft = MM_TO_PIXEL (s->aValues[optTLX].w + s->HWParams.iTopLeftX, HW_DPI); /* Note: All measurements passed to the scanning routines must be in HW_LPI */ s->ScanParams.iWidth = MM_TO_PIXEL (s->aValues[optBRX].w - s->aValues[optTLX].w, HW_LPI); s->ScanParams.iHeight = MM_TO_PIXEL (s->aValues[optBRY].w - s->aValues[optTLY].w, HW_LPI); /* After the scanning, the iLines and iBytesPerLine will be filled in */ /* copy gamma table */ WriteGammaCalibTable (s->HWParams.iXferHandle, s->aGammaTableR, s->aGammaTableG, s->aGammaTableB); /* prepare the actual scan */ /* We say normal here. In future we should have a preview flag to set preview mode */ if (InitScan (SCAN_TYPE_NORMAL, &s->ScanParams, &s->HWParams) != 0) { HP5400_DBG (DBG_MSG, "Invalid scan parameters (InitScan)\n"); return SANE_STATUS_INVAL; } /* for the moment no lines has been read */ s->ScanParams.iLinesRead = 0; s->fScanning = TRUE; return SANE_STATUS_GOOD; }
void DebugInit( void ) { NestedCallLevel = 0; UpdateFlags = 0; _SwitchOn( SW_ERROR_STARTUP ); _SwitchOn( SW_CHECK_SOURCE_EXISTS ); SET_NIL_ADDR( NilAddr ); TxtBuff = &DbgBuffers[0]; *TxtBuff = '\0'; NameBuff = &DbgBuffers[TXT_LEN+1]; *NameBuff = '\0'; CurrRadix = DefRadix = 10; DbgLevel = MIX; ActiveWindowLevel = MIX; _SwitchOn( SW_BELL ); _SwitchOn( SW_FLIP ); _SwitchOn( SW_RECURSE_CHECK ); _SwitchOff( SW_ADDING_SYMFILE ); _SwitchOff( SW_TASK_RUNNING ); RecordInit(); LogInit(); InitMADInfo(); InitMachState(); PathInit(); InitDbgInfo(); InitTrap( TrapParms ); if( !LangSetInit() ) { FiniTrap(); StartupErr( LIT_ENG( STARTUP_Loading_PRS ) ); } if( !InitCmd() ) { FiniTrap(); StartupErr( LIT_ENG( ERR_NO_MEMORY ) ); } InitScan(); InitLook(); InitBPs(); InitSource(); InitDLLList(); DUIInit(); InitHook(); VarDisplayInit(); }