ICScannerDevice

Struct ICScannerDevice 

Source
pub struct ICScannerDevice { /* private fields */ }
Available on crate features ICDevice and ICScannerDevice only.
Expand description

ICScannerDevice is a concrete subclass of ICDevice class. ICDeviceBrowser creates instances of this class.

In this release, an instance of ICScannerDevice class is intended to be used by the ICScannerDeviceView object. The ICScannerDeviceView class encapsulates the complexities of setting scan parameters, performing scans and saving the result. The developer should consider using ICScannerDeviceView instead of building their own views using the ICScannerDevice object.

See also Apple’s documentation

Implementations§

Source§

impl ICScannerDevice

Source

pub unsafe fn availableFunctionalUnitTypes(&self) -> Retained<NSArray<NSNumber>>

An array of functional unit types available on this scanner device. This is an array of NSNumber objects whose values are of type ICScannerFunctionalUnitType.

Source

pub unsafe fn selectedFunctionalUnit(&self) -> Retained<ICScannerFunctionalUnit>

Available on crate feature ICScannerFunctionalUnits only.

The currently selected functional unit on the scanner device.

Source

pub unsafe fn transferMode(&self) -> ICScannerTransferMode

The transfer mode for scanned document.

Source

pub unsafe fn setTransferMode(&self, transfer_mode: ICScannerTransferMode)

Setter for transferMode.

Source

pub unsafe fn maxMemoryBandSize(&self) -> u32

The total maximum band size requested when performing a ICScannerTransferModeMemoryBased.

Source

pub unsafe fn setMaxMemoryBandSize(&self, max_memory_band_size: u32)

Setter for maxMemoryBandSize.

Source

pub unsafe fn downloadsDirectory(&self) -> Retained<NSURL>

The downloads directory.

Source

pub unsafe fn setDownloadsDirectory(&self, downloads_directory: &NSURL)

Setter for downloadsDirectory.

Source

pub unsafe fn documentName(&self) -> Retained<NSString>

The document name.

Source

pub unsafe fn setDocumentName(&self, document_name: &NSString)

Setter for documentName.

This is [copied][objc2_foundation::NSCopying::copy] when set.

Source

pub unsafe fn documentUTI(&self) -> Retained<NSString>

The document UTI. Currently supported UTIs are: kUTTypeJPEG, kUTTypeJPEG2000, kUTTypeTIFF, kUTTypePNG etc.

Source

pub unsafe fn setDocumentUTI(&self, document_uti: &NSString)

Setter for documentUTI.

This is [copied][objc2_foundation::NSCopying::copy] when set.

Source

pub unsafe fn defaultUsername(&self) -> Retained<NSString>

If the device is protected, instead of prompting the user for a username, this property can be set to default to a specific username as a convience. The value will persist until reset by setting it to nil.

Source

pub unsafe fn setDefaultUsername(&self, default_username: &NSString)

Setter for defaultUsername.

This is [copied][objc2_foundation::NSCopying::copy] when set.

Source

pub unsafe fn requestOpenSessionWithCredentials_password( &self, username: &NSString, password: &NSString, )

This message requests to open a session on the protected device with the authorized username and passcode. If the device reports back a failure of credentials, they can be provided here for the launch. A client MUST open a session on a device in order to use the device.

Make sure the receiver’s delegate is set prior to sending this message; otherwise this message will be ignored. This request is completed when the delegate receives a “device:didOpenSessionWithError:” message. No more messages will be sent to the delegate if this request fails.

Source

pub unsafe fn requestSelectFunctionalUnit( &self, type: ICScannerFunctionalUnitType, )

Available on crate feature ICScannerFunctionalUnits only.

Requests the scanner device to select a functional unit.

When this request is completed, the delegate will be notified using the ‘scannerDevice:didSelectFunctionalUnit:error:’ message.

Source

pub unsafe fn requestOverviewScan(&self)

Starts an overview scan on selectedFunctionalUnit.

