1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
use serde::{Deserialize, Serialize};
#[derive(Default, Debug, Deserialize)]
pub struct Platen {
#[serde(rename = "PlatenInputCaps", default)]
pub platen_input_caps: PlatenInputCaps,
}
#[derive(Default, Debug, Deserialize)]
pub struct PlatenInputCaps {
#[serde(rename = "MinWidth", default)]
pub min_width: u16,
#[serde(rename = "MaxWidth", default)]
pub max_width: i16,
#[serde(rename = "MinHeight", default)]
pub min_height: i16,
#[serde(rename = "MaxHeight", default)]
pub max_height: i16,
#[serde(rename = "MaxScanRegions", default)]
pub max_scan_regions: u16,
#[serde(rename = "MaxOpticalXResolution", default)]
pub max_optical_xresolution: u16,
#[serde(rename = "MaxOpticalYResolution", default)]
pub max_optical_yresolution: u16,
#[serde(rename = "RiskyLeftMargin", default)]
pub risky_left_margin: u16,
#[serde(rename = "RiskyRightMargin", default)]
pub risky_right_margin: u16,
#[serde(rename = "RiskyTopMargin", default)]
pub risky_top_margin: u16,
#[serde(rename = "RiskyBottomMargin", default)]
pub risky_bottom_margin: u16,
}
#[derive(Default, Debug, Deserialize)]
pub struct CompressionFactorSupport {
#[serde(rename = "Min", default)]
pub min: i8,
#[serde(rename = "Max", default)]
pub max: i8,
#[serde(rename = "Normal", default)]
pub normal: i8,
#[serde(rename = "Step", default)]
pub step: i8,
}
#[derive(Default, Debug, Deserialize)]
pub struct SupportedMediaTypes {
#[serde(rename = "MediaType", default)]
pub media_types: Vec<String>,
}
#[derive(Default, Debug, Deserialize)]
pub struct SharpenSupport {
#[serde(rename = "Min", default)]
pub min: i8,
#[serde(rename = "Max", default)]
pub max: i8,
#[serde(rename = "Normal", default)]
pub normal: i8,
#[serde(rename = "Step", default)]
pub step: i8,
}
#[derive(Default, Debug, Deserialize)]
pub struct ScannerCapabilities {
#[serde(rename = "Version", default)]
pub version: String,
#[serde(rename = "MakeAndModel", default)]
pub make_and_model: String,
#[serde(rename = "SerialNumber", default)]
pub serial_number: String,
#[serde(rename = "UUID", default)]
pub uuid: String,
#[serde(rename = "AdminURI", default)]
pub admin_uri: String,
#[serde(rename = "IconURI", default)]
pub icon_uri: String,
#[serde(rename = "Platen", default)]
pub platen: Platen,
#[serde(rename = "CompressionFactorSupport", default)]
pub compression_factor_support: CompressionFactorSupport,
#[serde(rename = "SupportedMediaTypes", default)]
pub supported_media_types: SupportedMediaTypes,
#[serde(rename = "SharpenSupport", default)]
pub sharpen_support: SharpenSupport,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename = "scan:ScanRegion")]
pub struct ScanRegion {
#[serde(rename = "pwg:XOffset")]
pub x_offset: i16,
#[serde(rename = "pwg:YOffset")]
pub y_offset: i16,
#[serde(rename = "pwg:Width")]
pub width: i16,
#[serde(rename = "pwg:Height")]
pub height: i16,
#[serde(rename = "pwg:ContentRegionUnits")]
pub content_region_units: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename = "scan:ScanSettings")]
pub struct ScanSettings {
#[serde(rename = "pwg:Version")]
pub version: String,
#[serde(rename = "pwg:ScanRegions")]
pub scan_regions: ScanRegion,
#[serde(rename = "scan:InputSource")]
pub input_source: String,
#[serde(rename = "scan:ColorMode")]
pub color_mode: String,
#[serde(rename = "scan:XResolution")]
pub x_resolution: i16,
#[serde(rename = "scan:YResolution")]
pub y_resolution: i16,
}