diff --git a/src/NTwain.Net35/NTwain.Net35.csproj b/src/NTwain.Net35/NTwain.Net35.csproj
index e900e24..d44cfe1 100644
--- a/src/NTwain.Net35/NTwain.Net35.csproj
+++ b/src/NTwain.Net35/NTwain.Net35.csproj
@@ -79,6 +79,9 @@
DeviceEventArgs.cs
+
+ ICapabilities.cs
+
ICapWrapper.cs
diff --git a/src/NTwain/CapWrapper.cs b/src/NTwain/CapWrapper.cs
index ee4d0cd..b757204 100644
--- a/src/NTwain/CapWrapper.cs
+++ b/src/NTwain/CapWrapper.cs
@@ -27,11 +27,15 @@ namespace NTwain
/// The source.
/// The capability.
/// The value conversion routine in Get methods.
- ///
+ /// if set to true then make this cap read-only.
+ ///
/// source
/// or
/// getConversionRoutine
///
+ /// source
+ /// or
+ /// getConversionRoutine
public CapWrapper(IDataSource source, CapabilityId capability,
Func getConversionRoutine, bool readOnly)
{
diff --git a/src/NTwain/Capabilities.cs b/src/NTwain/Capabilities.cs
index 0451334..5f888c6 100644
--- a/src/NTwain/Capabilities.cs
+++ b/src/NTwain/Capabilities.cs
@@ -9,7 +9,7 @@ namespace NTwain
///
/// Exposes capabilities of a data source as properties.
///
- public class Capabilities
+ public class Capabilities : ICapabilities
{
IDataSource _source;
diff --git a/src/NTwain/DataSource.cs b/src/NTwain/DataSource.cs
index 809eab5..17b183e 100644
--- a/src/NTwain/DataSource.cs
+++ b/src/NTwain/DataSource.cs
@@ -265,7 +265,7 @@ namespace NTwain
///
/// The capabilities.
///
- public Capabilities Capabilities
+ public ICapabilities Capabilities
{
get { return _caps ?? (_caps = new Capabilities(this)); }
}
diff --git a/src/NTwain/ICapabilities.cs b/src/NTwain/ICapabilities.cs
new file mode 100644
index 0000000..6a1309a
--- /dev/null
+++ b/src/NTwain/ICapabilities.cs
@@ -0,0 +1,1206 @@
+using System.Collections.Generic;
+using NTwain.Data;
+
+namespace NTwain
+{
+ ///
+ /// Exposes capabilities of a data source as properties.
+ ///
+ public interface ICapabilities
+ {
+ ///
+ /// Gets the property to work with audio for the current source.
+ ///
+ ///
+ /// The audio xfer mech.
+ ///
+ ICapWrapper ACapXferMech { get; }
+
+
+ ///
+ /// Gets the property to work with alarms for the current source.
+ ///
+ ///
+ /// The alarms.
+ ///
+ ICapWrapper CapAlarms { get; }
+ ///
+ /// Gets the property to work with alarm volume for the current source.
+ ///
+ ///
+ /// The alarm volume.
+ ///
+ ICapWrapper CapAlarmVolume { get; }
+ ///
+ /// Gets the property to work with the name or other identifying information about the
+ /// Author of the image. It may include a copyright string.
+ ///
+ ///
+ /// The author string.
+ ///
+ ICapWrapper CapAuthor { get; }
+ ///
+ /// Gets the property to work with auto feed page flag for the current source.
+ ///
+ ///
+ /// The auto feed flag.
+ ///
+ ICapWrapper CapAutoFeed { get; }
+ ///
+ /// Gets the property to work with auto capture count for the current source.
+ ///
+ ///
+ /// The auto capture count.
+ ///
+ ICapWrapper CapAutomaticCapture { get; }
+ ///
+ /// Gets the property to work with auto-sense medium (paper source) flag.
+ ///
+ ///
+ /// The auto-sense medium flag.
+ ///
+ ICapWrapper CapAutomaticSenseMedium { get; }
+ ///
+ /// Gets the property to work with auto scan page flag for the current source.
+ ///
+ ///
+ /// The auto scan flag.
+ ///
+ ICapWrapper CapAutoScan { get; }
+ ///
+ /// Gets the property to see the remaining battery power for the device.
+ ///
+ ///
+ /// The battery minutes.
+ ///
+ IReadOnlyCapWrapper CapBatteryMinutes { get; }
+ ///
+ /// Gets the property to see the remaining battery percentage for the device.
+ ///
+ ///
+ /// The battery percentage.
+ ///
+ IReadOnlyCapWrapper CapBatteryPercentage { get; }
+ ///
+ /// Gets the property to work with camera enabled flag.
+ ///
+ ///
+ /// The camera enabled flag.
+ ///
+ ICapWrapper CapCameraEnabled { get; }
+ ///
+ /// Gets the property to work with camera order for the current source.
+ ///
+ ///
+ /// The camera order setting.
+ ///
+ ICapWrapper CapCameraOrder { get; }
+ ///
+ /// Gets the property to see whether device supports camera preview UI flag.
+ ///
+ ///
+ /// The camera preview UI flag.
+ ///
+ IReadOnlyCapWrapper CapCameraPreviewUI { get; }
+ ///
+ /// Gets the property to work with camera side for the current source.
+ ///
+ ///
+ /// The camera side.
+ ///
+ ICapWrapper CapCameraSide { get; }
+ ///
+ /// Gets the property to work with the general note about the acquired image.
+ ///
+ ///
+ /// The general note string.
+ ///
+ ICapWrapper CapCaption { get; }
+ ///
+ /// Gets the property to work with the clear buffers option for the current source.
+ ///
+ ///
+ /// The clear buffers option.
+ ///
+ ICapWrapper CapClearBuffers { get; }
+ ///
+ /// Gets the property to work with clear page flag for the current source.
+ ///
+ ///
+ /// The clear page flag.
+ ///
+ ICapWrapper CapClearPage { get; }
+ ///
+ /// Gets the property to see whether device supports custom data triplets.
+ ///
+ ///
+ /// The custom data flag.
+ ///
+ IReadOnlyCapWrapper CapCustomDSData { get; }
+ ///
+ /// Gets the property for device interface guid.
+ ///
+ ///
+ /// The device interface guid.
+ ///
+ IReadOnlyCapWrapper CapCustomInterfaceGuid { get; }
+ ///
+ /// Gets the property to work with the reported device events for the current source.
+ ///
+ ///
+ /// The reported device events.
+ ///
+ ICapWrapper CapDeviceEvent { get; }
+ ///
+ /// Gets the property to work with devince online flag for the current source.
+ ///
+ ///
+ /// The devince online flag.
+ ///
+ IReadOnlyCapWrapper CapDeviceOnline { get; }
+ ///
+ /// Gets the property to work with the device's time and date.
+ ///
+ ///
+ /// The device time and date.
+ ///
+ ICapWrapper CapDeviceTimeDate { get; }
+ ///
+ /// Gets the property to work with double feed detection option for the current source.
+ ///
+ ///
+ /// The double feed detection option.
+ ///
+ ICapWrapper CapDoubleFeedDetection { get; }
+ ///
+ /// Gets the property to work with double feed detection length for the current source.
+ ///
+ ///
+ /// The double feed detection length.
+ ///
+ ICapWrapper CapDoubleFeedDetectionLength { get; }
+ ///
+ /// Gets the property to work with double feed detection response for the current source.
+ ///
+ ///
+ /// The double feed detection response.
+ ///
+ ICapWrapper CapDoubleFeedDetectionResponse { get; }
+ ///
+ /// Gets the property to work with double feed detection sensitivity for the current source.
+ ///
+ ///
+ /// The double feed detection sensitivity.
+ ///
+ ICapWrapper CapDoubleFeedDetectionSensitivity { get; }
+ ///
+ /// Gets the property to see what's the duplex mode for the current source.
+ ///
+ ///
+ /// The duplex mode.
+ ///
+ IReadOnlyCapWrapper CapDuplex { get; }
+ ///
+ /// Gets the property to work with duplex enabled flag for the current source.
+ ///
+ ///
+ /// The duplex enabled flag.
+ ///
+ ICapWrapper CapDuplexEnabled { get; }
+ ///
+ /// Gets the property to see whether device supports UI only flag (no transfer).
+ ///
+ ///
+ /// The UI only flag.
+ ///
+ IReadOnlyCapWrapper CapEnableDSUIOnly { get; }
+ ///
+ /// Gets the property to work with endorser for the current source.
+ ///
+ ///
+ /// The endorser option.
+ ///
+ ICapWrapper CapEndorser { get; }
+ ///
+ /// Gets the extended caps for the current source.
+ ///
+ ///
+ /// The extended caps.
+ ///
+ ICapWrapper CapExtendedCaps { get; }
+ ///
+ /// Gets the property to work with feeder alignment for the current source.
+ ///
+ ///
+ /// The feeder alignment.
+ ///
+ ICapWrapper CapFeederAlignment { get; }
+ ///
+ /// Gets the property to work with feeder enabled flag for the current source.
+ ///
+ ///
+ /// The feeder enabled flag.
+ ///
+ ICapWrapper CapFeederEnabled { get; }
+ ///
+ /// Gets the property to work with feeder loaded flag for the current source.
+ ///
+ ///
+ /// The feeder loaded flag.
+ ///
+ IReadOnlyCapWrapper CapFeederLoaded { get; }
+ ///
+ /// Gets the property to work with feeder order for the current source.
+ ///
+ ///
+ /// The feeder order.
+ ///
+ ICapWrapper CapFeederOrder { get; }
+ ///
+ /// Gets the property to work with feeder pocket for the current source.
+ ///
+ ///
+ /// The feeder pocket setting.
+ ///
+ ICapWrapper CapFeederPocket { get; }
+ ///
+ /// Gets the property to work with feeder prep flag.
+ ///
+ ///
+ /// The feeder prep flag.
+ ///
+ ICapWrapper CapFeederPrep { get; }
+ ///
+ /// Gets the property to work with feed page flag for the current source.
+ ///
+ ///
+ /// The feed page flag.
+ ///
+ ICapWrapper CapFeedPage { get; }
+ ///
+ /// Gets the property to work with indicators flag for the current source.
+ ///
+ ///
+ /// The indicators flag.
+ ///
+ ICapWrapper CapIndicators { get; }
+ ///
+ /// Gets the property to work with diplayed indicators for the current source.
+ ///
+ ///
+ /// The diplayed indicators.
+ ///
+ ICapWrapper CapIndicatorsMode { get; }
+ ///
+ /// Gets the property to work with job control option for the current source.
+ ///
+ ///
+ /// The job control option.
+ ///
+ ICapWrapper CapJobControl { get; }
+ ///
+ /// Gets the property to work with string data language for the current source.
+ ///
+ ///
+ /// The language.
+ ///
+ ICapWrapper CapLanguage { get; }
+ ///
+ /// Gets the property to work with the max buffered pages for the current source.
+ ///
+ ///
+ /// The max batch buffered pages.
+ ///
+ ICapWrapper CapMaxBatchBuffers { get; }
+ ///
+ /// Gets the property to work with check scanning support flag.
+ ///
+ ///
+ /// The check scanning support flag.
+ ///
+ ICapWrapper CapMicrEnabled { get; }
+ ///
+ /// Gets the property to work with paper sensor flag for the current source.
+ ///
+ ///
+ /// The paper sensor flag.
+ ///
+ IReadOnlyCapWrapper CapPaperDetectable { get; }
+ ///
+ /// Gets the property to work with paper handling option for the current source.
+ ///
+ ///
+ /// The paper handling option.
+ ///
+ ICapWrapper CapPaperHandling { get; }
+ ///
+ /// Gets the property to work with camera power down time (seconds) for the current source.
+ ///
+ ///
+ /// The camera power down time.
+ ///
+ ICapWrapper CapPowerSaveTime { get; }
+ ///
+ /// Gets the property to see current device's power supply.
+ ///
+ ///
+ /// The power supply indicator.
+ ///
+ IReadOnlyCapWrapper CapPowerSupply { get; }
+ ///
+ /// Gets the property to work with printer list for the current source.
+ ///
+ ///
+ /// The printer list.
+ ///
+ ICapWrapper CapPrinter { get; }
+ ///
+ /// Gets the property to work with printer character rotation for the current source.
+ ///
+ ///
+ /// The printer character rotation.
+ ///
+ ICapWrapper CapPrinterCharRotation { get; }
+ ///
+ /// Gets the property to work with printer enabled flag.
+ ///
+ ///
+ /// The printer enabled flag.
+ ///
+ ICapWrapper CapPrinterEnabled { get; }
+ ///
+ /// Gets the property to work with printer font style for the current source.
+ ///
+ ///
+ /// The printer font style.
+ ///
+ ICapWrapper CapPrinterFontStyle { get; }
+ ///
+ /// Gets the property to work with the starting printer index for the current source.
+ ///
+ ///
+ /// The printer index.
+ ///
+ ICapWrapper CapPrinterIndex { get; }
+ ///
+ /// Set the character to be used for filling the leading digits before the counter value if the
+ /// counter digits are fewer than .
+ ///
+ ///
+ /// The printer leading string.
+ ///
+ ICapWrapper CapPrinterIndexLeadChar { get; }
+ ///
+ /// Gets the property to work with printer index max value for the current source.
+ ///
+ ///
+ /// The printer index max value.
+ ///
+ ICapWrapper CapPrinterIndexMaxValue { get; }
+ ///
+ /// Gets the property to work with printer number digits value for the current source.
+ ///
+ ///
+ /// The printer number digits value.
+ ///
+ ICapWrapper CapPrinterIndexNumDigits { get; }
+ ///
+ /// Gets the property to work with printer index step value for the current source.
+ ///
+ ///
+ /// The printer index step value.
+ ///
+ ICapWrapper CapPrinterIndexStep { get; }
+ ///
+ /// Gets the property to work with printer index trigger for the current source.
+ ///
+ ///
+ /// The printer index trigger.
+ ///
+ ICapWrapper CapPrinterIndexTrigger { get; }
+ ///
+ /// Gets the property to work with printer mode for the current source.
+ ///
+ ///
+ /// The printer mode.
+ ///
+ ICapWrapper CapPrinterMode { get; }
+ ///
+ /// Specifies the string(s) that are to be used in the string component when the current
+ /// device is enabled.
+ ///
+ ///
+ /// The printer string.
+ ///
+ ICapWrapper CapPrinterString { get; }
+ ///
+ /// Gets the next print values.
+ ///
+ ///
+ /// The next print values.
+ ///
+ IReadOnlyCapWrapper CapPrinterStringPreview { get; }
+ ///
+ /// Specifies the string that shall be used as the current device’s suffix.
+ ///
+ ///
+ /// The printer suffix string.
+ ///
+ ICapWrapper CapPrinterSuffix { get; }
+ ///
+ /// Gets the property to work with printer y-offset for the current source.
+ ///
+ ///
+ /// The printer y-offset.
+ ///
+ ICapWrapper CapPrinterVerticalOffset { get; }
+ ///
+ /// Gets the property to see whether device supports reacquire flag.
+ ///
+ ///
+ /// The reacquire flag.
+ ///
+ IReadOnlyCapWrapper CapReacquireAllowed { get; }
+ ///
+ /// Gets the property to work with rewind page flag for the current source.
+ ///
+ ///
+ /// The rewind page flag.
+ ///
+ ICapWrapper CapRewindPage { get; }
+ ///
+ /// Gets the property to work with segmentation setting for the current source.
+ ///
+ ///
+ /// The segmentation setting.
+ ///
+ ICapWrapper CapSegmented { get; }
+ ///
+ /// Gets the property for device serial number.
+ ///
+ ///
+ /// The device serial number.
+ ///
+ IReadOnlyCapWrapper CapSerialNumber { get; }
+ ///
+ /// Gets the supported caps for the current source. This is not supported by all sources.
+ ///
+ ///
+ /// The supported caps.
+ ///
+ IReadOnlyCapWrapper CapSupportedCaps { get; }
+ ///
+ /// Gets the supported caps for unique segments for the current source.
+ ///
+ ///
+ /// The supported caps for unique segments.
+ ///
+ IReadOnlyCapWrapper CapSupportedCapsSegmentUnique { get; }
+ ///
+ /// Gets the supported caps for supported DATs.
+ ///
+ ///
+ /// The supported DATs.
+ ///
+ IReadOnlyCapWrapper CapSupportedDATs { get; }
+ ///
+ /// Gets the property to work with thumbnails enabled flag for the current source.
+ ///
+ ///
+ /// The thumbnails enabled flag.
+ ///
+ ICapWrapper CapThumbnailsEnabled { get; }
+ ///
+ /// Gets the property to work with the time before first capture (milliseconds) for the current source.
+ ///
+ ///
+ /// The time before first capture.
+ ///
+ ICapWrapper CapTimeBeforeFirstCapture { get; }
+ ///
+ /// Gets the property to work with the time between captures (milliseconds) for the current source.
+ ///
+ ///
+ /// The time between captures.
+ ///
+ ICapWrapper CapTimeBetweenCaptures { get; }
+ ///
+ /// Gets the property to get the image acquired time and date.
+ ///
+ ///
+ /// The time and date string.
+ ///
+ IReadOnlyCapWrapper CapTimeDate { get; }
+ ///
+ /// Gets the property to work with UI controllable flag for the current source.
+ ///
+ ///
+ /// The UI controllable flag.
+ ///
+ IReadOnlyCapWrapper CapUIControllable { get; }
+ ///
+ /// Gets the property to work with xfer count for the current source.
+ ///
+ ///
+ /// The xfer count.
+ ///
+ ICapWrapper CapXferCount { get; }
+
+
+ ///
+ /// Gets the property to work with image auto brightness flag for the current source.
+ ///
+ ///
+ /// The image auto brightness flag.
+ ///
+ ICapWrapper ICapAutoBright { get; }
+ ///
+ /// Gets the property to work with image blank page behavior for the current source.
+ ///
+ ///
+ /// The image blank page behavior.
+ ///
+ ICapWrapper ICapAutoDiscardBlankPages { get; }
+ ///
+ /// Gets the property to work with auto border detection flag for the current source.
+ ///
+ ///
+ /// The auto border detection flag.
+ ///
+ ICapWrapper ICapAutomaticBorderDetection { get; }
+ ///
+ /// Gets the property to work with image auto color detection flag for the current source.
+ ///
+ ///
+ /// The image auto color detection flag.
+ ///
+ ICapWrapper ICapAutomaticColorEnabled { get; }
+ ///
+ /// Gets the property to work with image auto non-color pixel type for the current source.
+ ///
+ ///
+ /// The image auto non-color pixel type.
+ ///
+ ICapWrapper ICapAutomaticColorNonColorPixelType { get; }
+ ///
+ /// Gets the property to work with image auto crop flag for the current source.
+ ///
+ ///
+ /// The image auto crop flag.
+ ///
+ IReadOnlyCapWrapper ICapAutomaticCropUsesFrame { get; }
+ ///
+ /// Gets the property to work with image auto deskew flag for the current source.
+ ///
+ ///
+ /// The image auto deskew flag.
+ ///
+ ICapWrapper ICapAutomaticDeskew { get; }
+ ///
+ /// Gets the property to work with image auto length detection flag for the current source.
+ ///
+ ///
+ /// The image auto length detection flag.
+ ///
+ ICapWrapper ICapAutomaticLengthDetection { get; }
+ ///
+ /// Gets the property to work with image auto rotate flag for the current source.
+ ///
+ ///
+ /// The image auto rotate flag.
+ ///
+ ICapWrapper ICapAutomaticRotate { get; }
+ ///
+ /// Gets the property to work with image auto size option for the current source.
+ ///
+ ///
+ /// The image auto size option.
+ ///
+ ICapWrapper ICapAutoSize { get; }
+ ///
+ /// Gets the property to work with image barcode detection flag for the current source.
+ ///
+ ///
+ /// The image barcode detection flag.
+ ///
+ ICapWrapper ICapBarcodeDetectionEnabled { get; }
+ ///
+ /// Gets the property to work with image barcode max search retries for the current source.
+ ///
+ ///
+ /// The image barcode max search retries.
+ ///
+ ICapWrapper ICapBarcodeMaxRetries { get; }
+ ///
+ /// Gets the property to work with image barcode max search priorities for the current source.
+ ///
+ ///
+ /// The image barcode max search priorities.
+ ///
+ ICapWrapper ICapBarcodeMaxSearchPriorities { get; }
+ ///
+ /// Gets the property to work with image barcode search direction for the current source.
+ ///
+ ///
+ /// The image barcode search direction.
+ ///
+ ICapWrapper ICapBarcodeSearchMode { get; }
+ ///
+ /// Gets the property to work with image barcode search priority for the current source.
+ ///
+ ///
+ /// The image barcode search priority.
+ ///
+ ICapWrapper ICapBarcodeSearchPriorities { get; }
+ ///
+ /// Gets the property to work with image barcode max search timeout for the current source.
+ ///
+ ///
+ /// The image barcode max search timeout.
+ ///
+ ICapWrapper ICapBarcodeTimeout { get; }
+ ///
+ /// Gets the property to work with image bit depth for the current source.
+ ///
+ ///
+ /// The image bit depth.
+ ///
+ ICapWrapper ICapBitDepth { get; }
+ ///
+ /// Gets the property to work with image bit depth reduction method for the current source.
+ ///
+ ///
+ /// The image bit depth reduction method.
+ ///
+ ICapWrapper ICapBitDepthReduction { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image bit order.
+ ///
+ ICapWrapper ICapBitOrder { get; }
+ ///
+ /// Gets the property to work with image CCITT compression for the current source.
+ ///
+ ///
+ /// The image bit order for CCITT compression.
+ ///
+ ICapWrapper ICapBitOrderCodes { get; }
+ ///
+ /// Gets the property to work with image brightness for the current source.
+ ///
+ ///
+ /// The image brightness.
+ ///
+ ICapWrapper ICapBrightness { get; }
+ ///
+ /// Gets the property to work with image CCITT K factor for the current source.
+ ///
+ ///
+ /// The image CCITT K factor.
+ ///
+ ICapWrapper ICapCCITTKFactor { get; }
+ ///
+ /// Gets the property to work with image color management flag for the current source.
+ ///
+ ///
+ /// The image color management flag.
+ ///
+ ICapWrapper ICapColorManagementEnabled { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image compression.
+ ///
+ ICapWrapper ICapCompression { get; }
+ ///
+ /// Gets the property to work with image contrast for the current source.
+ ///
+ ///
+ /// The image contrast.
+ ///
+ ICapWrapper ICapContrast { get; }
+ ///
+ /// Gets the property to work with image square-cell halftone for the current source.
+ ///
+ ///
+ /// The image square-cell halftone.
+ ///
+ ICapWrapper ICapCustHalftone { get; }
+ ///
+ /// Gets the property to work with image exposure time (in seconds) for the current source.
+ ///
+ ///
+ /// The image exposure time.
+ ///
+ ICapWrapper ICapExposureTime { get; }
+ ///
+ /// Gets the property to work with ext image info flag for the current source.
+ ///
+ ///
+ /// The ext image info flag.
+ ///
+ ICapWrapper ICapExtImageInfo { get; }
+ ///
+ /// Gets the property to work with feeder type for the current source.
+ ///
+ ///
+ /// The feeder type.
+ ///
+ ICapWrapper ICapFeederType { get; }
+ ///
+ /// Gets the property to work with image film type for the current source.
+ ///
+ ///
+ /// The image film type.
+ ///
+ ICapWrapper ICapFilmType { get; }
+ ///
+ /// Gets the property to work with image color filter for the current source.
+ ///
+ ///
+ /// The image color filter type.
+ ///
+ ICapWrapper ICapFilter { get; }
+ ///
+ /// Gets the property to work with flash option for the current source.
+ ///
+ ///
+ /// The flash option.
+ ///
+ ICapWrapper ICapFlashUsed2 { get; }
+ ///
+ /// Gets the property to work with image flip-rotation behavior for the current source.
+ ///
+ ///
+ /// The image flip-rotation behavior.
+ ///
+ ICapWrapper ICapFlipRotation { get; }
+ ///
+ /// Gets the property to work with the list of frames the source will acquire on each page.
+ ///
+ ///
+ /// The capture frames.
+ ///
+ ICapWrapper ICapFrames { get; }
+ ///
+ /// Gets the property to work with image gamma value for the current source.
+ ///
+ ///
+ /// The image gamma.
+ ///
+ ICapWrapper ICapGamma { get; }
+ ///
+ /// Gets the property to work with image halftone patterns for the current source.
+ ///
+ ///
+ /// The image halftone patterns.
+ ///
+ ICapWrapper ICapHalftones { get; }
+ ///
+ /// Gets the property to work with image highlight value for the current source.
+ ///
+ ///
+ /// The image highlight.
+ ///
+ ICapWrapper ICapHighlight { get; }
+ ///
+ /// Gets the property to work with image icc profile for the current source.
+ ///
+ ///
+ /// The image icc profile.
+ ///
+ ICapWrapper ICapICCProfile { get; }
+ ///
+ /// Gets or sets the image indices that will be delivered during the standard image transfer done in
+ /// States 6 and 7.
+ ///
+ ///
+ /// The image indicies.
+ ///
+ ICapWrapper ICapImageDataSet { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image file format.
+ ///
+ ICapWrapper ICapImageFileFormat { get; }
+ ///
+ /// Gets the property to work with image enhancement filter for the current source.
+ ///
+ ///
+ /// The image enhancement filter.
+ ///
+ ICapWrapper ICapImageFilter { get; }
+ ///
+ /// Gets the property to work with image merge option for the current source.
+ ///
+ ///
+ /// The image merge option.
+ ///
+ ICapWrapper ICapImageMerge { get; }
+ ///
+ /// Gets the property to work with image merge height threshold for the current source.
+ ///
+ ///
+ /// The image merge height threshold.
+ ///
+ ICapWrapper ICapImageMergeHeightThreshold { get; }
+ ///
+ /// Gets the property to work with image jpeg compression for the current source.
+ ///
+ ///
+ /// The image pixel type for jpeg compression.
+ ///
+ ICapWrapper ICapJpegPixelType { get; }
+ ///
+ /// Gets the property to work with image jpeg quality for the current source.
+ ///
+ ///
+ /// The image jpeg quality.
+ ///
+ ICapWrapper ICapJpegQuality { get; }
+ ///
+ /// Gets the property to work with image jpeg sub sampling for the current source.
+ ///
+ ///
+ /// The image jpeg sub sampling.
+ ///
+ ICapWrapper ICapJpegSubsampling { get; }
+ ///
+ /// Gets the property to work with image lamp state flag for the current source.
+ ///
+ ///
+ /// The image lamp state flag.
+ ///
+ ICapWrapper ICapLampState { get; }
+ ///
+ /// Gets the property to work with image light path for the current source.
+ ///
+ ///
+ /// The image light path.
+ ///
+ ICapWrapper ICapLightPath { get; }
+ ///
+ /// Gets the property to work with image light source for the current source.
+ ///
+ ///
+ /// The image light source.
+ ///
+ ICapWrapper ICapLightSource { get; }
+ ///
+ /// Gets the property to work with image max frames for the current source.
+ ///
+ ///
+ /// The image max frames.
+ ///
+ ICapWrapper ICapMaxFrames { get; }
+ ///
+ /// Gets the property to work with image minimum height for the current source.
+ ///
+ ///
+ /// The image minimumm height.
+ ///
+ IReadOnlyCapWrapper ICapMinimumHeight { get; }
+ ///
+ /// Gets the property to work with image minimum width for the current source.
+ ///
+ ///
+ /// The image minimumm width.
+ ///
+ IReadOnlyCapWrapper ICapMinimumWidth { get; }
+ ///
+ /// Gets the property to work with image mirror option for the current source.
+ ///
+ ///
+ /// The image mirror option.
+ ///
+ ICapWrapper ICapMirror { get; }
+ ///
+ /// Gets the property to work with image noise filter for the current source.
+ ///
+ ///
+ /// The image noise filter.
+ ///
+ ICapWrapper ICapNoiseFilter { get; }
+ ///
+ /// Gets the property to work with image orientation for the current source.
+ ///
+ ///
+ /// The image orientation.
+ ///
+ ICapWrapper ICapOrientation { get; }
+ ///
+ /// Gets the property to work with image overscan option for the current source.
+ ///
+ ///
+ /// The image overscan option.
+ ///
+ ICapWrapper ICapOverScan { get; }
+ ///
+ /// Gets the property to work with image patch code detection flag for the current source.
+ ///
+ ///
+ /// The image patch code detection flag.
+ ///
+ ICapWrapper ICapPatchCodeDetectionEnabled { get; }
+ ///
+ /// Gets the property to work with image patch code max search retries for the current source.
+ ///
+ ///
+ /// The image patch code max search retries.
+ ///
+ ICapWrapper ICapPatchCodeMaxRetries { get; }
+ ///
+ /// Gets the property to work with image patch code max search priorities for the current source.
+ ///
+ ///
+ /// The image patch code max search priorities.
+ ///
+ ICapWrapper ICapPatchCodeMaxSearchPriorities { get; }
+ ///
+ /// Gets the property to work with image patch code search direction for the current source.
+ ///
+ ///
+ /// The image patch code search direction.
+ ///
+ ICapWrapper ICapPatchCodeSearchMode { get; }
+ ///
+ /// Gets the property to work with image patch code search priority for the current source.
+ ///
+ ///
+ /// The image patch code search priority.
+ ///
+ ICapWrapper ICapPatchCodeSearchPriorities { get; }
+ ///
+ /// Gets the property to work with image patch code max search timeout for the current source.
+ ///
+ ///
+ /// The image patch code max search timeout.
+ ///
+ ICapWrapper ICapPatchCodeTimeout { get; }
+ ///
+ /// Gets the property to work with image physical height for the current source.
+ ///
+ ///
+ /// The image physical height.
+ ///
+ IReadOnlyCapWrapper ICapPhysicalHeight { get; }
+ ///
+ /// Gets the property to work with image physical width for the current source.
+ ///
+ ///
+ /// The image physical width.
+ ///
+ IReadOnlyCapWrapper ICapPhysicalWidth { get; }
+ ///
+ /// Gets the property to work with image pixel flavor for the current source.
+ ///
+ ///
+ /// The image pixel flavor.
+ ///
+ ICapWrapper ICapPixelFlavor { get; }
+ ///
+ /// Gets the property to work with image CCITT compression for the current source.
+ ///
+ ///
+ /// The image pixel flavor for CCITT compression.
+ ///
+ ICapWrapper ICapPixelFlavorCodes { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image pixel type.
+ ///
+ ICapWrapper ICapPixelType { get; }
+ ///
+ /// Gets the property to work with image color format for the current source.
+ ///
+ ///
+ /// The image color format.
+ ///
+ ICapWrapper ICapPlanarChunky { get; }
+ ///
+ /// Gets the property to work with image rotation for the current source.
+ ///
+ ///
+ /// The image rotation.
+ ///
+ ICapWrapper ICapRotation { get; }
+ ///
+ /// Gets the property to work with image shadow value for the current source.
+ ///
+ ///
+ /// The image shadow.
+ ///
+ ICapWrapper ICapShadow { get; }
+ ///
+ /// Gets the property to work with image barcode types for the current source.
+ ///
+ ///
+ /// The image barcode types.
+ ///
+ IReadOnlyCapWrapper ICapSupportedBarcodeTypes { get; }
+ ///
+ /// Gets the property to get supported ext image info for the current source.
+ ///
+ ///
+ /// The supported ext image info.
+ ///
+ IReadOnlyCapWrapper ICapSupportedExtImageInfo { get; }
+ ///
+ /// Gets the property to work with image patch code types for the current source.
+ ///
+ ///
+ /// The image patch code types.
+ ///
+ IReadOnlyCapWrapper ICapSupportedPatchCodeTypes { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image supported size.
+ ///
+ ICapWrapper ICapSupportedSizes { get; }
+ ///
+ /// Gets the property to work with image threshold for the current source.
+ ///
+ ///
+ /// The image threshold.
+ ///
+ ICapWrapper ICapThreshold { get; }
+ ///
+ /// Gets the property to work with image tiles flag for the current source.
+ ///
+ ///
+ /// The image tiles flag.
+ ///
+ ICapWrapper ICapTiles { get; }
+ ///
+ /// Gets the property to work with image CCITT time fill for the current source.
+ ///
+ ///
+ /// The image CCITT time fill.
+ ///
+ ICapWrapper ICapTimeFill { get; }
+ ///
+ /// Gets the property to work with image undefined size flag for the current source.
+ ///
+ ///
+ /// The image undefined size flag.
+ ///
+ ICapWrapper ICapUndefinedImageSize { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image unit of measure.
+ ///
+ ICapWrapper ICapUnits { get; }
+ ///
+ /// Gets the property to work with image for the current source.
+ ///
+ ///
+ /// The image xfer mech.
+ ///
+ ICapWrapper ICapXferMech { get; }
+ ///
+ /// Gets the property to work with image's native x-axis resolution for the current source.
+ ///
+ ///
+ /// The image's native x-axis resolution.
+ ///
+ IReadOnlyCapWrapper ICapXNativeResolution { get; }
+ ///
+ /// Gets the property to work with image x-axis resolution for the current source.
+ ///
+ ///
+ /// The image x-axis resolution.
+ ///
+ ICapWrapper ICapXResolution { get; }
+ ///
+ /// Gets the property to work with image x-axis scaling for the current source.
+ ///
+ ///
+ /// The image x-axis scaling.
+ ///
+ ICapWrapper ICapXScaling { get; }
+ ///
+ /// Gets the property to work with image's native y-axis resolution for the current source.
+ ///
+ ///
+ /// The image's native y-axis resolution.
+ ///
+ IReadOnlyCapWrapper ICapYNativeResolution { get; }
+ ///
+ /// Gets the property to work with image y-axis resolution for the current source.
+ ///
+ ///
+ /// The image y-axis resolution.
+ ///
+ ICapWrapper ICapYResolution { get; }
+ ///
+ /// Gets the property to work with image y-axis scaling for the current source.
+ ///
+ ///
+ /// The image y-axis scaling.
+ ///
+ ICapWrapper ICapYScaling { get; }
+ ///
+ /// Gets the property to work with image zoom factor for the current source.
+ ///
+ ///
+ /// The image zoom factor.
+ ///
+ ICapWrapper ICapZoomFactor { get; }
+
+
+ ///
+ /// Gets the current value for a capability.
+ ///
+ /// The capability id.
+ ///
+ object GetCurrent(CapabilityId capabilityId);
+ ///
+ /// Gets the default value for a capability.
+ ///
+ /// The capability id.
+ ///
+ object GetDefault(CapabilityId capabilityId);
+ ///
+ /// A general method that tries to get capability values from current .
+ ///
+ /// The capability id.
+ ///
+ IEnumerable GetValues(CapabilityId capabilityId);
+ ///
+ /// Gets all the possible values of this capability without expanding.
+ /// This may be required to work with large range values that cannot be safely enumerated
+ /// with .
+ ///
+ /// The capability id.
+ ///
+ CapabilityReader GetValuesRaw(CapabilityId capabilityId);
+ ///
+ /// Gets the actual supported operations for a capability. This is not supported by all sources.
+ ///
+ /// The capability id.
+ ///
+ QuerySupports? QuerySupport(CapabilityId capabilityId);
+ ///
+ /// Resets the current value to power-on default.
+ ///
+ /// The capability id.
+ ///
+ ReturnCode Reset(CapabilityId capabilityId);
+ ///
+ /// Resets all values and constraint to power-on defaults.
+ ///
+ ///
+ ReturnCode ResetAll();
+ }
+}
\ No newline at end of file
diff --git a/src/NTwain/IDataSource.cs b/src/NTwain/IDataSource.cs
index 6efc3d2..eee29be 100644
--- a/src/NTwain/IDataSource.cs
+++ b/src/NTwain/IDataSource.cs
@@ -78,7 +78,7 @@ namespace NTwain
///
/// The capabilities.
///
- Capabilities Capabilities { get; }
+ ICapabilities Capabilities { get; }
///
/// Gets or sets the current settings (CustomDSData) of this source if supported.
diff --git a/src/NTwain/NTwain.csproj b/src/NTwain/NTwain.csproj
index b1f3b01..10d66ac 100644
--- a/src/NTwain/NTwain.csproj
+++ b/src/NTwain/NTwain.csproj
@@ -62,6 +62,7 @@
+
diff --git a/src/NTwain/Properties/VersionInfo.cs b/src/NTwain/Properties/VersionInfo.cs
index ceb164a..bf0fb5f 100644
--- a/src/NTwain/Properties/VersionInfo.cs
+++ b/src/NTwain/Properties/VersionInfo.cs
@@ -23,7 +23,7 @@ namespace NTwain
///
/// The build release version number.
///
- public const string Build = "3.4.2"; // change this for each nuget release
+ public const string Build = "3.5.0"; // change this for each nuget release
}
diff --git a/src/NTwain/WpfImageTools.cs b/src/NTwain/WpfImageTools.cs
index cada72d..2b0dae9 100644
--- a/src/NTwain/WpfImageTools.cs
+++ b/src/NTwain/WpfImageTools.cs
@@ -10,7 +10,7 @@ namespace NTwain
///
public static class WpfImageTools
{
- //
+ ///
/// Loads a into WPF . The image created
/// will be a copy so the stream can be disposed once this call returns.
///