1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::ui::{Rect, Size, VoidCallback, Path};
pub trait CustomClipper<T> {
// Register a closure to be notified when it is time to reclip.
fn add_listener(&self, listener: VoidCallback) {
todo!()
}
// Returns an approximation of the clip returned by getClip, as an axis-aligned Rect.
// This is used by the semantics layer to determine whether widgets should be excluded.
fn get_approximate_clip_rect(&self, size: Size) -> Rect {
todo!()
}
// Returns a description of the clip given that the render object being clipped is of the given size.
fn get_clip(&self, size: Size) -> T;
// Remove a previously registered closure from the list of closures that the object notifies when it is time to reclip.
fn remove_listener(&self, listener: VoidCallback) {}
// Called whenever a new instance of the custom clipper delegate class is provided to the clip object,
// or any time that a new clip object is created with a new instance of the custom clipper
// delegate class (which amounts to the same thing, because the latter is implemented in terms of the former).
fn should_reclip(&self, old_clipper: Box<dyn CustomClipper<T>>) -> bool {
todo!()
}
}
#[derive(Default)]
pub struct NoneCustomPathClipper;
impl CustomClipper<Path> for NoneCustomPathClipper {
fn get_clip(&self, size: Size) -> Path {
todo!()
}
}
#[derive(Default)]
pub struct NoneCustomRectClipper;
impl CustomClipper<Rect> for NoneCustomRectClipper {
fn get_clip(&self, size: Size) -> Rect {
todo!()
}
}