/// <summary> /// Adds information about the value of capability in specified usage mode to the string builder. /// </summary> /// <param name="capUsageMode"></param> /// <param name="capValue"></param> /// <param name="capsInfo"></param> private void AddCapInfoToCapsInfo(DeviceCapabilityUsageMode capUsageMode, TwainValueContainerBase capValue, StringBuilder capsInfo) { capsInfo.Append(string.Format(" Usage mode: {0}{1}", capUsageMode, Environment.NewLine)); capsInfo.Append(string.Format(" Value container type: {0}{1}", capValue.ContainerType, Environment.NewLine)); switch (capValue.ContainerType) { case TwainValueContainerType.OneValue: TwainOneValueContainer oneDeviceCapabilityValue = (TwainOneValueContainer)capValue; AddCapOneCurrentValueInfoToCapsInfo(oneDeviceCapabilityValue, capsInfo); break; case TwainValueContainerType.Range: TwainRangeValueContainer rangeDeviceCapabilityValue = (TwainRangeValueContainer)capValue; AddCapRangeCurrentValueInfoToCapsInfo(rangeDeviceCapabilityValue, capsInfo); AddCapRangeDefaultValueInfoToCapsInfo(rangeDeviceCapabilityValue, capsInfo); AddCapMinValueInfoToCapsInfo(rangeDeviceCapabilityValue, capsInfo); AddCapMaxValueInfoToCapsInfo(rangeDeviceCapabilityValue, capsInfo); AddCapStepSizeInfoToCapsInfo(rangeDeviceCapabilityValue, capsInfo); break; case TwainValueContainerType.Enum: TwainEnumValueContainer enumDeviceCapabilityValue = (TwainEnumValueContainer)capValue; AddCapEnumCurrentValueInfoToCapsInfo(enumDeviceCapabilityValue, capsInfo); AddCapEnumDefaultValueInfoToCapsInfo(enumDeviceCapabilityValue, capsInfo); AddCapValuesInfoToCapsInfo(enumDeviceCapabilityValue, capsInfo); break; case TwainValueContainerType.Array: TwainArrayValueContainer arrayDeviceCapabilityValue = (TwainArrayValueContainer)capValue; AddCapValuesInfoToCapsInfo(arrayDeviceCapabilityValue, capsInfo); break; } }
/// <summary> /// Adds an extended image info to the result. /// </summary> private void AddExtendedImageInfoToResultTextBox(int index, ExtendedImageInfo info) { if (!info.IsValueValid) { return; } extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("Extended image info {0}", index); extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format(" Name={0}", Enum.GetName(typeof(ExtendedImageInfoId), info.InfoId)); extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format(" Id={0}", info.InfoId); extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format(" Value type={0}", info.ValueType); extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; TwainOneValueContainer oneDeviceCapabilityValue = info.Value as TwainOneValueContainer; if (oneDeviceCapabilityValue != null) { extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format(" Value={0}", oneDeviceCapabilityValue.Value); extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; } else { TwainArrayValueContainer arrayDeviceCapabilityValue = info.Value as TwainArrayValueContainer; if (arrayDeviceCapabilityValue != null) { extendedImageInfoAboutAcquiredImageTextBox.Text += "Values: "; if (arrayDeviceCapabilityValue.Values != null) { if (arrayDeviceCapabilityValue.Values.GetType() == typeof(byte[])) { extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("byte[{0}]", arrayDeviceCapabilityValue.Values.Length); } else { for (int i = 0; i < arrayDeviceCapabilityValue.Values.Length; i++) { extendedImageInfoAboutAcquiredImageTextBox.Text += string.Format("{0}, ", arrayDeviceCapabilityValue.Values.GetValue(i)); } } } extendedImageInfoAboutAcquiredImageTextBox.Text += Environment.NewLine; } } }
/// <summary> /// Gets information about the supported values stored in Array container. /// </summary> /// <param name="deviceCapabilityValue"></param> private void AddCapValuesToForm(TwainArrayValueContainer deviceCapabilityValue) { if (deviceCapabilityValue.Values == null) { return; } if (deviceCapabilityValue.EnumValues != null) { for (int i = 0; i < deviceCapabilityValue.Values.Length; i++) { supportedValuesListBox.Items.Add(string.Format("{0} [{1}]", deviceCapabilityValue.Values.GetValue(i), deviceCapabilityValue.EnumValues.GetValue(i))); } } else { for (int i = 0; i < deviceCapabilityValue.Values.Length; i++) { supportedValuesListBox.Items.Add(deviceCapabilityValue.Values.GetValue(i)); } } }
/// <summary> /// Gets information about the supported values stored in Array container. /// </summary> /// <param name="deviceCapabilityValue"></param> /// <param name="capsInfo"></param> private void AddCapValuesInfoToCapsInfo(TwainArrayValueContainer deviceCapabilityValue, StringBuilder capsInfo) { if (deviceCapabilityValue.Values == null || deviceCapabilityValue.Values.Length == 0) { capsInfo.Append(string.Format(" Supported values[0]:{0}", Environment.NewLine)); return; } StringBuilder values = new StringBuilder(); if (deviceCapabilityValue.Values.GetValue(0).GetType().Equals(typeof(string))) { for (int j = 0; j < deviceCapabilityValue.Values.Length; j++) { values.Append(string.Format("\"{0}\", ", deviceCapabilityValue.Values.GetValue(j))); } } else { if (deviceCapabilityValue.EnumValues != null) { for (int i = 0; i < deviceCapabilityValue.Values.Length; i++) { values.Append(string.Format("{0} [{1}], ", deviceCapabilityValue.Values.GetValue(i), deviceCapabilityValue.EnumValues.GetValue(i))); } } else { for (int i = 0; i < deviceCapabilityValue.Values.Length; i++) { values.Append(string.Format("{0}, ", deviceCapabilityValue.Values.GetValue(i))); } } } capsInfo.Append(string.Format(" Supported values[{0}, {1}]: {2}{3}", deviceCapabilityValue.Values.Length, deviceCapabilityValue.Values.GetValue(0).GetType(), values, Environment.NewLine)); }
/// <summary> /// Gets information about value of specified capability in specified usage mode. /// </summary> /// <param name="deviceCapability"></param> /// <param name="usageMode"></param> private void GetCapValue(DeviceCapability deviceCapability, DeviceCapabilityUsageMode usageMode) { usageModeTextBox.Text = ""; containerTypeTextBox.Text = ""; valueTypeTextBox.Text = ""; currentValueTextBox.Text = ""; minValueTextBox.Text = ""; maxValueTextBox.Text = ""; defaultValueTextBox.Text = ""; stepSizeTextBox.Text = ""; supportedValuesListBox.Items.Clear(); try { TwainValueContainerBase deviceCapabilityValue = null; if (usageMode == DeviceCapabilityUsageMode.GetCurrent) { deviceCapabilityValue = deviceCapability.GetCurrentValue(); } else if (usageMode == DeviceCapabilityUsageMode.GetDefault) { deviceCapabilityValue = deviceCapability.GetDefaultValue(); } else { deviceCapabilityValue = deviceCapability.GetValue(); } if (getMethodComboBox.Items.Count == 0) { // usageModeTextBox.Text = deviceCapability.UsageMode.ToString(); // if ((deviceCapability.UsageMode & DeviceCapabilityUsageMode.Get) != 0) { getMethodComboBox.Items.Add(DeviceCapabilityUsageMode.Get); } if ((deviceCapability.UsageMode & DeviceCapabilityUsageMode.GetCurrent) != 0) { getMethodComboBox.Items.Add(DeviceCapabilityUsageMode.GetCurrent); } if ((deviceCapability.UsageMode & DeviceCapabilityUsageMode.GetDefault) != 0) { getMethodComboBox.Items.Add(DeviceCapabilityUsageMode.GetDefault); } } if (deviceCapabilityValue != null) { // containerTypeTextBox.Text = deviceCapabilityValue.ContainerType.ToString(); valueTypeTextBox.Text = deviceCapability.ValueType.ToString(); // switch (deviceCapabilityValue.ContainerType) { case TwainValueContainerType.OneValue: TwainOneValueContainer oneDeviceCapabilityValue = (TwainOneValueContainer)deviceCapabilityValue; AddCapOneCurrentValueToForm(oneDeviceCapabilityValue); break; case TwainValueContainerType.Range: TwainRangeValueContainer rangeDeviceCapabilityValue = (TwainRangeValueContainer)deviceCapabilityValue; AddCapRangeCurrentValueToForm(rangeDeviceCapabilityValue); AddCapRangeDefaultValueToForm(rangeDeviceCapabilityValue); AddCapMinValueToForm(rangeDeviceCapabilityValue); AddCapMaxValueToForm(rangeDeviceCapabilityValue); AddCapStepSizeToForm(rangeDeviceCapabilityValue); break; case TwainValueContainerType.Enum: TwainEnumValueContainer enumDeviceCapabilityValue = (TwainEnumValueContainer)deviceCapabilityValue; AddCapEnumCurrentValueToForm(enumDeviceCapabilityValue); AddCapEnumDefaultValueToForm(enumDeviceCapabilityValue); AddCapValuesToForm(enumDeviceCapabilityValue); break; case TwainValueContainerType.Array: TwainArrayValueContainer arrayDeviceCapabilityValue = (TwainArrayValueContainer)deviceCapabilityValue; AddCapValuesToForm(arrayDeviceCapabilityValue); break; } } } catch (TwainDeviceCapabilityException ex) { currentValueTextBox.Text = ex.Message; } }