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