Skip to main content

fret_ui/tree/debug/
scroll.rs

1use super::super::*;
2use std::sync::Arc;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum UiDebugScrollHandleChangeKind {
6    Layout,
7    HitTestOnly,
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum UiDebugScrollAxis {
12    X,
13    Y,
14    Both,
15}
16
17#[derive(Debug, Clone)]
18pub struct UiDebugScrollNodeTelemetry {
19    pub node: NodeId,
20    pub element: Option<GlobalElementId>,
21    pub test_id: Option<Arc<str>>,
22    pub axis: UiDebugScrollAxis,
23    pub offset: fret_core::Point,
24    pub viewport: fret_core::Size,
25    pub content: fret_core::Size,
26    pub observed_extent: Option<fret_core::Size>,
27    pub overflow_observation: Option<UiDebugScrollOverflowObservationTelemetry>,
28}
29
30#[derive(Debug, Clone, Copy)]
31pub struct UiDebugScrollOverflowObservationTelemetry {
32    pub extent_may_be_stale: bool,
33    pub barrier_roots: u8,
34    pub wrapper_peel_budget: u8,
35    pub wrapper_peeled_max: u8,
36    pub wrapper_peel_budget_hit: bool,
37    pub immediate_children_visited: u16,
38    pub immediate_children_skipped_absolute: u16,
39    pub deep_scan_enabled: bool,
40    pub deep_scan_budget_nodes: u16,
41    pub deep_scan_visited: u16,
42    pub deep_scan_budget_hit: bool,
43    pub deep_scan_skipped_absolute: u16,
44}
45
46#[derive(Debug, Clone, Copy)]
47pub struct UiDebugScrollbarTelemetry {
48    pub node: NodeId,
49    pub element: Option<GlobalElementId>,
50    pub axis: UiDebugScrollAxis,
51    pub scroll_target: Option<GlobalElementId>,
52    pub offset: fret_core::Point,
53    pub viewport: fret_core::Size,
54    pub content: fret_core::Size,
55    pub track: Rect,
56    pub thumb: Option<Rect>,
57    pub hovered: bool,
58    pub dragging: bool,
59}
60
61#[derive(Debug, Clone)]
62pub struct UiDebugScrollHandleChange {
63    pub handle_key: usize,
64    pub kind: UiDebugScrollHandleChangeKind,
65    pub revision: u64,
66    pub prev_revision: Option<u64>,
67    pub offset: fret_core::Point,
68    pub prev_offset: Option<fret_core::Point>,
69    pub viewport: fret_core::Size,
70    pub prev_viewport: Option<fret_core::Size>,
71    pub content: fret_core::Size,
72    pub prev_content: Option<fret_core::Size>,
73    pub offset_changed: bool,
74    pub viewport_changed: bool,
75    pub content_changed: bool,
76    pub bound_elements: u32,
77    pub bound_nodes_sample: Vec<NodeId>,
78    pub upgraded_to_layout_bindings: u32,
79}