1#![allow(clippy::too_many_arguments)]
7
8#[allow(unused_imports)]
9use std::borrow::Cow;
10#[allow(unused_imports)]
11use std::convert::TryInto;
12#[allow(unused_imports)]
13use crate::utils::RawFdContainer;
14#[allow(unused_imports)]
15use crate::x11_utils::{Request, RequestHeader, Serialize, TryParse, TryParseFd};
16use std::io::IoSlice;
17use crate::connection::RequestConnection;
18#[allow(unused_imports)]
19use crate::connection::Connection as X11Connection;
20#[allow(unused_imports)]
21use crate::cookie::{Cookie, CookieWithFds, VoidCookie};
22use crate::errors::ConnectionError;
23#[allow(unused_imports)]
24use crate::errors::ReplyOrIdError;
25#[allow(unused_imports)]
26use super::xproto;
27
28pub use x11rb_protocol::protocol::xprint::*;
29
30fn major_opcode<Conn: RequestConnection + ?Sized>(conn: &Conn) -> Result<u8, ConnectionError> {
32 let info = conn.extension_information(X11_EXTENSION_NAME)?;
33 let info = info.ok_or(ConnectionError::UnsupportedExtension)?;
34 Ok(info.major_opcode)
35}
36
37pub fn print_query_version<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, PrintQueryVersionReply>, ConnectionError>
38where
39 Conn: RequestConnection + ?Sized,
40{
41 let request0 = PrintQueryVersionRequest;
42 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
43 let slices = [IoSlice::new(&bytes[0])];
44 assert_eq!(slices.len(), bytes.len());
45 conn.send_request_with_reply(&slices, fds)
46}
47
48pub fn print_get_printer_list<'c, 'input, Conn>(conn: &'c Conn, printer_name: &'input [String8], locale: &'input [String8]) -> Result<Cookie<'c, Conn, PrintGetPrinterListReply>, ConnectionError>
49where
50 Conn: RequestConnection + ?Sized,
51{
52 let request0 = PrintGetPrinterListRequest {
53 printer_name: Cow::Borrowed(printer_name),
54 locale: Cow::Borrowed(locale),
55 };
56 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
57 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2]), IoSlice::new(&bytes[3]), IoSlice::new(&bytes[4])];
58 assert_eq!(slices.len(), bytes.len());
59 conn.send_request_with_reply(&slices, fds)
60}
61
62pub fn print_rehash_printer_list<Conn>(conn: &Conn) -> Result<VoidCookie<'_, Conn>, ConnectionError>
63where
64 Conn: RequestConnection + ?Sized,
65{
66 let request0 = PrintRehashPrinterListRequest;
67 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
68 let slices = [IoSlice::new(&bytes[0])];
69 assert_eq!(slices.len(), bytes.len());
70 conn.send_request_without_reply(&slices, fds)
71}
72
73pub fn create_context<'c, 'input, Conn>(conn: &'c Conn, context_id: u32, printer_name: &'input [String8], locale: &'input [String8]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
74where
75 Conn: RequestConnection + ?Sized,
76{
77 let request0 = CreateContextRequest {
78 context_id,
79 printer_name: Cow::Borrowed(printer_name),
80 locale: Cow::Borrowed(locale),
81 };
82 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
83 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2]), IoSlice::new(&bytes[3]), IoSlice::new(&bytes[4])];
84 assert_eq!(slices.len(), bytes.len());
85 conn.send_request_without_reply(&slices, fds)
86}
87
88pub fn print_set_context<Conn>(conn: &Conn, context: u32) -> Result<VoidCookie<'_, Conn>, ConnectionError>
89where
90 Conn: RequestConnection + ?Sized,
91{
92 let request0 = PrintSetContextRequest {
93 context,
94 };
95 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
96 let slices = [IoSlice::new(&bytes[0])];
97 assert_eq!(slices.len(), bytes.len());
98 conn.send_request_without_reply(&slices, fds)
99}
100
101pub fn print_get_context<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, PrintGetContextReply>, ConnectionError>
102where
103 Conn: RequestConnection + ?Sized,
104{
105 let request0 = PrintGetContextRequest;
106 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
107 let slices = [IoSlice::new(&bytes[0])];
108 assert_eq!(slices.len(), bytes.len());
109 conn.send_request_with_reply(&slices, fds)
110}
111
112pub fn print_destroy_context<Conn>(conn: &Conn, context: u32) -> Result<VoidCookie<'_, Conn>, ConnectionError>
113where
114 Conn: RequestConnection + ?Sized,
115{
116 let request0 = PrintDestroyContextRequest {
117 context,
118 };
119 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
120 let slices = [IoSlice::new(&bytes[0])];
121 assert_eq!(slices.len(), bytes.len());
122 conn.send_request_without_reply(&slices, fds)
123}
124
125pub fn print_get_screen_of_context<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, PrintGetScreenOfContextReply>, ConnectionError>
126where
127 Conn: RequestConnection + ?Sized,
128{
129 let request0 = PrintGetScreenOfContextRequest;
130 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
131 let slices = [IoSlice::new(&bytes[0])];
132 assert_eq!(slices.len(), bytes.len());
133 conn.send_request_with_reply(&slices, fds)
134}
135
136pub fn print_start_job<Conn>(conn: &Conn, output_mode: u8) -> Result<VoidCookie<'_, Conn>, ConnectionError>
137where
138 Conn: RequestConnection + ?Sized,
139{
140 let request0 = PrintStartJobRequest {
141 output_mode,
142 };
143 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
144 let slices = [IoSlice::new(&bytes[0])];
145 assert_eq!(slices.len(), bytes.len());
146 conn.send_request_without_reply(&slices, fds)
147}
148
149pub fn print_end_job<Conn>(conn: &Conn, cancel: bool) -> Result<VoidCookie<'_, Conn>, ConnectionError>
150where
151 Conn: RequestConnection + ?Sized,
152{
153 let request0 = PrintEndJobRequest {
154 cancel,
155 };
156 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
157 let slices = [IoSlice::new(&bytes[0])];
158 assert_eq!(slices.len(), bytes.len());
159 conn.send_request_without_reply(&slices, fds)
160}
161
162pub fn print_start_doc<Conn>(conn: &Conn, driver_mode: u8) -> Result<VoidCookie<'_, Conn>, ConnectionError>
163where
164 Conn: RequestConnection + ?Sized,
165{
166 let request0 = PrintStartDocRequest {
167 driver_mode,
168 };
169 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
170 let slices = [IoSlice::new(&bytes[0])];
171 assert_eq!(slices.len(), bytes.len());
172 conn.send_request_without_reply(&slices, fds)
173}
174
175pub fn print_end_doc<Conn>(conn: &Conn, cancel: bool) -> Result<VoidCookie<'_, Conn>, ConnectionError>
176where
177 Conn: RequestConnection + ?Sized,
178{
179 let request0 = PrintEndDocRequest {
180 cancel,
181 };
182 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
183 let slices = [IoSlice::new(&bytes[0])];
184 assert_eq!(slices.len(), bytes.len());
185 conn.send_request_without_reply(&slices, fds)
186}
187
188pub fn print_put_document_data<'c, 'input, Conn>(conn: &'c Conn, drawable: xproto::Drawable, data: &'input [u8], doc_format: &'input [String8], options: &'input [String8]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
189where
190 Conn: RequestConnection + ?Sized,
191{
192 let request0 = PrintPutDocumentDataRequest {
193 drawable,
194 data: Cow::Borrowed(data),
195 doc_format: Cow::Borrowed(doc_format),
196 options: Cow::Borrowed(options),
197 };
198 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
199 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2]), IoSlice::new(&bytes[3]), IoSlice::new(&bytes[4]), IoSlice::new(&bytes[5]), IoSlice::new(&bytes[6])];
200 assert_eq!(slices.len(), bytes.len());
201 conn.send_request_without_reply(&slices, fds)
202}
203
204pub fn print_get_document_data<Conn>(conn: &Conn, context: Pcontext, max_bytes: u32) -> Result<Cookie<'_, Conn, PrintGetDocumentDataReply>, ConnectionError>
205where
206 Conn: RequestConnection + ?Sized,
207{
208 let request0 = PrintGetDocumentDataRequest {
209 context,
210 max_bytes,
211 };
212 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
213 let slices = [IoSlice::new(&bytes[0])];
214 assert_eq!(slices.len(), bytes.len());
215 conn.send_request_with_reply(&slices, fds)
216}
217
218pub fn print_start_page<Conn>(conn: &Conn, window: xproto::Window) -> Result<VoidCookie<'_, Conn>, ConnectionError>
219where
220 Conn: RequestConnection + ?Sized,
221{
222 let request0 = PrintStartPageRequest {
223 window,
224 };
225 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
226 let slices = [IoSlice::new(&bytes[0])];
227 assert_eq!(slices.len(), bytes.len());
228 conn.send_request_without_reply(&slices, fds)
229}
230
231pub fn print_end_page<Conn>(conn: &Conn, cancel: bool) -> Result<VoidCookie<'_, Conn>, ConnectionError>
232where
233 Conn: RequestConnection + ?Sized,
234{
235 let request0 = PrintEndPageRequest {
236 cancel,
237 };
238 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
239 let slices = [IoSlice::new(&bytes[0])];
240 assert_eq!(slices.len(), bytes.len());
241 conn.send_request_without_reply(&slices, fds)
242}
243
244pub fn print_select_input<Conn>(conn: &Conn, context: Pcontext, event_mask: u32) -> Result<VoidCookie<'_, Conn>, ConnectionError>
245where
246 Conn: RequestConnection + ?Sized,
247{
248 let request0 = PrintSelectInputRequest {
249 context,
250 event_mask,
251 };
252 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
253 let slices = [IoSlice::new(&bytes[0])];
254 assert_eq!(slices.len(), bytes.len());
255 conn.send_request_without_reply(&slices, fds)
256}
257
258pub fn print_input_selected<Conn>(conn: &Conn, context: Pcontext) -> Result<Cookie<'_, Conn, PrintInputSelectedReply>, ConnectionError>
259where
260 Conn: RequestConnection + ?Sized,
261{
262 let request0 = PrintInputSelectedRequest {
263 context,
264 };
265 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
266 let slices = [IoSlice::new(&bytes[0])];
267 assert_eq!(slices.len(), bytes.len());
268 conn.send_request_with_reply(&slices, fds)
269}
270
271pub fn print_get_attributes<Conn>(conn: &Conn, context: Pcontext, pool: u8) -> Result<Cookie<'_, Conn, PrintGetAttributesReply>, ConnectionError>
272where
273 Conn: RequestConnection + ?Sized,
274{
275 let request0 = PrintGetAttributesRequest {
276 context,
277 pool,
278 };
279 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
280 let slices = [IoSlice::new(&bytes[0])];
281 assert_eq!(slices.len(), bytes.len());
282 conn.send_request_with_reply(&slices, fds)
283}
284
285pub fn print_get_one_attributes<'c, 'input, Conn>(conn: &'c Conn, context: Pcontext, pool: u8, name: &'input [String8]) -> Result<Cookie<'c, Conn, PrintGetOneAttributesReply>, ConnectionError>
286where
287 Conn: RequestConnection + ?Sized,
288{
289 let request0 = PrintGetOneAttributesRequest {
290 context,
291 pool,
292 name: Cow::Borrowed(name),
293 };
294 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
295 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
296 assert_eq!(slices.len(), bytes.len());
297 conn.send_request_with_reply(&slices, fds)
298}
299
300pub fn print_set_attributes<'c, 'input, Conn>(conn: &'c Conn, context: Pcontext, string_len: u32, pool: u8, rule: u8, attributes: &'input [String8]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
301where
302 Conn: RequestConnection + ?Sized,
303{
304 let request0 = PrintSetAttributesRequest {
305 context,
306 string_len,
307 pool,
308 rule,
309 attributes: Cow::Borrowed(attributes),
310 };
311 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
312 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
313 assert_eq!(slices.len(), bytes.len());
314 conn.send_request_without_reply(&slices, fds)
315}
316
317pub fn print_get_page_dimensions<Conn>(conn: &Conn, context: Pcontext) -> Result<Cookie<'_, Conn, PrintGetPageDimensionsReply>, ConnectionError>
318where
319 Conn: RequestConnection + ?Sized,
320{
321 let request0 = PrintGetPageDimensionsRequest {
322 context,
323 };
324 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
325 let slices = [IoSlice::new(&bytes[0])];
326 assert_eq!(slices.len(), bytes.len());
327 conn.send_request_with_reply(&slices, fds)
328}
329
330pub fn print_query_screens<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, PrintQueryScreensReply>, ConnectionError>
331where
332 Conn: RequestConnection + ?Sized,
333{
334 let request0 = PrintQueryScreensRequest;
335 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
336 let slices = [IoSlice::new(&bytes[0])];
337 assert_eq!(slices.len(), bytes.len());
338 conn.send_request_with_reply(&slices, fds)
339}
340
341pub fn print_set_image_resolution<Conn>(conn: &Conn, context: Pcontext, image_resolution: u16) -> Result<Cookie<'_, Conn, PrintSetImageResolutionReply>, ConnectionError>
342where
343 Conn: RequestConnection + ?Sized,
344{
345 let request0 = PrintSetImageResolutionRequest {
346 context,
347 image_resolution,
348 };
349 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
350 let slices = [IoSlice::new(&bytes[0])];
351 assert_eq!(slices.len(), bytes.len());
352 conn.send_request_with_reply(&slices, fds)
353}
354
355pub fn print_get_image_resolution<Conn>(conn: &Conn, context: Pcontext) -> Result<Cookie<'_, Conn, PrintGetImageResolutionReply>, ConnectionError>
356where
357 Conn: RequestConnection + ?Sized,
358{
359 let request0 = PrintGetImageResolutionRequest {
360 context,
361 };
362 let (bytes, fds) = request0.serialize(major_opcode(conn)?);
363 let slices = [IoSlice::new(&bytes[0])];
364 assert_eq!(slices.len(), bytes.len());
365 conn.send_request_with_reply(&slices, fds)
366}
367
368pub trait ConnectionExt: RequestConnection {
370 fn xprint_print_query_version(&self) -> Result<Cookie<'_, Self, PrintQueryVersionReply>, ConnectionError>
371 {
372 print_query_version(self)
373 }
374 fn xprint_print_get_printer_list<'c, 'input>(&'c self, printer_name: &'input [String8], locale: &'input [String8]) -> Result<Cookie<'c, Self, PrintGetPrinterListReply>, ConnectionError>
375 {
376 print_get_printer_list(self, printer_name, locale)
377 }
378 fn xprint_print_rehash_printer_list(&self) -> Result<VoidCookie<'_, Self>, ConnectionError>
379 {
380 print_rehash_printer_list(self)
381 }
382 fn xprint_create_context<'c, 'input>(&'c self, context_id: u32, printer_name: &'input [String8], locale: &'input [String8]) -> Result<VoidCookie<'c, Self>, ConnectionError>
383 {
384 create_context(self, context_id, printer_name, locale)
385 }
386 fn xprint_print_set_context(&self, context: u32) -> Result<VoidCookie<'_, Self>, ConnectionError>
387 {
388 print_set_context(self, context)
389 }
390 fn xprint_print_get_context(&self) -> Result<Cookie<'_, Self, PrintGetContextReply>, ConnectionError>
391 {
392 print_get_context(self)
393 }
394 fn xprint_print_destroy_context(&self, context: u32) -> Result<VoidCookie<'_, Self>, ConnectionError>
395 {
396 print_destroy_context(self, context)
397 }
398 fn xprint_print_get_screen_of_context(&self) -> Result<Cookie<'_, Self, PrintGetScreenOfContextReply>, ConnectionError>
399 {
400 print_get_screen_of_context(self)
401 }
402 fn xprint_print_start_job(&self, output_mode: u8) -> Result<VoidCookie<'_, Self>, ConnectionError>
403 {
404 print_start_job(self, output_mode)
405 }
406 fn xprint_print_end_job(&self, cancel: bool) -> Result<VoidCookie<'_, Self>, ConnectionError>
407 {
408 print_end_job(self, cancel)
409 }
410 fn xprint_print_start_doc(&self, driver_mode: u8) -> Result<VoidCookie<'_, Self>, ConnectionError>
411 {
412 print_start_doc(self, driver_mode)
413 }
414 fn xprint_print_end_doc(&self, cancel: bool) -> Result<VoidCookie<'_, Self>, ConnectionError>
415 {
416 print_end_doc(self, cancel)
417 }
418 fn xprint_print_put_document_data<'c, 'input>(&'c self, drawable: xproto::Drawable, data: &'input [u8], doc_format: &'input [String8], options: &'input [String8]) -> Result<VoidCookie<'c, Self>, ConnectionError>
419 {
420 print_put_document_data(self, drawable, data, doc_format, options)
421 }
422 fn xprint_print_get_document_data(&self, context: Pcontext, max_bytes: u32) -> Result<Cookie<'_, Self, PrintGetDocumentDataReply>, ConnectionError>
423 {
424 print_get_document_data(self, context, max_bytes)
425 }
426 fn xprint_print_start_page(&self, window: xproto::Window) -> Result<VoidCookie<'_, Self>, ConnectionError>
427 {
428 print_start_page(self, window)
429 }
430 fn xprint_print_end_page(&self, cancel: bool) -> Result<VoidCookie<'_, Self>, ConnectionError>
431 {
432 print_end_page(self, cancel)
433 }
434 fn xprint_print_select_input(&self, context: Pcontext, event_mask: u32) -> Result<VoidCookie<'_, Self>, ConnectionError>
435 {
436 print_select_input(self, context, event_mask)
437 }
438 fn xprint_print_input_selected(&self, context: Pcontext) -> Result<Cookie<'_, Self, PrintInputSelectedReply>, ConnectionError>
439 {
440 print_input_selected(self, context)
441 }
442 fn xprint_print_get_attributes(&self, context: Pcontext, pool: u8) -> Result<Cookie<'_, Self, PrintGetAttributesReply>, ConnectionError>
443 {
444 print_get_attributes(self, context, pool)
445 }
446 fn xprint_print_get_one_attributes<'c, 'input>(&'c self, context: Pcontext, pool: u8, name: &'input [String8]) -> Result<Cookie<'c, Self, PrintGetOneAttributesReply>, ConnectionError>
447 {
448 print_get_one_attributes(self, context, pool, name)
449 }
450 fn xprint_print_set_attributes<'c, 'input>(&'c self, context: Pcontext, string_len: u32, pool: u8, rule: u8, attributes: &'input [String8]) -> Result<VoidCookie<'c, Self>, ConnectionError>
451 {
452 print_set_attributes(self, context, string_len, pool, rule, attributes)
453 }
454 fn xprint_print_get_page_dimensions(&self, context: Pcontext) -> Result<Cookie<'_, Self, PrintGetPageDimensionsReply>, ConnectionError>
455 {
456 print_get_page_dimensions(self, context)
457 }
458 fn xprint_print_query_screens(&self) -> Result<Cookie<'_, Self, PrintQueryScreensReply>, ConnectionError>
459 {
460 print_query_screens(self)
461 }
462 fn xprint_print_set_image_resolution(&self, context: Pcontext, image_resolution: u16) -> Result<Cookie<'_, Self, PrintSetImageResolutionReply>, ConnectionError>
463 {
464 print_set_image_resolution(self, context, image_resolution)
465 }
466 fn xprint_print_get_image_resolution(&self, context: Pcontext) -> Result<Cookie<'_, Self, PrintGetImageResolutionReply>, ConnectionError>
467 {
468 print_get_image_resolution(self, context)
469 }
470}
471
472impl<C: RequestConnection + ?Sized> ConnectionExt for C {}