makepad_widgets/
scroll_shadow.rs

1use crate::makepad_draw::*;
2
3live_design!{
4    DrawScrollShadowBase = {{DrawScrollShadow}} {}
5}
6
7#[derive(Live, LiveHook)]
8#[repr(C)]
9pub struct DrawScrollShadow {
10    #[live] shadow_size: f32,
11    #[deref] draw_super: DrawQuad,
12    #[live] shadow_is_top: f32,
13    #[live] scroll: f32,
14}
15
16impl DrawScrollShadow {
17    pub fn draw(&mut self, cx: &mut Cx2d, offset: DVec2) {
18        let shadow_size = self.shadow_size as f64;
19        let rect = cx.turtle().rect();
20        let scroll = cx.turtle().scroll();
21        
22        self.shadow_is_top = 0.0;
23        self.scroll = scroll.x as f32;
24        self.draw_abs(cx, Rect {
25            pos: rect.pos + dvec2(offset.x, 0.0) + scroll,
26            size: dvec2(shadow_size, rect.size.y)
27        });
28        
29        self.shadow_is_top = 1.0;
30        self.scroll = scroll.y  as f32;
31        self.draw_abs(cx, Rect {
32            pos: rect.pos + dvec2(0., offset.y) + scroll,
33            size: dvec2(rect.size.x, shadow_size)
34        });
35    }
36}