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