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}
327
328pub mod registry_ordinals {
329 pub const REGISTER: u64 = 0x9f8410fe7326a00;
330}
331
332mod internal {
333 use super::*;
334 unsafe impl fidl::encoding::TypeMarker for DeviceType {
335 type Owned = Self;
336
337 #[inline(always)]
338 fn inline_align(_context: fidl::encoding::Context) -> usize {
339 std::mem::align_of::<u32>()
340 }
341
342 #[inline(always)]
343 fn inline_size(_context: fidl::encoding::Context) -> usize {
344 std::mem::size_of::<u32>()
345 }
346
347 #[inline(always)]
348 fn encode_is_copy() -> bool {
349 true
350 }
351
352 #[inline(always)]
353 fn decode_is_copy() -> bool {
354 false
355 }
356 }
357
358 impl fidl::encoding::ValueTypeMarker for DeviceType {
359 type Borrowed<'a> = Self;
360 #[inline(always)]
361 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
362 *value
363 }
364 }
365
366 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeviceType {
367 #[inline]
368 unsafe fn encode(
369 self,
370 encoder: &mut fidl::encoding::Encoder<'_, D>,
371 offset: usize,
372 _depth: fidl::encoding::Depth,
373 ) -> fidl::Result<()> {
374 encoder.debug_check_bounds::<Self>(offset);
375 encoder.write_num(self.into_primitive(), offset);
376 Ok(())
377 }
378 }
379
380 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceType {
381 #[inline(always)]
382 fn new_empty() -> Self {
383 Self::Touch
384 }
385
386 #[inline]
387 unsafe fn decode(
388 &mut self,
389 decoder: &mut fidl::encoding::Decoder<'_, D>,
390 offset: usize,
391 _depth: fidl::encoding::Depth,
392 ) -> fidl::Result<()> {
393 decoder.debug_check_bounds::<Self>(offset);
394 let prim = decoder.read_num::<u32>(offset);
395
396 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
397 Ok(())
398 }
399 }
400 unsafe impl fidl::encoding::TypeMarker for DispatchPolicy {
401 type Owned = Self;
402
403 #[inline(always)]
404 fn inline_align(_context: fidl::encoding::Context) -> usize {
405 std::mem::align_of::<u32>()
406 }
407
408 #[inline(always)]
409 fn inline_size(_context: fidl::encoding::Context) -> usize {
410 std::mem::size_of::<u32>()
411 }
412
413 #[inline(always)]
414 fn encode_is_copy() -> bool {
415 true
416 }
417
418 #[inline(always)]
419 fn decode_is_copy() -> bool {
420 false
421 }
422 }
423
424 impl fidl::encoding::ValueTypeMarker for DispatchPolicy {
425 type Borrowed<'a> = Self;
426 #[inline(always)]
427 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
428 *value
429 }
430 }
431
432 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DispatchPolicy {
433 #[inline]
434 unsafe fn encode(
435 self,
436 encoder: &mut fidl::encoding::Encoder<'_, D>,
437 offset: usize,
438 _depth: fidl::encoding::Depth,
439 ) -> fidl::Result<()> {
440 encoder.debug_check_bounds::<Self>(offset);
441 encoder.write_num(self.into_primitive(), offset);
442 Ok(())
443 }
444 }
445
446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatchPolicy {
447 #[inline(always)]
448 fn new_empty() -> Self {
449 Self::ExclusiveTarget
450 }
451
452 #[inline]
453 unsafe fn decode(
454 &mut self,
455 decoder: &mut fidl::encoding::Decoder<'_, D>,
456 offset: usize,
457 _depth: fidl::encoding::Depth,
458 ) -> fidl::Result<()> {
459 decoder.debug_check_bounds::<Self>(offset);
460 let prim = decoder.read_num::<u32>(offset);
461
462 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
463 Ok(())
464 }
465 }
466 unsafe impl fidl::encoding::TypeMarker for EventPhase {
467 type Owned = Self;
468
469 #[inline(always)]
470 fn inline_align(_context: fidl::encoding::Context) -> usize {
471 std::mem::align_of::<u32>()
472 }
473
474 #[inline(always)]
475 fn inline_size(_context: fidl::encoding::Context) -> usize {
476 std::mem::size_of::<u32>()
477 }
478
479 #[inline(always)]
480 fn encode_is_copy() -> bool {
481 true
482 }
483
484 #[inline(always)]
485 fn decode_is_copy() -> bool {
486 false
487 }
488 }
489
490 impl fidl::encoding::ValueTypeMarker for EventPhase {
491 type Borrowed<'a> = Self;
492 #[inline(always)]
493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
494 *value
495 }
496 }
497
498 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EventPhase {
499 #[inline]
500 unsafe fn encode(
501 self,
502 encoder: &mut fidl::encoding::Encoder<'_, D>,
503 offset: usize,
504 _depth: fidl::encoding::Depth,
505 ) -> fidl::Result<()> {
506 encoder.debug_check_bounds::<Self>(offset);
507 encoder.write_num(self.into_primitive(), offset);
508 Ok(())
509 }
510 }
511
512 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventPhase {
513 #[inline(always)]
514 fn new_empty() -> Self {
515 Self::Add
516 }
517
518 #[inline]
519 unsafe fn decode(
520 &mut self,
521 decoder: &mut fidl::encoding::Decoder<'_, D>,
522 offset: usize,
523 _depth: fidl::encoding::Depth,
524 ) -> fidl::Result<()> {
525 decoder.debug_check_bounds::<Self>(offset);
526 let prim = decoder.read_num::<u32>(offset);
527
528 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
529 Ok(())
530 }
531 }
532
533 impl PointerSample {
534 #[inline(always)]
535 fn max_ordinal_present(&self) -> u64 {
536 if let Some(_) = self.is_precision_scroll {
537 return 10;
538 }
539 if let Some(_) = self.scroll_h_physical_pixel {
540 return 9;
541 }
542 if let Some(_) = self.scroll_v_physical_pixel {
543 return 8;
544 }
545 if let Some(_) = self.relative_motion {
546 return 7;
547 }
548 if let Some(_) = self.pressed_buttons {
549 return 6;
550 }
551 if let Some(_) = self.scroll_h {
552 return 5;
553 }
554 if let Some(_) = self.scroll_v {
555 return 4;
556 }
557 if let Some(_) = self.position_in_viewport {
558 return 3;
559 }
560 if let Some(_) = self.phase {
561 return 2;
562 }
563 if let Some(_) = self.pointer_id {
564 return 1;
565 }
566 0
567 }
568 }
569
570 impl fidl::encoding::ValueTypeMarker for PointerSample {
571 type Borrowed<'a> = &'a Self;
572 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
573 value
574 }
575 }
576
577 unsafe impl fidl::encoding::TypeMarker for PointerSample {
578 type Owned = Self;
579
580 #[inline(always)]
581 fn inline_align(_context: fidl::encoding::Context) -> usize {
582 8
583 }
584
585 #[inline(always)]
586 fn inline_size(_context: fidl::encoding::Context) -> usize {
587 16
588 }
589 }
590
591 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PointerSample, D>
592 for &PointerSample
593 {
594 unsafe fn encode(
595 self,
596 encoder: &mut fidl::encoding::Encoder<'_, D>,
597 offset: usize,
598 mut depth: fidl::encoding::Depth,
599 ) -> fidl::Result<()> {
600 encoder.debug_check_bounds::<PointerSample>(offset);
601 let max_ordinal: u64 = self.max_ordinal_present();
603 encoder.write_num(max_ordinal, offset);
604 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
605 if max_ordinal == 0 {
607 return Ok(());
608 }
609 depth.increment()?;
610 let envelope_size = 8;
611 let bytes_len = max_ordinal as usize * envelope_size;
612 #[allow(unused_variables)]
613 let offset = encoder.out_of_line_offset(bytes_len);
614 let mut _prev_end_offset: usize = 0;
615 if 1 > max_ordinal {
616 return Ok(());
617 }
618
619 let cur_offset: usize = (1 - 1) * envelope_size;
622
623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
625
626 fidl::encoding::encode_in_envelope_optional::<u32, D>(
631 self.pointer_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
632 encoder,
633 offset + cur_offset,
634 depth,
635 )?;
636
637 _prev_end_offset = cur_offset + envelope_size;
638 if 2 > max_ordinal {
639 return Ok(());
640 }
641
642 let cur_offset: usize = (2 - 1) * envelope_size;
645
646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
648
649 fidl::encoding::encode_in_envelope_optional::<EventPhase, D>(
654 self.phase.as_ref().map(<EventPhase as fidl::encoding::ValueTypeMarker>::borrow),
655 encoder,
656 offset + cur_offset,
657 depth,
658 )?;
659
660 _prev_end_offset = cur_offset + envelope_size;
661 if 3 > max_ordinal {
662 return Ok(());
663 }
664
665 let cur_offset: usize = (3 - 1) * envelope_size;
668
669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
671
672 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
677 self.position_in_viewport.as_ref().map(
678 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
679 ),
680 encoder,
681 offset + cur_offset,
682 depth,
683 )?;
684
685 _prev_end_offset = cur_offset + envelope_size;
686 if 4 > max_ordinal {
687 return Ok(());
688 }
689
690 let cur_offset: usize = (4 - 1) * envelope_size;
693
694 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
696
697 fidl::encoding::encode_in_envelope_optional::<i64, D>(
702 self.scroll_v.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
703 encoder,
704 offset + cur_offset,
705 depth,
706 )?;
707
708 _prev_end_offset = cur_offset + envelope_size;
709 if 5 > max_ordinal {
710 return Ok(());
711 }
712
713 let cur_offset: usize = (5 - 1) * envelope_size;
716
717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
719
720 fidl::encoding::encode_in_envelope_optional::<i64, D>(
725 self.scroll_h.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
726 encoder,
727 offset + cur_offset,
728 depth,
729 )?;
730
731 _prev_end_offset = cur_offset + envelope_size;
732 if 6 > max_ordinal {
733 return Ok(());
734 }
735
736 let cur_offset: usize = (6 - 1) * envelope_size;
739
740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
742
743 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
748 self.pressed_buttons.as_ref().map(
749 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
750 ),
751 encoder,
752 offset + cur_offset,
753 depth,
754 )?;
755
756 _prev_end_offset = cur_offset + envelope_size;
757 if 7 > max_ordinal {
758 return Ok(());
759 }
760
761 let cur_offset: usize = (7 - 1) * envelope_size;
764
765 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
767
768 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
773 self.relative_motion.as_ref().map(
774 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
775 ),
776 encoder,
777 offset + cur_offset,
778 depth,
779 )?;
780
781 _prev_end_offset = cur_offset + envelope_size;
782 if 8 > max_ordinal {
783 return Ok(());
784 }
785
786 let cur_offset: usize = (8 - 1) * envelope_size;
789
790 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
792
793 fidl::encoding::encode_in_envelope_optional::<f64, D>(
798 self.scroll_v_physical_pixel
799 .as_ref()
800 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
801 encoder,
802 offset + cur_offset,
803 depth,
804 )?;
805
806 _prev_end_offset = cur_offset + envelope_size;
807 if 9 > max_ordinal {
808 return Ok(());
809 }
810
811 let cur_offset: usize = (9 - 1) * envelope_size;
814
815 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
817
818 fidl::encoding::encode_in_envelope_optional::<f64, D>(
823 self.scroll_h_physical_pixel
824 .as_ref()
825 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
826 encoder,
827 offset + cur_offset,
828 depth,
829 )?;
830
831 _prev_end_offset = cur_offset + envelope_size;
832 if 10 > max_ordinal {
833 return Ok(());
834 }
835
836 let cur_offset: usize = (10 - 1) * envelope_size;
839
840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
842
843 fidl::encoding::encode_in_envelope_optional::<bool, D>(
848 self.is_precision_scroll
849 .as_ref()
850 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
851 encoder,
852 offset + cur_offset,
853 depth,
854 )?;
855
856 _prev_end_offset = cur_offset + envelope_size;
857
858 Ok(())
859 }
860 }
861
862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PointerSample {
863 #[inline(always)]
864 fn new_empty() -> Self {
865 Self::default()
866 }
867
868 unsafe fn decode(
869 &mut self,
870 decoder: &mut fidl::encoding::Decoder<'_, D>,
871 offset: usize,
872 mut depth: fidl::encoding::Depth,
873 ) -> fidl::Result<()> {
874 decoder.debug_check_bounds::<Self>(offset);
875 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
876 None => return Err(fidl::Error::NotNullable),
877 Some(len) => len,
878 };
879 if len == 0 {
881 return Ok(());
882 };
883 depth.increment()?;
884 let envelope_size = 8;
885 let bytes_len = len * envelope_size;
886 let offset = decoder.out_of_line_offset(bytes_len)?;
887 let mut _next_ordinal_to_read = 0;
889 let mut next_offset = offset;
890 let end_offset = offset + bytes_len;
891 _next_ordinal_to_read += 1;
892 if next_offset >= end_offset {
893 return Ok(());
894 }
895
896 while _next_ordinal_to_read < 1 {
898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
899 _next_ordinal_to_read += 1;
900 next_offset += envelope_size;
901 }
902
903 let next_out_of_line = decoder.next_out_of_line();
904 let handles_before = decoder.remaining_handles();
905 if let Some((inlined, num_bytes, num_handles)) =
906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
907 {
908 let member_inline_size =
909 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
910 if inlined != (member_inline_size <= 4) {
911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
912 }
913 let inner_offset;
914 let mut inner_depth = depth.clone();
915 if inlined {
916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
917 inner_offset = next_offset;
918 } else {
919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
920 inner_depth.increment()?;
921 }
922 let val_ref = self.pointer_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
923 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
925 {
926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
927 }
928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
930 }
931 }
932
933 next_offset += envelope_size;
934 _next_ordinal_to_read += 1;
935 if next_offset >= end_offset {
936 return Ok(());
937 }
938
939 while _next_ordinal_to_read < 2 {
941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
942 _next_ordinal_to_read += 1;
943 next_offset += envelope_size;
944 }
945
946 let next_out_of_line = decoder.next_out_of_line();
947 let handles_before = decoder.remaining_handles();
948 if let Some((inlined, num_bytes, num_handles)) =
949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
950 {
951 let member_inline_size =
952 <EventPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
953 if inlined != (member_inline_size <= 4) {
954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
955 }
956 let inner_offset;
957 let mut inner_depth = depth.clone();
958 if inlined {
959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
960 inner_offset = next_offset;
961 } else {
962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
963 inner_depth.increment()?;
964 }
965 let val_ref = self.phase.get_or_insert_with(|| fidl::new_empty!(EventPhase, D));
966 fidl::decode!(EventPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
968 {
969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
970 }
971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
973 }
974 }
975
976 next_offset += envelope_size;
977 _next_ordinal_to_read += 1;
978 if next_offset >= end_offset {
979 return Ok(());
980 }
981
982 while _next_ordinal_to_read < 3 {
984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
985 _next_ordinal_to_read += 1;
986 next_offset += envelope_size;
987 }
988
989 let next_out_of_line = decoder.next_out_of_line();
990 let handles_before = decoder.remaining_handles();
991 if let Some((inlined, num_bytes, num_handles)) =
992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
993 {
994 let member_inline_size =
995 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
996 decoder.context,
997 );
998 if inlined != (member_inline_size <= 4) {
999 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1000 }
1001 let inner_offset;
1002 let mut inner_depth = depth.clone();
1003 if inlined {
1004 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1005 inner_offset = next_offset;
1006 } else {
1007 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1008 inner_depth.increment()?;
1009 }
1010 let val_ref = self
1011 .position_in_viewport
1012 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
1013 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1014 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1015 {
1016 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1017 }
1018 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1019 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1020 }
1021 }
1022
1023 next_offset += envelope_size;
1024 _next_ordinal_to_read += 1;
1025 if next_offset >= end_offset {
1026 return Ok(());
1027 }
1028
1029 while _next_ordinal_to_read < 4 {
1031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1032 _next_ordinal_to_read += 1;
1033 next_offset += envelope_size;
1034 }
1035
1036 let next_out_of_line = decoder.next_out_of_line();
1037 let handles_before = decoder.remaining_handles();
1038 if let Some((inlined, num_bytes, num_handles)) =
1039 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1040 {
1041 let member_inline_size =
1042 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1043 if inlined != (member_inline_size <= 4) {
1044 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1045 }
1046 let inner_offset;
1047 let mut inner_depth = depth.clone();
1048 if inlined {
1049 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1050 inner_offset = next_offset;
1051 } else {
1052 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1053 inner_depth.increment()?;
1054 }
1055 let val_ref = self.scroll_v.get_or_insert_with(|| fidl::new_empty!(i64, D));
1056 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1057 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1058 {
1059 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1060 }
1061 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1062 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1063 }
1064 }
1065
1066 next_offset += envelope_size;
1067 _next_ordinal_to_read += 1;
1068 if next_offset >= end_offset {
1069 return Ok(());
1070 }
1071
1072 while _next_ordinal_to_read < 5 {
1074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1075 _next_ordinal_to_read += 1;
1076 next_offset += envelope_size;
1077 }
1078
1079 let next_out_of_line = decoder.next_out_of_line();
1080 let handles_before = decoder.remaining_handles();
1081 if let Some((inlined, num_bytes, num_handles)) =
1082 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1083 {
1084 let member_inline_size =
1085 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1086 if inlined != (member_inline_size <= 4) {
1087 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1088 }
1089 let inner_offset;
1090 let mut inner_depth = depth.clone();
1091 if inlined {
1092 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1093 inner_offset = next_offset;
1094 } else {
1095 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1096 inner_depth.increment()?;
1097 }
1098 let val_ref = self.scroll_h.get_or_insert_with(|| fidl::new_empty!(i64, D));
1099 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1100 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1101 {
1102 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1103 }
1104 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1105 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1106 }
1107 }
1108
1109 next_offset += envelope_size;
1110 _next_ordinal_to_read += 1;
1111 if next_offset >= end_offset {
1112 return Ok(());
1113 }
1114
1115 while _next_ordinal_to_read < 6 {
1117 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1118 _next_ordinal_to_read += 1;
1119 next_offset += envelope_size;
1120 }
1121
1122 let next_out_of_line = decoder.next_out_of_line();
1123 let handles_before = decoder.remaining_handles();
1124 if let Some((inlined, num_bytes, num_handles)) =
1125 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1126 {
1127 let member_inline_size =
1128 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1129 decoder.context,
1130 );
1131 if inlined != (member_inline_size <= 4) {
1132 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1133 }
1134 let inner_offset;
1135 let mut inner_depth = depth.clone();
1136 if inlined {
1137 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1138 inner_offset = next_offset;
1139 } else {
1140 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1141 inner_depth.increment()?;
1142 }
1143 let val_ref = self
1144 .pressed_buttons
1145 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1146 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1147 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1148 {
1149 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1150 }
1151 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1152 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1153 }
1154 }
1155
1156 next_offset += envelope_size;
1157 _next_ordinal_to_read += 1;
1158 if next_offset >= end_offset {
1159 return Ok(());
1160 }
1161
1162 while _next_ordinal_to_read < 7 {
1164 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1165 _next_ordinal_to_read += 1;
1166 next_offset += envelope_size;
1167 }
1168
1169 let next_out_of_line = decoder.next_out_of_line();
1170 let handles_before = decoder.remaining_handles();
1171 if let Some((inlined, num_bytes, num_handles)) =
1172 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1173 {
1174 let member_inline_size =
1175 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
1176 decoder.context,
1177 );
1178 if inlined != (member_inline_size <= 4) {
1179 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1180 }
1181 let inner_offset;
1182 let mut inner_depth = depth.clone();
1183 if inlined {
1184 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1185 inner_offset = next_offset;
1186 } else {
1187 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1188 inner_depth.increment()?;
1189 }
1190 let val_ref = self
1191 .relative_motion
1192 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
1193 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1194 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1195 {
1196 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1197 }
1198 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1199 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1200 }
1201 }
1202
1203 next_offset += envelope_size;
1204 _next_ordinal_to_read += 1;
1205 if next_offset >= end_offset {
1206 return Ok(());
1207 }
1208
1209 while _next_ordinal_to_read < 8 {
1211 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1212 _next_ordinal_to_read += 1;
1213 next_offset += envelope_size;
1214 }
1215
1216 let next_out_of_line = decoder.next_out_of_line();
1217 let handles_before = decoder.remaining_handles();
1218 if let Some((inlined, num_bytes, num_handles)) =
1219 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1220 {
1221 let member_inline_size =
1222 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1223 if inlined != (member_inline_size <= 4) {
1224 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1225 }
1226 let inner_offset;
1227 let mut inner_depth = depth.clone();
1228 if inlined {
1229 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1230 inner_offset = next_offset;
1231 } else {
1232 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1233 inner_depth.increment()?;
1234 }
1235 let val_ref =
1236 self.scroll_v_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
1237 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
1238 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1239 {
1240 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1241 }
1242 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1243 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1244 }
1245 }
1246
1247 next_offset += envelope_size;
1248 _next_ordinal_to_read += 1;
1249 if next_offset >= end_offset {
1250 return Ok(());
1251 }
1252
1253 while _next_ordinal_to_read < 9 {
1255 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1256 _next_ordinal_to_read += 1;
1257 next_offset += envelope_size;
1258 }
1259
1260 let next_out_of_line = decoder.next_out_of_line();
1261 let handles_before = decoder.remaining_handles();
1262 if let Some((inlined, num_bytes, num_handles)) =
1263 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1264 {
1265 let member_inline_size =
1266 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1267 if inlined != (member_inline_size <= 4) {
1268 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1269 }
1270 let inner_offset;
1271 let mut inner_depth = depth.clone();
1272 if inlined {
1273 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1274 inner_offset = next_offset;
1275 } else {
1276 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1277 inner_depth.increment()?;
1278 }
1279 let val_ref =
1280 self.scroll_h_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
1281 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
1282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1283 {
1284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1285 }
1286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1288 }
1289 }
1290
1291 next_offset += envelope_size;
1292 _next_ordinal_to_read += 1;
1293 if next_offset >= end_offset {
1294 return Ok(());
1295 }
1296
1297 while _next_ordinal_to_read < 10 {
1299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1300 _next_ordinal_to_read += 1;
1301 next_offset += envelope_size;
1302 }
1303
1304 let next_out_of_line = decoder.next_out_of_line();
1305 let handles_before = decoder.remaining_handles();
1306 if let Some((inlined, num_bytes, num_handles)) =
1307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1308 {
1309 let member_inline_size =
1310 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1311 if inlined != (member_inline_size <= 4) {
1312 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1313 }
1314 let inner_offset;
1315 let mut inner_depth = depth.clone();
1316 if inlined {
1317 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1318 inner_offset = next_offset;
1319 } else {
1320 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1321 inner_depth.increment()?;
1322 }
1323 let val_ref =
1324 self.is_precision_scroll.get_or_insert_with(|| fidl::new_empty!(bool, D));
1325 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1326 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1327 {
1328 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1329 }
1330 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1331 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1332 }
1333 }
1334
1335 next_offset += envelope_size;
1336
1337 while next_offset < end_offset {
1339 _next_ordinal_to_read += 1;
1340 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1341 next_offset += envelope_size;
1342 }
1343
1344 Ok(())
1345 }
1346 }
1347
1348 impl Viewport {
1349 #[inline(always)]
1350 fn max_ordinal_present(&self) -> u64 {
1351 if let Some(_) = self.viewport_to_context_transform {
1352 return 2;
1353 }
1354 if let Some(_) = self.extents {
1355 return 1;
1356 }
1357 0
1358 }
1359 }
1360
1361 impl fidl::encoding::ValueTypeMarker for Viewport {
1362 type Borrowed<'a> = &'a Self;
1363 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1364 value
1365 }
1366 }
1367
1368 unsafe impl fidl::encoding::TypeMarker for Viewport {
1369 type Owned = Self;
1370
1371 #[inline(always)]
1372 fn inline_align(_context: fidl::encoding::Context) -> usize {
1373 8
1374 }
1375
1376 #[inline(always)]
1377 fn inline_size(_context: fidl::encoding::Context) -> usize {
1378 16
1379 }
1380 }
1381
1382 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Viewport, D> for &Viewport {
1383 unsafe fn encode(
1384 self,
1385 encoder: &mut fidl::encoding::Encoder<'_, D>,
1386 offset: usize,
1387 mut depth: fidl::encoding::Depth,
1388 ) -> fidl::Result<()> {
1389 encoder.debug_check_bounds::<Viewport>(offset);
1390 let max_ordinal: u64 = self.max_ordinal_present();
1392 encoder.write_num(max_ordinal, offset);
1393 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1394 if max_ordinal == 0 {
1396 return Ok(());
1397 }
1398 depth.increment()?;
1399 let envelope_size = 8;
1400 let bytes_len = max_ordinal as usize * envelope_size;
1401 #[allow(unused_variables)]
1402 let offset = encoder.out_of_line_offset(bytes_len);
1403 let mut _prev_end_offset: usize = 0;
1404 if 1 > max_ordinal {
1405 return Ok(());
1406 }
1407
1408 let cur_offset: usize = (1 - 1) * envelope_size;
1411
1412 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1414
1415 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>, D>(
1420 self.extents.as_ref().map(<fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2> as fidl::encoding::ValueTypeMarker>::borrow),
1421 encoder, offset + cur_offset, depth
1422 )?;
1423
1424 _prev_end_offset = cur_offset + envelope_size;
1425 if 2 > max_ordinal {
1426 return Ok(());
1427 }
1428
1429 let cur_offset: usize = (2 - 1) * envelope_size;
1432
1433 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1435
1436 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 9>, D>(
1441 self.viewport_to_context_transform.as_ref().map(
1442 <fidl::encoding::Array<f32, 9> as fidl::encoding::ValueTypeMarker>::borrow,
1443 ),
1444 encoder,
1445 offset + cur_offset,
1446 depth,
1447 )?;
1448
1449 _prev_end_offset = cur_offset + envelope_size;
1450
1451 Ok(())
1452 }
1453 }
1454
1455 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Viewport {
1456 #[inline(always)]
1457 fn new_empty() -> Self {
1458 Self::default()
1459 }
1460
1461 unsafe fn decode(
1462 &mut self,
1463 decoder: &mut fidl::encoding::Decoder<'_, D>,
1464 offset: usize,
1465 mut depth: fidl::encoding::Depth,
1466 ) -> fidl::Result<()> {
1467 decoder.debug_check_bounds::<Self>(offset);
1468 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1469 None => return Err(fidl::Error::NotNullable),
1470 Some(len) => len,
1471 };
1472 if len == 0 {
1474 return Ok(());
1475 };
1476 depth.increment()?;
1477 let envelope_size = 8;
1478 let bytes_len = len * envelope_size;
1479 let offset = decoder.out_of_line_offset(bytes_len)?;
1480 let mut _next_ordinal_to_read = 0;
1482 let mut next_offset = offset;
1483 let end_offset = offset + bytes_len;
1484 _next_ordinal_to_read += 1;
1485 if next_offset >= end_offset {
1486 return Ok(());
1487 }
1488
1489 while _next_ordinal_to_read < 1 {
1491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1492 _next_ordinal_to_read += 1;
1493 next_offset += envelope_size;
1494 }
1495
1496 let next_out_of_line = decoder.next_out_of_line();
1497 let handles_before = decoder.remaining_handles();
1498 if let Some((inlined, num_bytes, num_handles)) =
1499 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1500 {
1501 let member_inline_size = <fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1502 if inlined != (member_inline_size <= 4) {
1503 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1504 }
1505 let inner_offset;
1506 let mut inner_depth = depth.clone();
1507 if inlined {
1508 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1509 inner_offset = next_offset;
1510 } else {
1511 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1512 inner_depth.increment()?;
1513 }
1514 let val_ref = self.extents.get_or_insert_with(|| {
1515 fidl::new_empty!(fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>, D)
1516 });
1517 fidl::decode!(
1518 fidl::encoding::Array<fidl::encoding::Array<f32, 2>, 2>,
1519 D,
1520 val_ref,
1521 decoder,
1522 inner_offset,
1523 inner_depth
1524 )?;
1525 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1526 {
1527 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1528 }
1529 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1530 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1531 }
1532 }
1533
1534 next_offset += envelope_size;
1535 _next_ordinal_to_read += 1;
1536 if next_offset >= end_offset {
1537 return Ok(());
1538 }
1539
1540 while _next_ordinal_to_read < 2 {
1542 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1543 _next_ordinal_to_read += 1;
1544 next_offset += envelope_size;
1545 }
1546
1547 let next_out_of_line = decoder.next_out_of_line();
1548 let handles_before = decoder.remaining_handles();
1549 if let Some((inlined, num_bytes, num_handles)) =
1550 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1551 {
1552 let member_inline_size =
1553 <fidl::encoding::Array<f32, 9> as fidl::encoding::TypeMarker>::inline_size(
1554 decoder.context,
1555 );
1556 if inlined != (member_inline_size <= 4) {
1557 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1558 }
1559 let inner_offset;
1560 let mut inner_depth = depth.clone();
1561 if inlined {
1562 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1563 inner_offset = next_offset;
1564 } else {
1565 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1566 inner_depth.increment()?;
1567 }
1568 let val_ref = self
1569 .viewport_to_context_transform
1570 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 9>, D));
1571 fidl::decode!(fidl::encoding::Array<f32, 9>, D, val_ref, decoder, inner_offset, inner_depth)?;
1572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1573 {
1574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1575 }
1576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1578 }
1579 }
1580
1581 next_offset += envelope_size;
1582
1583 while next_offset < end_offset {
1585 _next_ordinal_to_read += 1;
1586 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1587 next_offset += envelope_size;
1588 }
1589
1590 Ok(())
1591 }
1592 }
1593
1594 impl fidl::encoding::ValueTypeMarker for Data {
1595 type Borrowed<'a> = &'a Self;
1596 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1597 value
1598 }
1599 }
1600
1601 unsafe impl fidl::encoding::TypeMarker for Data {
1602 type Owned = Self;
1603
1604 #[inline(always)]
1605 fn inline_align(_context: fidl::encoding::Context) -> usize {
1606 8
1607 }
1608
1609 #[inline(always)]
1610 fn inline_size(_context: fidl::encoding::Context) -> usize {
1611 16
1612 }
1613 }
1614
1615 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Data, D> for &Data {
1616 #[inline]
1617 unsafe fn encode(
1618 self,
1619 encoder: &mut fidl::encoding::Encoder<'_, D>,
1620 offset: usize,
1621 _depth: fidl::encoding::Depth,
1622 ) -> fidl::Result<()> {
1623 encoder.debug_check_bounds::<Data>(offset);
1624 encoder.write_num::<u64>(self.ordinal(), offset);
1625 match self {
1626 Data::Viewport(ref val) => fidl::encoding::encode_in_envelope::<Viewport, D>(
1627 <Viewport as fidl::encoding::ValueTypeMarker>::borrow(val),
1628 encoder,
1629 offset + 8,
1630 _depth,
1631 ),
1632 Data::PointerSample(ref val) => {
1633 fidl::encoding::encode_in_envelope::<PointerSample, D>(
1634 <PointerSample as fidl::encoding::ValueTypeMarker>::borrow(val),
1635 encoder,
1636 offset + 8,
1637 _depth,
1638 )
1639 }
1640 Data::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
1641 }
1642 }
1643 }
1644
1645 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Data {
1646 #[inline(always)]
1647 fn new_empty() -> Self {
1648 Self::__SourceBreaking { unknown_ordinal: 0 }
1649 }
1650
1651 #[inline]
1652 unsafe fn decode(
1653 &mut self,
1654 decoder: &mut fidl::encoding::Decoder<'_, D>,
1655 offset: usize,
1656 mut depth: fidl::encoding::Depth,
1657 ) -> fidl::Result<()> {
1658 decoder.debug_check_bounds::<Self>(offset);
1659 #[allow(unused_variables)]
1660 let next_out_of_line = decoder.next_out_of_line();
1661 let handles_before = decoder.remaining_handles();
1662 let (ordinal, inlined, num_bytes, num_handles) =
1663 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1664
1665 let member_inline_size = match ordinal {
1666 1 => <Viewport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1667 2 => <PointerSample as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1668 0 => return Err(fidl::Error::UnknownUnionTag),
1669 _ => num_bytes as usize,
1670 };
1671
1672 if inlined != (member_inline_size <= 4) {
1673 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1674 }
1675 let _inner_offset;
1676 if inlined {
1677 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1678 _inner_offset = offset + 8;
1679 } else {
1680 depth.increment()?;
1681 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1682 }
1683 match ordinal {
1684 1 => {
1685 #[allow(irrefutable_let_patterns)]
1686 if let Data::Viewport(_) = self {
1687 } else {
1689 *self = Data::Viewport(fidl::new_empty!(Viewport, D));
1691 }
1692 #[allow(irrefutable_let_patterns)]
1693 if let Data::Viewport(ref mut val) = self {
1694 fidl::decode!(Viewport, D, val, decoder, _inner_offset, depth)?;
1695 } else {
1696 unreachable!()
1697 }
1698 }
1699 2 => {
1700 #[allow(irrefutable_let_patterns)]
1701 if let Data::PointerSample(_) = self {
1702 } else {
1704 *self = Data::PointerSample(fidl::new_empty!(PointerSample, D));
1706 }
1707 #[allow(irrefutable_let_patterns)]
1708 if let Data::PointerSample(ref mut val) = self {
1709 fidl::decode!(PointerSample, D, val, decoder, _inner_offset, depth)?;
1710 } else {
1711 unreachable!()
1712 }
1713 }
1714 #[allow(deprecated)]
1715 ordinal => {
1716 for _ in 0..num_handles {
1717 decoder.drop_next_handle()?;
1718 }
1719 *self = Data::__SourceBreaking { unknown_ordinal: ordinal };
1720 }
1721 }
1722 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1723 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1724 }
1725 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1726 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1727 }
1728 Ok(())
1729 }
1730 }
1731}