When this request is completed, the delegate will be notified using the ‘scannerDevice:didCompleteOverviewScanWithError:’ message. The content of error returned should be examined to determine if the request completed successfully.

Source

pub unsafe fn requestScan(&self)

Starts a scan on selectedFunctionalUnit.

When this request is completed, the delegate will be notified using the ‘scannerDevice:didCompleteScanWithError:’ message. The content of error returned should be examined to determine if the request completed successfully.

Source

pub unsafe fn cancelScan(&self)

Cancels the current scan operation started by sending a ‘requestOverviewScan’ or ‘requestScan’.

Source§

impl ICScannerDevice

Methods declared on superclass NSObject.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Methods from Deref<Target = ICDevice>§

Source

pub unsafe fn delegate( &self, ) -> Option<Retained<ProtocolObject<dyn ICDeviceDelegate>>>

The delegate to receive messages once a session is opened on the device.

The delegate must conform ICDeviceDelegate protocol. In addition it should respond to selectors defined in ICCameraDeviceDelegate protocol in order to effectively interact with the device object. The messages this delegate can expect to receive are described by these protocols.

§Safety

This is not retained internally, you must ensure the object is still alive.

Source

pub unsafe fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn ICDeviceDelegate>>, )

Setter for delegate.

§Safety

This is unretained, you must ensure the object is kept alive while in use.

Source

pub unsafe fn type(&self) -> ICDeviceType

The type of the device as defined by ICDeviceType OR’d with its ICDeviceLocationType.

Note: The type of this device can be obtained by AND’ing the value retuned by this property with an appropriate ICDeviceTypeMask.

Note: The location type of this device can be obtained by AND’ing the value retuned by this property with an appropriate ICDeviceLocationTypeMask.

Source

pub unsafe fn capabilities(&self) -> Retained<NSArray<NSString>>

The capabilities of the device as reported by the device module.

Source

pub unsafe fn name(&self) -> Option<Retained<NSString>>

Name of the device as reported by the device module or by the device transport when a device module is not in control of this device.

Note: This name may change if the device module overrides the default name of the device reported by the device’s transport, or if the name of the filesystem volume mounted by the device is changed by the user.

Source

pub unsafe fn productKind(&self) -> Option<Retained<NSString>>

Type of the device. Possible values are: “ iPhone“, @“iPod”, @“iPad”, @“Camera”, @“Scanner”

Source

pub unsafe fn icon(&self) -> Option<Retained<CGImage>>

Available on crate feature objc2-core-graphics only.

Icon image for the device class. If there is no custom icon present from a device manufacturer, this will be a rendered version of the system symbol for the device class. Using a rendered system symbol instead of the systemSymbolName is discouraged.

Source

pub unsafe fn systemSymbolName(&self) -> Option<Retained<NSString>>

Standard system symbol used to represent the device class. Using the symbol to render an appropriate device icon will ensure proper scaling for high resolution devices.

Source

pub unsafe fn transportType(&self) -> Option<Retained<NSString>>

The transport type used by the device. The possible values are: ICTransportTypeUSB or ICTransportTypeMassStorage.

Source

pub unsafe fn UUIDString(&self) -> Option<Retained<NSString>>

A string representation of the Universally Unique ID of the device.

Source

pub unsafe fn locationDescription(&self) -> Option<Retained<NSString>>

A non-localized location description string for the device.

The value returned in one of the location description strings defined above, or location obtained from the Bonjour TXT record of a network device.

Source

pub unsafe fn hasOpenSession(&self) -> bool

Indicates whether the device has an open session.

Source

pub unsafe fn userData(&self) -> Option<Retained<NSMutableDictionary>>

Client convenience bookkeeping object retained by the framework.

§Safety

The returned generic should be of the correct type.

Source

pub unsafe fn modulePath(&self) -> Retained<NSString>

Filesystem path of the device module that is associated with this device. Camera-specific capabilities are defined in ICCameraDevice.h and scanner-specific capabilities are defined in ICScannerDevice.h.

Source

