public static DataSource GetDefault(Identity applicationId, IWindowsMessageHook messageHook) { var defaultSourceId = new Identity(); // Attempt to get information about the system default source var result = Twain32Native.DsmIdentity( applicationId, IntPtr.Zero, DataGroup.Control, DataArgumentType.Identity, Message.GetDefault, defaultSourceId); if (result != TwainResult.Success) { var status = DataSourceManager.GetConditionCode(applicationId, null); throw new TwainException("Error getting information about the default source: " + result, result, status); } return(new DataSource(applicationId, defaultSourceId, messageHook)); }
public void OpenSource() { var result = Twain32Native.DsmIdentity( _applicationId, IntPtr.Zero, DataGroup.Control, DataArgumentType.Identity, Message.OpenDS, SourceId); if (result != TwainResult.Success) { var conditionCode = DataSourceManager.GetConditionCode(_applicationId, SourceId); _log.Debug(string.Format("OpenDS, result: {0}, conditionCode: {1}", result, conditionCode)); throw new TwainException("Error opening data source", result, conditionCode); } _log.Debug("OpenDS, result: " + result); SourceState = TwainState.SourceOpen; }
public void Close() { var result = Twain32Native.DsmIdentity( _applicationId, IntPtr.Zero, DataGroup.Control, DataArgumentType.Identity, Message.CloseDS, SourceId); if (result != TwainResult.Failure) { _log.Debug(string.Format("CloseDS, result: {0}", result)); SourceState = null; } else { var condition = DataSourceManager.GetConditionCode(_applicationId, SourceId); _log.Debug(string.Format("CloseDS, result: {0}, conditionCode: {1}", result, condition)); } }
protected ConditionCode GetStatus() { return(DataSourceManager.GetConditionCode(_applicationId, _sourceId)); }
private bool NegotiateArea(ScanSettings scanSettings) { var area = scanSettings.Area; if (area == null) { return(false); } try { var cap = new Capability(Capabilities.IUnits, TwainType.Int16, _applicationId, SourceId); if ((Units)cap.GetBasicValue().Int16Value != area.Units) { Capability.SetCapability(Capabilities.IUnits, (short)area.Units, _applicationId, SourceId); } } catch { // Do nothing if the data source does not support the requested capability return(false); } float right; float bottom; float physicalHeight = 0; var physicalHeightCap = Capability.GetCapability(Capabilities.PhysicalHeight, _applicationId, SourceId); if (physicalHeightCap != null && physicalHeightCap.Count == 1) { physicalHeight = ValueConverter.ConvertToFix32(physicalHeightCap[0]); } float physicalWidth = 0; var physicalWidthCap = Capability.GetCapability(Capabilities.PhysicalWidth, _applicationId, SourceId); if (physicalWidthCap != null && physicalWidthCap.Count == 1) { physicalWidth = ValueConverter.ConvertToFix32(physicalWidthCap[0]); } right = physicalWidth < area.Right ? physicalWidth : area.Right; bottom = physicalHeight < area.Bottom ? physicalHeight : area.Bottom; var imageLayout = new ImageLayout { Frame = new Frame { Left = new Fix32(area.Left), Top = new Fix32(area.Top), Right = new Fix32(right), Bottom = new Fix32(bottom) } }; var result = Twain32Native.DsImageLayout( _applicationId, SourceId, DataGroup.Image, DataArgumentType.ImageLayout, Message.Set, imageLayout); if (result != TwainResult.Success && result != TwainResult.CheckStatus) { var condition = DataSourceManager.GetConditionCode(_applicationId, SourceId); return(false); //throw new TwainException("DsImageLayout.GetDefault error", result, condition); } return(true); }