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