pub unsafe fn moduleVersion(&self) -> Option<Retained<NSString>>

The bundle version of the device module associated with this device.

Note: This may change if an existing device module associated with this device is updated or a new device module for this device is installed.

Source

pub unsafe fn serialNumberString(&self) -> Option<Retained<NSString>>

The serial number of the device. This will be NULL if the device does not provide a serial number.

Source

pub unsafe fn usbLocationID(&self) -> c_int

The USB location of which the device is occupying.

Source

pub unsafe fn usbProductID(&self) -> c_int

The USB PID associated with the device attached.

Source

pub unsafe fn usbVendorID(&self) -> c_int

The USB VID associated with the device attached.

Source

pub unsafe fn requestOpenSession(&self)

This message requests to open a session on the device.

Make sure the receiver’s delegate is set prior to sending this message; otherwise this message will be ignored. This request is completed when the delegate receives a “device:didOpenSessionWithError:” message.

Note: Execution of the delegate callback will occur on the main thread.

Source

pub unsafe fn requestCloseSession(&self)

This message requests to close a previously opened session on this device.

This request is completed when the delegate receives a “device:didCloseSessionWithError:” message.

Note: Execution of the delegate callback will occur on the main thread.

Source

pub unsafe fn requestEject(&self)

Eject the media if permitted by the device, or disconnect from a remote device.

Source

