public bool GetCap() { bool flag = true; if (capId == TwCap.ICAP_XRESOLUTION || capId == TwCap.ICAP_YRESOLUTION) { flag = SetInch(); } //if (capId == TwCap.ICAP_THRESHOLD) //{ // flag = SetBitDepthReduction(); //} if (flag) { if (capId == TwCap.ECAP_PAPERSOURCE) { GetPaperSource(); } else { TwCapability cap = new TwCapability(capId); if (twSession.GetCapability(ref cap)) { IntPtr intPtr = cap.contentValuePtr; switch (cap.contentType) { case TwOn.One: GetCapFromOneValue(intPtr); break; case TwOn.Array: GetCapFromArray(intPtr); break; case TwOn.Enum: GetCapFromEnumeration(intPtr); break; case TwOn.Range: GetCapFromRange(intPtr); break; default: { logger.Debug("the contentType in TwCapability is wrong"); flag = false; } break; } } if (cap.contentValuePtr != null) { TwainSession.GlobalFree(cap.contentValuePtr); } } } return(flag); }
internal void Set(TwCapability cap) { try { switch (cap.ConType) { case TwOn.One: var _genericValue = cap.GetValue(); var _oneValue = _genericValue as TwOneValue; if (_oneValue != null) { this.SetCore(TwTypeHelper.CastToCommon(_oneValue.ItemType, TwTypeHelper.ValueToTw <uint>(_oneValue.ItemType, _oneValue.Item))); } else { this.SetCore(_genericValue.ToString()); } break; case TwOn.Range: for (var _range = cap.GetValue() as TwRange; _range != null; _range = null) { this.SetCore( TwTypeHelper.CastToCommon(_range.ItemType, TwTypeHelper.ValueToTw <uint>(_range.ItemType, _range.MinValue)), TwTypeHelper.CastToCommon(_range.ItemType, TwTypeHelper.ValueToTw <uint>(_range.ItemType, _range.MaxValue)), TwTypeHelper.CastToCommon(_range.ItemType, TwTypeHelper.ValueToTw <uint>(_range.ItemType, _range.StepSize)), TwTypeHelper.CastToCommon(_range.ItemType, TwTypeHelper.ValueToTw <uint>(_range.ItemType, _range.DefaultValue)), TwTypeHelper.CastToCommon(_range.ItemType, TwTypeHelper.ValueToTw <uint>(_range.ItemType, _range.CurrentValue))); } break; case TwOn.Array: for (var _array = cap.GetValue() as __ITwArray; _array != null; _array = null) { this.SetCore(_array.Items); } break; case TwOn.Enum: for (var _enum = cap.GetValue() as __ITwEnumeration; _enum != null; _enum = null) { this.SetCore(_enum.Items, _enum.DefaultIndex, _enum.CurrentIndex); } break; default: throw new DataSourceException(TwRC.Failure, TwCC.BadValue); } } catch (Exception ex) { throw new DataSourceException(TwRC.Failure, TwCC.BadValue, ex.Message); } }
private TwRC SetCapability() { TwCapability cap = new TwCapability(TwCap.XferCount, 1, TwType.Int16); TwRC rc = tw.DsCapability(appId, sources[CurrentScanner], TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); if (rc != TwRC.Success) { CloseDS(); throw new Exception(GetTwainStatus()); } else { twainState |= TwainStateFlag.DSReady; } return(rc); }
public bool GetDataSourceAvailableCapabilityValues(TwIdentity dataSourceId, TwCapability result) { TwRC rc = LibTwain32.DScap(fApplicationId, dataSourceId, TwDG.Control, TwDAT.Capability, TwMSG.Get, result); return (bool)(rc == TwRC.Success); }
public object GetDataSourceCapability(TwIdentity dataSourceId, TwCap capType) { object result = null; TwCapability cap = new TwCapability(capType); if(GetDataSourceCapability(dataSourceId, cap)) { result = cap.GetCurrentValue(); } return result; }
public bool SetDataSourceCapability(TwIdentity dataSourceId, TwCap capType, TwType valueType, object value) { TwCapability cap = new TwCapability(capType, valueType, value); return SetDataSourceCapability(dataSourceId, cap); }
public bool SetDataSourceCapability(TwIdentity dataSourceId, TwCapability cap) { TwRC rc = LibTwain32.DScap(fApplicationId, dataSourceId, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); return (bool)(rc == TwRC.Success); }
/// <summary> /// Устанавливает значение для указанного <see cref="TwCap">capability</see> /// </summary> /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param> /// <param name="capabilityValue">Устанавливаемое значение.</param> /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception> public void SetCap(TwCap capability,Enumeration capabilityValue) { if((this._TwainState&StateFlag.DSOpen)!=0) { using(TwCapability _cap=new TwCapability( capability, new _TwEnumeration() { ItemType=Twain32._Convert(capabilityValue.Items[0].GetType()), NumItems=capabilityValue.Count, CurrentIndex=capabilityValue.CurrentIndex, DefaultIndex=capabilityValue.DefaultIndex }, capabilityValue.Items)) { TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap); if(_rc!=TwRC.Success) { throw new TwainException(this._GetStatus()); } } } else { throw new TwainException("Источник данных не открыт."); } }
/// <summary> /// Устанавливает значение для указанного <see cref="TwCap">capability</see> /// </summary> /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param> /// <param name="capabilityValue">Устанавливаемое значение.</param> /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception> public void SetCap(TwCap capability,Range capabilityValue) { if((this._TwainState&StateFlag.DSOpen)!=0) { using(TwCapability _cap=new TwCapability(capability,capabilityValue.ToTwRange())) { TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap); if(_rc!=TwRC.Success) { throw new TwainException(this._GetStatus()); } } } else { throw new TwainException("Источник данных не открыт."); } }
/// <summary> /// Устанавливает значение для указанного <see cref="TwCap">capability</see> /// </summary> /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param> /// <param name="capabilityValue">Устанавливаемое значение.</param> /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception> public void SetCap(TwCap capability,object[] capabilityValue) { if((this._TwainState&StateFlag.DSOpen)!=0) { using(TwCapability _cap=new TwCapability( capability, new _TwArray() { ItemType=Twain32._Convert(capabilityValue[0].GetType()), NumItems=capabilityValue.Length }, capabilityValue)) { TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap); if(_rc!=TwRC.Success) { throw new TwainException(this._GetStatus()); } } } else { throw new TwainException("Источник данных не открыт."); } }
/// <summary> /// Возвращает значение для указанного capability (возможность). /// </summary> /// <param name="capability">Значение перечисления TwCap.</param> /// <returns>В зависимости от значение capability, могут быть возвращены: тип-значение, массив, <see cref="Twain32.Range">диапазон</see>, <see cref="Twain32.Enumeration">перечисление</see>.</returns> /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception> public object GetCap(TwCap capability) { if((this._TwainState&StateFlag.DSOpen)!=0) { using(TwCapability _cap=new TwCapability(capability)) { TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Get,_cap); if(_rc==TwRC.Success) { switch(_cap.ConType) { case TwOn.One: _TwOneValue _one_val=(_TwOneValue)_cap.GetValue(); return Twain32._Convert(_one_val.Item,_one_val.ItemType); case TwOn.Range: return Range.CreateRange((_TwRange)_cap.GetValue()); case TwOn.Array: case TwOn.Enum: object _val=_cap.GetValue(); TwType _item_type=(TwType)_val.GetType().GetProperty("ItemType").GetValue(_val,null); object[] _result_array=new object[(int)_val.GetType().GetProperty("NumItems").GetValue(_val,null)]; object _items=_val.GetType().GetProperty("ItemList").GetValue(_val,null); MethodInfo _items_getter=_items.GetType().GetMethod("GetValue",new Type[]{typeof(int)}); for(int i=0;i<_result_array.Length;i++) { _result_array[i]=Twain32._Convert(_items_getter.Invoke(_items,new object[] { i }),_item_type); } if(_cap.ConType==TwOn.Array) { return _result_array; } else { return Enumeration.CreateEnumeration( _result_array, (int)_val.GetType().GetProperty("CurrentIndex").GetValue(_val,null), (int)_val.GetType().GetProperty("DefaultIndex").GetValue(_val,null)); } } return _cap.GetValue(); } else { throw new TwainException(this._GetStatus()); } } } else { throw new TwainException("Источник данных не открыт."); } }
/// <summary> /// Возвращает флаги, указывающие на поддерживаемые источником данных операции, для указанного значения capability. /// </summary> /// <param name="capability">Значение перечисдения TwCap.</param> /// <returns>Набор флагов.</returns> /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception> public TwQC IsCapSupported(TwCap capability) { if((this._TwainState&StateFlag.DSOpen)!=0) { using(TwCapability _cap=new TwCapability(capability)) { TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.QuerySupport,_cap); if(_rc==TwRC.Success) { return (TwQC)((_TwOneValue)_cap.GetValue()).Item; } else { return 0; } } } else { throw new TwainException("Источник данных не открыт."); } }
public TwRC DsCapability([In, Out] TwIdentity origin, [In] TwIdentity dest, TwDG dg, TwDAT dat, TwMSG msg, [In, Out] TwCapability twcapability) { return(DsEntryCapability(origin, dest, dg, dat, msg, twcapability)); }
internal static extern TwRC DsEntryCapability([In, Out] TwIdentity origin, [In] TwIdentity dest, TwDG dg, TwDAT dat, TwMSG msg, [In, Out] TwCapability twcapability);
public TwainCapability(TwainDevice twain, TwIdentity dataSourceId, TwCap capType) { fTwain = twain; fDataSourceId = dataSourceId; fCapType = capType; fValueType = TwType.DontCare16; TwCapability cap = new TwCapability(capType); if(fTwain.GetDataSourceAvailableCapabilityValues(dataSourceId, cap)) { fValueType = cap.GetValueType(); Items = new List<object>(); int numItems = cap.GetNumItems(); for(int i = 0; i < numItems; i++) { Items.Add(cap.GetItem(i)); } MinValue = cap.GetMinValue(); MaxValue = cap.GetMaxValue(); StepSize = cap.GetStepSize(); fCurrentValue = cap.GetCurrentValue(); } }