makepad_widgets/
web_view.rs

1use crate::{
2    makepad_derive_widget::*,
3    makepad_draw::*,
4    widget::*
5};
6
7live_design!{
8    link widgets;
9    use link::shaders::*;
10    
11    DrawWebView= {{DrawWebView}} {
12        texture image: texture2d
13        opacity: 1.0
14        image_scale: vec2(1.0, 1.0)
15        image_pan: vec2(0.0, 0.0)
16        
17        fn get_color_scale_pan(self, scale: vec2, pan: vec2) -> vec4 {
18            return sample2d(self.image, self.pos * scale + pan).xyzw;
19        }
20                                
21        fn get_color(self) -> vec4 {
22            return self.get_color_scale_pan(self.image_scale, self.image_pan)
23        }
24        
25        fn pixel(self) -> vec4 {
26            let color = self.get_color();
27            return Pal::premul(vec4(color.xyz, color.w * self.opacity))
28        }
29    }
30    
31    pub WebViewBase = {{WebView}} {}
32    pub WebView = <WebViewBase> {
33        width: 100
34        height: 100
35        draw_bg: {}
36    }
37}
38
39#[derive(Live, LiveHook, LiveRegister)]
40#[repr(C)]
41pub struct DrawWebView {
42    #[deref] draw_super: DrawQuad,
43    #[live] pub opacity: f32,
44    #[live] image_scale: Vec2,
45    #[live] image_pan: Vec2,
46}
47
48#[derive(Live, Widget, LiveHook)]
49pub struct WebView {
50    #[walk] walk: Walk,
51    #[redraw] #[live] pub draw_bg: DrawWebView,
52    #[live] url: ArcStringMut,
53    #[rust] _texture: Option<Texture>,
54    #[rust] _web_view_id: Option<LiveId>,
55}
56
57impl Widget for WebView {
58    fn handle_event(&mut self, _cx:&mut Cx, _event:&Event, _scope:&mut Scope){
59    }
60    
61    fn draw_walk(&mut self, cx: &mut Cx2d, _scope: &mut Scope, walk: Walk) -> DrawStep {
62        self.draw_walk(cx, walk)
63    }
64}
65
66impl WebView {
67    pub fn draw_walk(&mut self, cx: &mut Cx2d, walk: Walk) -> DrawStep {
68        self.draw_bg.draw_walk(cx, walk);
69        DrawStep::done()
70    }
71}
72
73impl WebViewRef {
74}
75