1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type Extents = [[f32; 2]; 2];
14
15pub type Mat3 = [f32; 9];
18
19pub type Point2 = [f32; 2];
22
23pub type RelativeMotion = [f32; 2];
27
28pub type RelativeMotionRange = [fidl_fuchsia_input_report__common::Axis; 2];
31
32pub const MAX_INJECT: u32 = 128;
33
34#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
36#[repr(u32)]
37pub enum DeviceType {
38 Touch = 1,
40 Mouse = 2,
42}
43
44impl DeviceType {
45 #[inline]
46 pub fn from_primitive(prim: u32) -> Option<Self> {
47 match prim {
48 1 => Some(Self::Touch),
49 2 => Some(Self::Mouse),
50 _ => None,
51 }
52 }
53
54 #[inline]
55 pub const fn into_primitive(self) -> u32 {
56 self as u32
57 }
58}
59
60#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
77#[repr(u32)]
78pub enum DispatchPolicy {
79 ExclusiveTarget = 1,
89 TopHitAndAncestorsInTarget = 2,
108 MouseHoverAndLatchInTarget = 3,
121}
122
123impl DispatchPolicy {
124 #[inline]
125 pub fn from_primitive(prim: u32) -> Option<Self> {
126 match prim {
127 1 => Some(Self::ExclusiveTarget),
128 2 => Some(Self::TopHitAndAncestorsInTarget),
129 3 => Some(Self::MouseHoverAndLatchInTarget),
130 _ => None,
131 }
132 }
133
134 #[inline]
135 pub const fn into_primitive(self) -> u32 {
136 self as u32
137 }
138}
139
140#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
145#[repr(u32)]
146pub enum EventPhase {
147 Add = 1,
149 Change = 2,
151 Remove = 3,
153 Cancel = 4,
155}
156
157impl EventPhase {
158 #[inline]
159 pub fn from_primitive(prim: u32) -> Option<Self> {
160 match prim {
161 1 => Some(Self::Add),
162 2 => Some(Self::Change),
163 3 => Some(Self::Remove),
164 4 => Some(Self::Cancel),
165 _ => None,
166 }
167 }
168
169 #[inline]
170 pub const fn into_primitive(self) -> u32 {
171 self as u32
172 }
173}
174
175#[derive(Clone, Debug, Default, PartialEq)]
177pub struct PointerSample {
178 pub pointer_id: Option<u32>,
181 pub phase: Option<EventPhase>,
183 pub position_in_viewport: Option<[f32; 2]>,
185 pub scroll_v: Option<i64>,
187 pub scroll_h: Option<i64>,
189 pub pressed_buttons: Option<Vec<u8>>,
191 pub relative_motion: Option<[f32; 2]>,
194 pub scroll_v_physical_pixel: Option<f64>,
197 pub scroll_h_physical_pixel: Option<f64>,
200 pub is_precision_scroll: Option<bool>,
204 #[doc(hidden)]
205 pub __source_breaking: fidl::marker::SourceBreaking,
206}
207
208impl fidl::Persistable for PointerSample {}
209
210#[derive(Clone, Debug, Default, PartialEq)]
243pub struct Viewport {
244 pub extents: Option<[[f32; 2]; 2]>,
247 pub viewport_to_context_transform: Option<[f32; 9]>,
258 #[doc(hidden)]
259 pub __source_breaking: fidl::marker::SourceBreaking,
260}
261
262impl fidl::Persistable for Viewport {}
263
264#[derive(Clone, Debug)]
267pub enum Data {
268 Viewport(Viewport),
272 PointerSample(PointerSample),
275 #[doc(hidden)]
276 __SourceBreaking { unknown_ordinal: u64 },
277}
278
279#[macro_export]
281macro_rules! DataUnknown {
282 () => {
283 _
284 };
285}
286
287impl PartialEq for Data {
289 fn eq(&self, other: &Self) -> bool {
290 match (self, other) {
291 (Self::Viewport(x), Self::Viewport(y)) => *x == *y,
292 (Self::PointerSample(x), Self::PointerSample(y)) => *x == *y,
293 _ => false,
294 }
295 }
296}
297
298impl Data {
299 #[inline]
300 pub fn ordinal(&self) -> u64 {
301 match *self {
302 Self::Viewport(_) => 1,
303 Self::PointerSample(_) => 2,
304 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
305 }
306 }
307
308 #[inline]
309 pub fn unknown_variant_for_testing() -> Self {
310 Self::__SourceBreaking { unknown_ordinal: 0 }
311 }
312
313 #[inline]
314 pub fn is_unknown(&self) -> bool {
315 match self {
316 Self::__SourceBreaking { .. } => true,
317 _ => false,
318 }
319 }
320}
321
322impl fidl::Persistable for Data {}
323
324pub mod device_ordinals {
325 pub const INJECT: u64 = 0x123882bb65bff40;
326 pub const INJECT_EVENTS: u64 = 0x55a9b59dabe61637;
327}
328
329pub mod registry_ordinals {
330 pub const REGISTER: u64 = 0x9f8410fe7326a00;
331}
332
333mod internal {
334 use super::*;
335 unsafe impl fidl::encoding::TypeMarker for DeviceType {
336 type Owned = Self;
337
338 #[inline(always)]
339 fn inline_align(_context: fidl::encoding::Context) -> usize {
340 std::mem::align_of::<u32>()
341 }
342
343 #[inline(always)]
344 fn inline_size(_context: fidl::encoding::Context) -> usize {
345 std::mem::size_of::<u32>()
346 }
347
348 #[inline(always)]
349 fn encode_is_copy() -> bool {
350 true
351 }
352
353 #[inline(always)]
354 fn decode_is_copy() -> bool {
355 false
356 }
357 }
358
359 impl fidl::encoding::ValueTypeMarker for DeviceType {
360 type Borrowed<'a> = Self;
361 #[inline(always)]
362 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
363 *value
364 }
365 }
366
367 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeviceType {
368 #[inline]
369 unsafe fn encode(
370 self,
371 encoder: &mut fidl::encoding::Encoder<'_, D>,
372 offset: usize,
373 _depth: fidl::encoding::Depth,
374 ) -> fidl::Result<()> {
375 encoder.debug_check_bounds::<Self>(offset);
376 encoder.write_num(self.into_primitive(), offset);
377 Ok(())
378 }
379 }
380
381 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceType {
382 #[inline(always)]
383 fn new_empty() -> Self {
384 Self::Touch
385 }
386
387 #[inline]
388 unsafe fn decode(
389 &mut self,
390 decoder: &mut fidl::encoding::Decoder<'_, D>,
391 offset: usize,
392 _depth: fidl::encoding::Depth,
393 ) -> fidl::Result<()> {
394 decoder.debug_check_bounds::<Self>(offset);
395 let prim = decoder.read_num::<u32>(offset);
396
397 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
398 Ok(())
399 }
400 }
401 unsafe impl fidl::encoding::TypeMarker for DispatchPolicy {
402 type Owned = Self;
403
404 #[inline(always)]
405 fn inline_align(_context: fidl::encoding::Context) -> usize {
406 std::mem::align_of::<u32>()
407 }
408
409 #[inline(always)]
410 fn inline_size(_context: fidl::encoding::Context) -> usize {
411 std::mem::size_of::<u32>()
412 }
413
414 #[inline(always)]
415 fn encode_is_copy() -> bool {
416 true
417 }
418
419 #[inline(always)]
420 fn decode_is_copy() -> bool {
421 false
422 }
423 }
424
425 impl fidl::encoding::ValueTypeMarker for DispatchPolicy {
426 type Borrowed<'a> = Self;
427 #[inline(always)]
428 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
429 *value
430 }
431 }
432
433 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DispatchPolicy {
434 #[inline]
435 unsafe fn encode(
436 self,
437 encoder: &mut fidl::encoding::Encoder<'_, D>,
438 offset: usize,
439 _depth: fidl::encoding::Depth,
440 ) -> fidl::Result<()> {
441 encoder.debug_check_bounds::<Self>(offset);
442 encoder.write_num(self.into_primitive(), offset);
443 Ok(())
444 }
445 }
446
447 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatchPolicy {
448 #[inline(always)]
449 fn new_empty() -> Self {
450 Self::ExclusiveTarget
451 }
452
453 #[inline]
454 unsafe fn decode(
455 &mut self,
456 decoder: &mut fidl::encoding::Decoder<'_, D>,
457 offset: usize,
458 _depth: fidl::encoding::Depth,
459 ) -> fidl::Result<()> {
460 decoder.debug_check_bounds::<Self>(offset);
461 let prim = decoder.read_num::<u32>(offset);
462
463 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
464 Ok(())
465 }
466 }
467 unsafe impl fidl::encoding::TypeMarker for EventPhase {
468 type Owned = Self;
469
470 #[inline(always)]
471 fn inline_align(_context: fidl::encoding::Context) -> usize {
472 std::mem::align_of::<u32>()
473 }
474
475 #[inline(always)]
476 fn inline_size(_context: fidl::encoding::Context) -> usize {
477 std::mem::size_of::<u32>()
478 }
479
480 #[inline(always)]
481 fn encode_is_copy() -> bool {
482 true
483 }
484
485 #[inline(always)]
486 fn decode_is_copy() -> bool {
487 false
488 }
489 }
490
491 impl fidl::encoding::ValueTypeMarker for EventPhase {
492 type Borrowed<'a> = Self;
493 #[inline(always)]
494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
495 *value
496 }
497 }
498
499 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EventPhase {
500 #[inline]
501 unsafe fn encode(
502 self,
503 encoder: &mut fidl::encoding::Encoder<'_, D>,
504 offset: usize,
505 _depth: fidl::encoding::Depth,
506 ) -> fidl::Result<()> {
507 encoder.debug_check_bounds::<Self>(offset);
508 encoder.write_num(self.into_primitive(), offset);
509 Ok(())
510 }
511 }
512
513 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventPhase {
514 #[inline(always)]
515 fn new_empty() -> Self {
516 Self::Add
517 }
518
519 #[inline]
520 unsafe fn decode(
521 &mut self,
522 decoder: &mut fidl::encoding::Decoder<'_, D>,
523 offset: usize,
524 _depth: fidl::encoding::Depth,
525 ) -> fidl::Result<()> {
526 decoder.debug_check_bounds::<Self>(offset);
527 let prim = decoder.read_num::<u32>(offset);
528
529 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
530 Ok(())
531 }
532 }
533
534 impl PointerSample {
535 #[inline(always)]
536 fn max_ordinal_present(&self) -> u64 {
537 if let Some(_) = self.is_precision_scroll {
538 return 10;
539 }
540 if let Some(_) = self.scroll_h_physical_pixel {
541 return 9;
542 }
543 if let Some(_) = self.scroll_v_physical_pixel {
544 return 8;
545 }
546 if let Some(_) = self.relative_motion {
547 return 7;
548 }
549 if let Some(_) = self.pressed_buttons {
550 return 6;
551 }
552 if let Some(_) = self.scroll_h {
553 return 5;
554 }
555 if let Some(_) = self.scroll_v {
556 return 4;
557 }
558 if let Some(_) = self.position_in_viewport {
559 return 3;
560 }
561 if let Some(_) = self.phase {
562 return 2;
563 }
564 if let Some(_) = self.pointer_id {
565 return 1;
566 }
567 0
568 }
569 }
570
571 impl fidl::encoding::ValueTypeMarker for PointerSample {
572 type Borrowed<'a> = &'a Self;
573 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
574 value
575 }
576 }
577
578 unsafe impl fidl::encoding::TypeMarker for PointerSample {
579 type Owned = Self;
580
581 #[inline(always)]
582 fn inline_align(_context: fidl::encoding::Context) -> usize {
583 8
584 }
585
586 #[inline(always)]
587 fn inline_size(_context: fidl::encoding::Context) -> usize {
588 16
589 }
590 }
591
592 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PointerSample, D>
593 for &PointerSample
594 {
595 unsafe fn encode(
596 self,
597 encoder: &mut fidl::encoding::Encoder<'_, D>,
598 offset: usize,
599 mut depth: fidl::encoding::Depth,
600 ) -> fidl::Result<()> {
601 encoder.debug_check_bounds::<PointerSample>(offset);
602 let max_ordinal: u64 = self.max_ordinal_present();
604 encoder.write_num(max_ordinal, offset);
605 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
606 if max_ordinal == 0 {
608 return Ok(());
609 }
610 depth.increment()?;
611 let envelope_size = 8;
612 let bytes_len = max_ordinal as usize * envelope_size;
613 #[allow(unused_variables)]
614 let offset = encoder.out_of_line_offset(bytes_len);
615 let mut _prev_end_offset: usize = 0;
616 if 1 > max_ordinal {
617 return Ok(());
618 }
619
620 let cur_offset: usize = (1 - 1) * envelope_size;
623
624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
626
627 fidl::encoding::encode_in_envelope_optional::<u32, D>(
632 self.pointer_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
633 encoder,
634 offset + cur_offset,
635 depth,
636 )?;
637
638 _prev_end_offset = cur_offset + envelope_size;
639 if 2 > max_ordinal {
640 return Ok(());
641 }
642
643 let cur_offset: usize = (2 - 1) * envelope_size;
646
647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
649
650 fidl::encoding::encode_in_envelope_optional::<EventPhase, D>(
655 self.phase.as_ref().map(<EventPhase as fidl::encoding::ValueTypeMarker>::borrow),
656 encoder,
657 offset + cur_offset,
658 depth,
659 )?;
660
661 _prev_end_offset = cur_offset + envelope_size;
662 if 3 > max_ordinal {
663 return Ok(());
664 }
665
666 let cur_offset: usize = (3 - 1) * envelope_size;
669
670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
672
673 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
678 self.position_in_viewport.as_ref().map(
679 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
680 ),
681 encoder,
682 offset + cur_offset,
683 depth,
684 )?;
685
686 _prev_end_offset = cur_offset + envelope_size;
687 if 4 > max_ordinal {
688 return Ok(());
689 }
690
691 let cur_offset: usize = (4 - 1) * envelope_size;
694
695 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
697
698 fidl::encoding::encode_in_envelope_optional::<i64, D>(
703 self.scroll_v.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
704 encoder,
705 offset + cur_offset,
706 depth,
707 )?;
708
709 _prev_end_offset = cur_offset + envelope_size;
710 if 5 > max_ordinal {
711 return Ok(());
712 }
713
714 let cur_offset: usize = (5 - 1) * envelope_size;
717
718 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
720
721 fidl::encoding::encode_in_envelope_optional::<i64, D>(
726 self.scroll_h.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
727 encoder,
728 offset + cur_offset,
729 depth,
730 )?;
731
732 _prev_end_offset = cur_offset + envelope_size;
733 if 6 > max_ordinal {
734 return Ok(());
735 }
736
737 let cur_offset: usize = (6 - 1) * envelope_size;
740
741 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
743
744 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
749 self.pressed_buttons.as_ref().map(
750 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
751 ),
752 encoder,
753 offset + cur_offset,
754 depth,
755 )?;
756
757 _prev_end_offset = cur_offset + envelope_size;
758 if 7 > max_ordinal {
759 return Ok(());
760 }
761
762 let cur_offset: usize = (7 - 1) * envelope_size;
765
766 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
768
769 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
774 self.relative_motion.as_ref().map(
775 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
776 ),
777 encoder,
778 offset + cur_offset,
779 depth,
780 )?;
781
782 _prev_end_offset = cur_offset + envelope_size;
783 if 8 > max_ordinal {
784 return Ok(());
785 }
786
787 let cur_offset: usize = (8 - 1) * envelope_size;
790
791 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
793
794 fidl::encoding::encode_in_envelope_optional::<f64, D>(
799 self.scroll_v_physical_pixel
800 .as_ref()
801 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
802 encoder,
803 offset + cur_offset,
804 depth,
805 )?;
806
807 _prev_end_offset = cur_offset + envelope_size;
808 if 9 > max_ordinal {
809 return Ok(());
810 }
811
812 let cur_offset: usize = (9 - 1) * envelope_size;
815
816 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
818
819 fidl::encoding::encode_in_envelope_optional::<f64, D>(
824 self.scroll_h_physical_pixel
825 .as_ref()
826 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
827 encoder,
828 offset + cur_offset,
829 depth,
830 )?;
831
832 _prev_end_offset = cur_offset + envelope_size;
833 if 10 > max_ordinal {
834 return Ok(());
835 }
836
837 let cur_offset: usize = (10 - 1) * envelope_size;
840
841 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
843
844 fidl::encoding::encode_in_envelope_optional::<bool, D>(
849 self.is_precision_scroll
850 .as_ref()
851 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
852 encoder,
853 offset + cur_offset,
854 depth,
855 )?;
856
857 _prev_end_offset = cur_offset + envelope_size;
858
859 Ok(())
860 }
861 }
862
863 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PointerSample {
864 #[inline(always)]
865 fn new_empty() -> Self {
866 Self::default()
867 }
868
869 unsafe fn decode(
870 &mut self,
871 decoder: &mut fidl::encoding::Decoder<'_, D>,
872 offset: usize,
873 mut depth: fidl::encoding::Depth,
874 ) -> fidl::Result<()> {
875 decoder.debug_check_bounds::<Self>(offset);
876 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
877 None => return Err(fidl::Error::NotNullable),
878 Some(len) => len,
879 };
880 if len == 0 {
882 return Ok(());
883 };
884 depth.increment()?;
885 let envelope_size = 8;
886 let bytes_len = len * envelope_size;
887 let offset = decoder.out_of_line_offset(bytes_len)?;
888 let mut _next_ordinal_to_read = 0;
890 let mut next_offset = offset;
891 let end_offset = offset + bytes_len;
892 _next_ordinal_to_read += 1;
893 if next_offset >= end_offset {
894 return Ok(());
895 }
896
897 while _next_ordinal_to_read < 1 {
899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
900 _next_ordinal_to_read += 1;
901 next_offset += envelope_size;
902 }
903
904 let next_out_of_line = decoder.next_out_of_line();
905 let handles_before = decoder.remaining_handles();
906 if let Some((inlined, num_bytes, num_handles)) =
907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
908 {
909 let member_inline_size =
910 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
911 if inlined != (member_inline_size <= 4) {
912 return Err(fidl::Error::InvalidInlineBitInEnvelope);
913 }
914 let inner_offset;
915 let mut inner_depth = depth.clone();
916 if inlined {
917 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
918 inner_offset = next_offset;
919 } else {
920 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
921 inner_depth.increment()?;
922 }
923 let val_ref = self.pointer_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
924 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
926 {
927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
928 }
929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
931 }
932 }
933
934 next_offset += envelope_size;
935 _next_ordinal_to_read += 1;
936 if next_offset >= end_offset {
937 return Ok(());
938 }
939
940 while _next_ordinal_to_read < 2 {
942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
943 _next_ordinal_to_read += 1;
944 next_offset += envelope_size;
945 }
946
947 let next_out_of_line = decoder.next_out_of_line();
948 let handles_before = decoder.remaining_handles();
949 if let Some((inlined, num_bytes, num_handles)) =
950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
951 {
952 let member_inline_size =
953 <EventPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
954 if inlined != (member_inline_size <= 4) {
955 return Err(fidl::Error::InvalidInlineBitInEnvelope);
956 }
957 let inner_offset;
958 let mut inner_depth = depth.clone();
959 if inlined {
960 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
961 inner_offset = next_offset;
962 } else {
963 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
964 inner_depth.increment()?;
965 }
966 let val_ref = self.phase.get_or_insert_with(|| fidl::new_empty!(EventPhase, D));
967 fidl::decode!(EventPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
969 {
970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
971 }
972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
974 }
975 }
976
977 next_offset += envelope_size;
978 _next_ordinal_to_read += 1;
979 if next_offset >= end_offset {
980 return Ok(());
981 }
982
983 while _next_ordinal_to_read < 3 {
985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
986 _next_ordinal_to_read += 1;
987 next_offset += envelope_size;
988 }
989
990 let next_out_of_line = decoder.next_out_of_line();
991 let handles_before = decoder.remaining_handles();
992 if let Some((inlined, num_bytes, num_handles)) =
993 fidl::encoding::decode_envelope_header(decoder, next_offset)?
994 {
995 let member_inline_size =
996 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
997 decoder.context,
998 );
999 if inlined != (member_inline_size <= 4) {
1000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1001 }
1002 let inner_offset;
1003 let mut inner_depth = depth.clone();
1004 if inlined {
1005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1006 inner_offset = next_offset;
1007 } else {
1008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1009 inner_depth.increment()?;
1010 }
1011 let val_ref = self
1012 .position_in_viewport
1013 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
1014 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1016 {
1017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1018 }
1019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1021 }
1022 }
1023
1024 next_offset += envelope_size;
1025 _next_ordinal_to_read += 1;
1026 if next_offset >= end_offset {
1027 return Ok(());
1028 }
1029
1030 while _next_ordinal_to_read < 4 {
1032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1033 _next_ordinal_to_read += 1;
1034 next_offset += envelope_size;
1035 }
1036
1037 let next_out_of_line = decoder.next_out_of_line();
1038 let handles_before = decoder.remaining_handles();
1039 if let Some((inlined, num_bytes, num_handles)) =
1040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1041 {
1042 let member_inline_size =
1043 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1044 if inlined != (member_inline_size <= 4) {
1045 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1046 }
1047 let inner_offset;
1048 let mut inner_depth = depth.clone();
1049 if inlined {
1050 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1051 inner_offset = next_offset;
1052 } else {
1053 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1054 inner_depth.increment()?;
1055 }
1056 let val_ref = self.scroll_v.get_or_insert_with(|| fidl::new_empty!(i64, D));
1057 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1058 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1059 {
1060 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1061 }
1062 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1063 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1064 }
1065 }
1066
1067 next_offset += envelope_size;
1068 _next_ordinal_to_read += 1;
1069 if next_offset >= end_offset {
1070 return Ok(());
1071 }
1072
1073 while _next_ordinal_to_read < 5 {
1075 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1076 _next_ordinal_to_read += 1;
1077 next_offset += envelope_size;
1078 }
1079
1080 let next_out_of_line = decoder.next_out_of_line();
1081 let handles_before = decoder.remaining_handles();
1082 if let Some((inlined, num_bytes, num_handles)) =
1083 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1084 {
1085 let member_inline_size =
1086 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1087 if inlined != (member_inline_size <= 4) {
1088 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1089 }
1090 let inner_offset;
1091 let mut inner_depth = depth.clone();
1092 if inlined {
1093 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1094 inner_offset = next_offset;
1095 } else {
1096 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1097 inner_depth.increment()?;
1098 }
1099 let val_ref = self.scroll_h.get_or_insert_with(|| fidl::new_empty!(i64, D));
1100 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1101 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1102 {
1103 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1104 }
1105 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1106 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1107 }
1108 }
1109
1110 next_offset += envelope_size;
1111 _next_ordinal_to_read += 1;
1112 if next_offset >= end_offset {
1113 return Ok(());
1114 }
1115
1116 while _next_ordinal_to_read < 6 {
1118 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1119 _next_ordinal_to_read += 1;
1120 next_offset += envelope_size;
1121 }
1122
1123 let next_out_of_line = decoder.next_out_of_line();
1124 let handles_before = decoder.remaining_handles();
1125 if let Some((inlined, num_bytes, num_handles)) =
1126 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1127 {
1128 let member_inline_size =
1129 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1130 decoder.context,
1131 );
1132 if inlined != (member_inline_size <= 4) {
1133 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1134 }
1135 let inner_offset;
1136 let mut inner_depth = depth.clone();
1137 if inlined {
1138 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1139 inner_offset = next_offset;
1140 } else {
1141 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1142 inner_depth.increment()?;
1143 }
1144 let val_ref = self
1145 .pressed_buttons
1146 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1147 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1148 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1149 {
1150 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1151 }
1152 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1153 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1154 }
1155 }
1156
1157 next_offset += envelope_size;
1158 _next_ordinal_to_read += 1;
1159 if next_offset >= end_offset {
1160 return Ok(());
1161 }
1162
1163 while _next_ordinal_to_read < 7 {
1165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1166 _next_ordinal_to_read += 1;
1167 next_offset += envelope_size;
1168 }
1169
1170 let next_out_of_line = decoder.next_out_of_line();
1171 let handles_before = decoder.remaining_handles();
1172 if let Some((inlined, num_bytes, num_handles)) =
1173 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1174 {
1175 let member_inline_size =
1176 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
1177 decoder.context,
1178 );
1179 if inlined != (member_inline_size <= 4) {
1180 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1181 }
1182 let inner_offset;
1183 let mut inner_depth = depth.clone();
1184 if inlined {
1185 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1186 inner_offset = next_offset;
1187 } else {
1188 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1189 inner_depth.increment()?;
1190 }
1191 let val_ref = self
1192 .relative_motion
1193 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
1194 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1195 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1196 {
1197 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1198 }
1199 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1200 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1201 }
1202 }
1203
1204 next_offset += envelope_size;
1205 _next_ordinal_to_read += 1;
1206 if next_offset >= end_offset {
1207 return Ok(());
1208 }
1209
1210 while _next_ordinal_to_read < 8 {
1212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1213 _next_ordinal_to_read += 1;
1214 next_offset += envelope_size;
1215 }
1216
1217 let next_out_of_line = decoder.next_out_of_line();
1218 let handles_before = decoder.remaining_handles();
1219 if let Some((inlined, num_bytes, num_handles)) =
1220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1221 {
1222 let member_inline_size =
1223 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1224 if inlined != (member_inline_size <= 4) {
1225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1226 }
1227 let inner_offset;
1228 let mut inner_depth = depth.clone();
1229 if inlined {
1230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1231 inner_offset = next_offset;
1232 } else {
1233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1234 inner_depth.increment()?;
1235 }
1236 let val_ref =
1237 self.scroll_v_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
1238 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
1239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1240 {
1241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1242 }
1243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1245 }
1246 }
1247
1248 next_offset += envelope_size;
1249 _next_ordinal_to_read += 1;
1250 if next_offset >= end_offset {
1251 return Ok(());
1252 }
1253
1254 while _next_ordinal_to_read < 9 {
1256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1257 _next_ordinal_to_read += 1;
1258 next_offset += envelope_size;
1259 }
1260
1261 let next_out_of_line = decoder.next_out_of_line();
1262 let handles_before = decoder.remaining_handles();
1263 if let Some((inlined, num_bytes, num_handles)) =
1264 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1265 {
1266 let member_inline_size =
1267 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1268 if inlined != (member_inline_size <= 4) {
1269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1270 }
1271 let inner_offset;
1272 let mut inner_depth = depth.clone();
1273 if inlined {
1274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1275 inner_offset = next_offset;
1276 } else {
1277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1278 inner_depth.increment()?;
1279 }
1280 let val_ref =
1281 self.scroll_h_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
1282 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
1283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1284 {
1285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1286 }
1287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1289 }
1290 }
1291
1292 next_offset += envelope_size;
1293 _next_ordinal_to_read += 1;
1294 if next_offset >= end_offset {
1295 return Ok(());
1296 }
1297
1298 while _next_ordinal_to_read < 10 {
1300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1301 _next_ordinal_to_read += 1;
1302 next_offset += envelope_size;
1303 }
1304
1305 let next_out_of_line = decoder.next_out_of_line();
1306 let handles_before = decoder.remaining_handles();
1307 if let Some((inlined, num_bytes, num_handles)) =
1308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1309 {
1310 let member_inline_size =
1311 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1312 if inlined != (member_inline_size <= 4) {
1313 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1314 }
1315 let inner_offset;
1316 let mut inner_depth = depth.clone();
1317 if inlined {
1318 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1319 inner_offset = next_offset;
1320 } else {
1321 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1322 inner_depth.increment()?;
1323 }
1324 let val_ref =
1325 self.is_precision_scroll.get_or_insert_with(|| fidl::new_empty!(bool, D));
1326 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1328 {
1329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1330 }
1331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1333 }
1334 }
1335
1336 next_offset += envelope_size;
1337
1338 while next_offset < end_offset {
1340 _next_ordinal_to_read += 1;
1341 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1342 next_offset += envelope_size;
1343 }
1344
1345 Ok(())
1346 }
1347 }
1348
1349 impl Viewport {
1350 #[inline(always)]
1351 fn max_ordinal_present(&self) -> u64 {
1352 if let Some(_) = self.viewport_to_context_transform {
1353 return 2;
1354 }
1355 if let Some(_) = self.extents {
1356 return 1;
1357 }
1358 0
1359 }
1360 }
1361
1362 impl fidl::encoding::ValueTypeMarker for Viewport {
1363 type Borrowed<'a> = &'a Self;
1364 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1365 value
1366 }
1367 }
1368
1369 unsafe impl fidl::encoding::TypeMarker for Viewport {
1370 type Owned = Self;
1371
1372 #[inline(always)]
1373 fn inline_align(_context: fidl::encoding::Context) -> usize {
1374 8
1375 }
1376
1377 #[inline(always)]
1378 fn inline_size(_context: fidl::encoding::Context) -> usize {
1379 16
1380 }
1381 }
1382
1383 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Viewport, D> for &Viewport {
1384 unsafe fn encode(
1385 self,
1386 encoder: &mut fidl::encoding::Encoder<'_, D>,
1387 offset: usize,
1388 mut depth: fidl::encoding::Depth,
1389 ) -> fidl::Result<()> {
1390 encoder.debug_check_bounds::<Viewport>(offset);
1391 let max_ordinal: u64 = self.max_ordinal_present();
1393 encoder.write_num(max_ordinal, offset);
1394 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1395 if max_ordinal == 0 {
1397 return Ok(());
1398 }
1399 depth.increment()?;
1400 let envelope_size = 8;
1401 let bytes_len = max_ordinal as usize * envelope_size;
1402 #[allow(unused_variables)]
1403 let offset = encoder.out_of_line_offset(bytes_len);
1404 let mut _prev_end_offset: usize = 0;
1405 if 1 > max_ordinal {
1406 return Ok(());
1407 }
1408
1409 let cur_offset: usize = (1 - 1) * envelope_size;
1412
1413 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1415
1416 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>, D>(
1421 self.extents.as_ref().map(<fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2> as fidl::encoding::ValueTypeMarker>::borrow),
1422 encoder, offset + cur_offset, depth
1423 )?;
1424
1425 _prev_end_offset = cur_offset + envelope_size;
1426 if 2 > max_ordinal {
1427 return Ok(());
1428 }
1429
1430 let cur_offset: usize = (2 - 1) * envelope_size;
1433
1434 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1436
1437 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 9>, D>(
1442 self.viewport_to_context_transform.as_ref().map(
1443 <fidl::encoding::Array<f32, 9> as fidl::encoding::ValueTypeMarker>::borrow,
1444 ),
1445 encoder,
1446 offset + cur_offset,
1447 depth,
1448 )?;
1449
1450 _prev_end_offset = cur_offset + envelope_size;
1451
1452 Ok(())
1453 }
1454 }
1455
1456 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Viewport {
1457 #[inline(always)]
1458 fn new_empty() -> Self {
1459 Self::default()
1460 }
1461
1462 unsafe fn decode(
1463 &mut self,
1464 decoder: &mut fidl::encoding::Decoder<'_, D>,
1465 offset: usize,
1466 mut depth: fidl::encoding::Depth,
1467 ) -> fidl::Result<()> {
1468 decoder.debug_check_bounds::<Self>(offset);
1469 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1470 None => return Err(fidl::Error::NotNullable),
1471 Some(len) => len,
1472 };
1473 if len == 0 {
1475 return Ok(());
1476 };
1477 depth.increment()?;
1478 let envelope_size = 8;
1479 let bytes_len = len * envelope_size;
1480 let offset = decoder.out_of_line_offset(bytes_len)?;
1481 let mut _next_ordinal_to_read = 0;
1483 let mut next_offset = offset;
1484 let end_offset = offset + bytes_len;
1485 _next_ordinal_to_read += 1;
1486 if next_offset >= end_offset {
1487 return Ok(());
1488 }
1489
1490 while _next_ordinal_to_read < 1 {
1492 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1493 _next_ordinal_to_read += 1;
1494 next_offset += envelope_size;
1495 }
1496
1497 let next_out_of_line = decoder.next_out_of_line();
1498 let handles_before = decoder.remaining_handles();
1499 if let Some((inlined, num_bytes, num_handles)) =
1500 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1501 {
1502 let member_inline_size = <fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1503 if inlined != (member_inline_size <= 4) {
1504 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1505 }
1506 let inner_offset;
1507 let mut inner_depth = depth.clone();
1508 if inlined {
1509 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1510 inner_offset = next_offset;
1511 } else {
1512 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1513 inner_depth.increment()?;
1514 }
1515 let val_ref = self.extents.get_or_insert_with(|| {
1516 fidl::new_empty!(fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>, D)
1517 });
1518 fidl::decode!(
1519 fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>,
1520 D,
1521 val_ref,
1522 decoder,
1523 inner_offset,
1524 inner_depth
1525 )?;
1526 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1527 {
1528 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1529 }
1530 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1531 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1532 }
1533 }
1534
1535 next_offset += envelope_size;
1536 _next_ordinal_to_read += 1;
1537 if next_offset >= end_offset {
1538 return Ok(());
1539 }
1540
1541 while _next_ordinal_to_read < 2 {
1543 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1544 _next_ordinal_to_read += 1;
1545 next_offset += envelope_size;
1546 }
1547
1548 let next_out_of_line = decoder.next_out_of_line();
1549 let handles_before = decoder.remaining_handles();
1550 if let Some((inlined, num_bytes, num_handles)) =
1551 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1552 {
1553 let member_inline_size =
1554 <fidl::encoding::Array<f32, 9> as fidl::encoding::TypeMarker>::inline_size(
1555 decoder.context,
1556 );
1557 if inlined != (member_inline_size <= 4) {
1558 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1559 }
1560 let inner_offset;
1561 let mut inner_depth = depth.clone();
1562 if inlined {
1563 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1564 inner_offset = next_offset;
1565 } else {
1566 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1567 inner_depth.increment()?;
1568 }
1569 let val_ref = self
1570 .viewport_to_context_transform
1571 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 9>, D));
1572 fidl::decode!(fidl::encoding::Array<f32, 9>, D, val_ref, decoder, inner_offset, inner_depth)?;
1573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1574 {
1575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1576 }
1577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1579 }
1580 }
1581
1582 next_offset += envelope_size;
1583
1584 while next_offset < end_offset {
1586 _next_ordinal_to_read += 1;
1587 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1588 next_offset += envelope_size;
1589 }
1590
1591 Ok(())
1592 }
1593 }
1594
1595 impl fidl::encoding::ValueTypeMarker for Data {
1596 type Borrowed<'a> = &'a Self;
1597 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1598 value
1599 }
1600 }
1601
1602 unsafe impl fidl::encoding::TypeMarker for Data {
1603 type Owned = Self;
1604
1605 #[inline(always)]
1606 fn inline_align(_context: fidl::encoding::Context) -> usize {
1607 8
1608 }
1609
1610 #[inline(always)]
1611 fn inline_size(_context: fidl::encoding::Context) -> usize {
1612 16
1613 }
1614 }
1615
1616 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Data, D> for &Data {
1617 #[inline]
1618 unsafe fn encode(
1619 self,
1620 encoder: &mut fidl::encoding::Encoder<'_, D>,
1621 offset: usize,
1622 _depth: fidl::encoding::Depth,
1623 ) -> fidl::Result<()> {
1624 encoder.debug_check_bounds::<Data>(offset);
1625 encoder.write_num::<u64>(self.ordinal(), offset);
1626 match self {
1627 Data::Viewport(ref val) => fidl::encoding::encode_in_envelope::<Viewport, D>(
1628 <Viewport as fidl::encoding::ValueTypeMarker>::borrow(val),
1629 encoder,
1630 offset + 8,
1631 _depth,
1632 ),
1633 Data::PointerSample(ref val) => {
1634 fidl::encoding::encode_in_envelope::<PointerSample, D>(
1635 <PointerSample as fidl::encoding::ValueTypeMarker>::borrow(val),
1636 encoder,
1637 offset + 8,
1638 _depth,
1639 )
1640 }
1641 Data::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
1642 }
1643 }
1644 }
1645
1646 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Data {
1647 #[inline(always)]
1648 fn new_empty() -> Self {
1649 Self::__SourceBreaking { unknown_ordinal: 0 }
1650 }
1651
1652 #[inline]
1653 unsafe fn decode(
1654 &mut self,
1655 decoder: &mut fidl::encoding::Decoder<'_, D>,
1656 offset: usize,
1657 mut depth: fidl::encoding::Depth,
1658 ) -> fidl::Result<()> {
1659 decoder.debug_check_bounds::<Self>(offset);
1660 #[allow(unused_variables)]
1661 let next_out_of_line = decoder.next_out_of_line();
1662 let handles_before = decoder.remaining_handles();
1663 let (ordinal, inlined, num_bytes, num_handles) =
1664 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1665
1666 let member_inline_size = match ordinal {
1667 1 => <Viewport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1668 2 => <PointerSample as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1669 0 => return Err(fidl::Error::UnknownUnionTag),
1670 _ => num_bytes as usize,
1671 };
1672
1673 if inlined != (member_inline_size <= 4) {
1674 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1675 }
1676 let _inner_offset;
1677 if inlined {
1678 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1679 _inner_offset = offset + 8;
1680 } else {
1681 depth.increment()?;
1682 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1683 }
1684 match ordinal {
1685 1 => {
1686 #[allow(irrefutable_let_patterns)]
1687 if let Data::Viewport(_) = self {
1688 } else {
1690 *self = Data::Viewport(fidl::new_empty!(Viewport, D));
1692 }
1693 #[allow(irrefutable_let_patterns)]
1694 if let Data::Viewport(ref mut val) = self {
1695 fidl::decode!(Viewport, D, val, decoder, _inner_offset, depth)?;
1696 } else {
1697 unreachable!()
1698 }
1699 }
1700 2 => {
1701 #[allow(irrefutable_let_patterns)]
1702 if let Data::PointerSample(_) = self {
1703 } else {
1705 *self = Data::PointerSample(fidl::new_empty!(PointerSample, D));
1707 }
1708 #[allow(irrefutable_let_patterns)]
1709 if let Data::PointerSample(ref mut val) = self {
1710 fidl::decode!(PointerSample, D, val, decoder, _inner_offset, depth)?;
1711 } else {
1712 unreachable!()
1713 }
1714 }
1715 #[allow(deprecated)]
1716 ordinal => {
1717 for _ in 0..num_handles {
1718 decoder.drop_next_handle()?;
1719 }
1720 *self = Data::__SourceBreaking { unknown_ordinal: ordinal };
1721 }
1722 }
1723 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1724 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1725 }
1726 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1727 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1728 }
1729 Ok(())
1730 }
1731 }
1732}