parameters
This commit is contained in:
parent
62ee11ec19
commit
35c3299d51
63
src/main.rs
63
src/main.rs
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(unused)]
|
||||||
|
|
||||||
use sane_sys::*;
|
use sane_sys::*;
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
|
||||||
|
@ -78,6 +80,22 @@ impl Drop for Context {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone)]
|
||||||
|
#[repr(transparent)]
|
||||||
|
struct Version(SANE_Int);
|
||||||
|
|
||||||
|
impl Version {
|
||||||
|
fn major(self) -> SANE_Word {
|
||||||
|
SANE_VERSION_MAJOR(self.0)
|
||||||
|
}
|
||||||
|
fn minor(self) -> SANE_Word {
|
||||||
|
SANE_VERSION_MINOR(self.0)
|
||||||
|
}
|
||||||
|
fn build(self) -> SANE_Word {
|
||||||
|
SANE_VERSION_BUILD(self.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Device(*const SANE_Device);
|
struct Device(*const SANE_Device);
|
||||||
|
|
||||||
impl Device {
|
impl Device {
|
||||||
|
@ -142,6 +160,17 @@ impl Handle {
|
||||||
Some(Descriptor(desc))
|
Some(Descriptor(desc))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn parameters(&self) -> Result<Parameters, Error> {
|
||||||
|
let mut parameters = std::mem::MaybeUninit::uninit();
|
||||||
|
unsafe { checked(|| sane_get_parameters(self.0, parameters.as_mut_ptr()))? }
|
||||||
|
Ok(Parameters(unsafe { parameters.assume_init() }))
|
||||||
|
}
|
||||||
|
fn start(&self) -> Result<(), Error> {
|
||||||
|
unsafe { checked(|| sane_start(self.0)) }
|
||||||
|
}
|
||||||
|
fn cancel(&self) {
|
||||||
|
unsafe { sane_cancel(self.0) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Descriptor(*const SANE_Option_Descriptor);
|
struct Descriptor(*const SANE_Option_Descriptor);
|
||||||
|
@ -159,19 +188,27 @@ impl Descriptor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
#[repr(transparent)]
|
struct Parameters(SANE_Parameters);
|
||||||
struct Version(SANE_Int);
|
|
||||||
|
|
||||||
impl Version {
|
impl Parameters {
|
||||||
fn major(self) -> SANE_Word {
|
fn format(&self) -> SANE_Frame {
|
||||||
SANE_VERSION_MAJOR(self.0)
|
self.0.format
|
||||||
}
|
}
|
||||||
fn minor(self) -> SANE_Word {
|
fn last_frame(&self) -> SANE_Bool {
|
||||||
SANE_VERSION_MINOR(self.0)
|
self.0.last_frame
|
||||||
}
|
}
|
||||||
fn build(self) -> SANE_Word {
|
fn bytes_per_line(&self) -> SANE_Int {
|
||||||
SANE_VERSION_BUILD(self.0)
|
self.0.bytes_per_line
|
||||||
|
}
|
||||||
|
fn pixels_per_line(&self) -> SANE_Int {
|
||||||
|
self.0.pixels_per_line
|
||||||
|
}
|
||||||
|
fn lines(&self) -> SANE_Int {
|
||||||
|
self.0.lines
|
||||||
|
}
|
||||||
|
fn depth(&self) -> SANE_Int {
|
||||||
|
self.0.depth
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,4 +238,10 @@ fn main() {
|
||||||
for descriptor in handle.descriptors() {
|
for descriptor in handle.descriptors() {
|
||||||
println!("\t{}", descriptor.name());
|
println!("\t{}", descriptor.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let parameters = handle.parameters().unwrap();
|
||||||
|
println!("{:?}", parameters);
|
||||||
|
|
||||||
|
handle.start().unwrap();
|
||||||
|
handle.cancel();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue