escl_scan/
structs.rs

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    // TODO: Make SettingProfiles
22    // TODO: Make SupportedIntents
23    #[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}