makepad_widgets/
scroll_shadow.rs1use 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}