fret_ui/tree/debug/
scroll.rs1use 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}