pub unsafe fn requestOpenSessionWithOptions_completion( &self, options: Option<&NSDictionary<ICSessionOptions, AnyObject>>, completion: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate feature block2 only.

This message requests to open a session on the device.

This request will execute the completion handler provided upon return.

Note: The completion block will execute on an any available queue, often this will not be the main queue.

§Safety

options generic should be of the correct type.

Source

pub unsafe fn requestCloseSessionWithOptions_completion( &self, options: Option<&NSDictionary<ICSessionOptions, AnyObject>>, completion: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate feature block2 only.

This message requests to close a previously opened session on this device.

This request will execute the completion handler provided upon return.

Note: The completion block will execute on an any available queue, often this will not be the main queue.

§Safety

options generic should be of the correct type.

Source

pub unsafe fn requestEjectWithCompletion( &self, completion: &DynBlock<dyn Fn(*mut NSError)>, )

Available on crate feature block2 only.

Eject the media, or disconnect the device - if permitted by the device.

This request will execute the completion handler provided upon return.

Note: The completion block will execute on an any available queue, often this will not be the main queue.

Source

pub unsafe fn autolaunchApplicationPath(&self) -> Option<Retained<NSString>>

Filesystem path of an application that is to be automatically launched when this device is added.

This property is unavailable for devices of ICTransportTypeProximity.

Source

pub unsafe fn setAutolaunchApplicationPath( &self, autolaunch_application_path: Option<&NSString>, )

Setter for autolaunchApplicationPath.

This is [copied][objc2_foundation::NSCopying::copy] when set.

Source

pub unsafe fn isRemote(&self) -> bool

Indicates whether the device is a remote device published by Image Capture device sharing facility.

Name of the device as reported by the device module or by the device transport when a device module is not in control of this device.

Note: This name may change if the device module overrides the default name of the device reported by the device’s transport, or if the name of the filesystem volume mounted by the device is changed by the user.

Source

pub unsafe fn persistentIDString(&self) -> Option<Retained<NSString>>

A string representation of the persistent ID of the device.

Source

pub unsafe fn requestSendMessage_outData_maxReturnedDataSize_sendMessageDelegate_didSendMessageSelector_contextInfo( &self, message_code: c_uint, data: &NSData, max_returned_data_size: c_uint, send_message_delegate: &AnyObject, selector: Sel, context_info: *mut c_void, )

This method asynchronously sends an arbitrary message with optional data to a device.

This method allows developers to send a private message from a client application to a device module.

The response to this command will be delivered using didSendMessageSelector of sendMessageDelegate. The didSendMessageSelector should have the same signature as: - (void)didSendMessage:(UInt32)messageCode inData:(NSData*)data error:(NSError*)error contextInfo:(void*)contextInfo.

The content of error returned should be examined to determine if the request completed successfully.

Note: This method should not be used to send PTP pass-through commands to a PTP camera. Please refer to ‘requestSendPTPCommand:outData:sendCommandDelegate:sendCommandDelegate:contextInfo:’ defined in ICCameraDevice.h for sending PTP pass-through commands.

Note: Execution of the delegate callback will occur on the main thread.

§Safety
  • send_message_delegate should be of the correct type.
  • selector must be a valid selector.
  • context_info must be a valid pointer or null.
Source

pub unsafe fn requestEjectOrDisconnect(&self)

👎Deprecated

Eject the media if permitted by the device, or disconnect from a remote device.

Source

pub unsafe fn requestYield(&self)

👎Deprecated: Requesting a device yield is no longer avaialble

This message requests the device module in control of this device to yield control.

This message should be used only if the client is planning on communicating with the device directly. The device module may not yield control of the device if it has an open session.

Source

pub unsafe fn moduleExecutableArchitecture(&self) -> c_int

👎Deprecated: Module executable architecture is no longer available

Reports the device module servicing the requests executable architecture.

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

pub fn class(&self) -> &'static AnyClass

Dynamically find the class of this object.

§Panics

May panic if the object is invalid (which may be the case for objects returned from unavailable init/new methods).

§Example

Check that an instance of NSObject has the precise class NSObject.

use objc2::ClassType;
use objc2::runtime::NSObject;

let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use Ivar::load instead.

Use Ivar::load instead.

§Safety

The object must have an instance variable with the given name, and it must be of type T.

See Ivar::load_ptr for details surrounding this.

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: DowncastTarget,

Attempt to downcast the object to a class of type T.

This is the reference-variant. Use Retained::downcast if you want to convert a retained object to another type.

§Mutable classes

Some classes have immutable and mutable variants, such as NSString and NSMutableString.

When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.

So using this method to convert a NSString to a NSMutableString, while not unsound, is generally frowned upon unless you created the string yourself, or the API explicitly documents the string to be mutable.

See Apple’s documentation on mutability and on isKindOfClass: for more details.

§Generic classes

Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.

You can, however, safely downcast to generic collections where all the type-parameters are AnyObject.

§Panics

This works internally by calling isKindOfClass:. That means that the object must have the instance method of that name, and an exception will be thrown (if CoreFoundation is linked) or the process will abort if that is not the case. In the vast majority of cases, you don’t need to worry about this, since both root objects NSObject and NSProxy implement this method.

§Examples

Cast an NSString back and forth from NSObject.

use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};

let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();

Try (and fail) to cast an NSObject to an NSString.

use objc2_foundation::{NSObject, NSString};

let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());

Try to cast to an array of strings.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();

This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.

Downcast when processing each element instead.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);

for elem in arr {
    if let Some(data) = elem.downcast_ref::<NSString>() {
        // handle `data`
    }
}

Trait Implementations§

Source§

impl AsRef<AnyObject> for ICScannerDevice

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<ICDevice> for ICScannerDevice

Source§

fn as_ref(&self) -> &ICDevice

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<ICScannerDevice> for ICScannerDevice

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for ICScannerDevice

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for ICScannerDevice

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<ICDevice> for ICScannerDevice

Source§

fn borrow(&self) -> &ICDevice

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for ICScannerDevice

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for ICScannerDevice

Source§

const NAME: &'static str = "ICScannerDevice"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = ICDevice

The superclass of this class. Read more
Source§

type ThreadKind = <<ICScannerDevice as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for ICScannerDevice

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for ICScannerDevice

Source§

type Target = ICDevice

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for ICScannerDevice

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for ICScannerDevice

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for ICScannerDevice

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for ICScannerDevice

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for ICScannerDevice

Source§

const ENCODING_REF: Encoding = <ICDevice as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for ICScannerDevice

Source§

impl Eq for ICScannerDevice

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,