private static ScanSettings CreateDefaultSettings(int dpi, ColourSetting colour, bool adf) { ScanSettings scanSettings = new ScanSettings { ShowTwainUI = false, Resolution = new ResolutionSettings(), AbortWhenNoPaperDetectable = adf, ShouldTransferAllPages = adf, UseAutoFeeder = adf, UseDocumentFeeder = adf }; scanSettings.Resolution.ColourSetting = colour; scanSettings.Resolution.Dpi = dpi; return scanSettings; }
public MainForm(ConfigurationModel model, StandardKernel kernel) { InitializeComponent(); _kernel = kernel; _logger.Debug("MainForm started."); _model = model; _twain = new Twain(new WinFormsWindowMessageHook(this)); if (model.GetDevices) { Console.WriteLine(string.Join(Environment.NewLine, _twain.SourceNames)); Application.Exit(); } if (!string.IsNullOrWhiteSpace(model.SetDevice)) { _twain.SelectSource(model.SetDevice); } _filename = _model.FileName; ValidateFilename(); _twain.TransferImages += TransferImagesCallback; _colourSettings = _model.ScanColor ? ColourSetting.Colour : ColourSetting.BlackAndWhite; _settings = new ScanSettings { AbortWhenNoPaperDetectable = _model.AbortWhenNoPaperDetectable, UseDocumentFeeder = _model.UseDocumentFeeder, ShowTwainUI = _model.ShowScannerUI, ShowProgressIndicatorUI = _model.ShowProgressIndicatorUI, UseDuplex = _model.UseDuplex, Resolution = new ResolutionSettings { ColourSetting = _colourSettings, Dpi = _model.ScanResolution }, ShouldTransferAllPages = _model.ShouldTransferAllPages, Rotation = new RotationSettings { AutomaticDeskew = _model.AutomaticDeskew, AutomaticBorderDetection = _model.AutomaticBorderDetection, FlipSideRotation = _model.FlipSideRotation, AutomaticRotate = _model.AutomaticRotate }, TransferCount = _model.TransferCount, UseAutoFeeder = _model.UseAutoFeeder, UseAutoScanCache = _model.UseAutoScanCache }; if (model.SetArea) { _settings.Area = new AreaSettings(_model.Units, _model.Top, _model.Left, _model.Bottom, _model.Right); } if (model.SetPageSettings) { _settings.Page = new PageSettings { Orientation = _model.Orientation, Size = _model.PageTypeSize }; } }
void Scan(string twain_source, int dpi, ColourSetting colour, bool adf) { this.mainForm.twain.SelectSource(twain_source == null ? Properties.Settings.Default.twain_source : twain_source); ScanSettings settings = MainForm.CreateDefaultSettings(dpi, colour, adf); this.mainForm.scanData.Clear(); try { this.mainForm.twain.StartScanning(settings); } catch (Exception ex) { if (Properties.Settings.Default.useADF) { settings.AbortWhenNoPaperDetectable = false; settings.ShouldTransferAllPages = false; settings.UseAutoFeeder = false; settings.UseDocumentFeeder = false; this.mainForm.twain.StartScanning(settings); } else { throw ex; } } }