mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
js: fix interfaces behaviour & disable struct deep copy for now (#12333)
This commit is contained in:
@ -2,6 +2,6 @@ Drawing with mouse events using DOM API. Adopted from MDN examples.
|
||||
|
||||
# Compiling
|
||||
```
|
||||
v -b js_browser examples/js_dom_draw/draw.v
|
||||
v -b js_browser examples/js_dom_draw/draw.js.v
|
||||
```
|
||||
Then you can open `index.html` with your favourite browser.
|
||||
|
@ -27,8 +27,14 @@ fn draw_line(context ctx.CanvasRenderingContext2D, x1 int, y1 int, x2 int, y2 in
|
||||
context.close_path()
|
||||
}
|
||||
|
||||
struct DrawState {
|
||||
mut:
|
||||
drawing bool
|
||||
x int
|
||||
y int
|
||||
}
|
||||
|
||||
fn main() {
|
||||
/*
|
||||
document := jsdom.document
|
||||
|
||||
elem := document.get_element_by_id('myButton') ?
|
||||
@ -36,39 +42,36 @@ fn main() {
|
||||
canv := jsdom.get_html_canvas_element(elemc) or { panic('expected canvas') }
|
||||
|
||||
context := get_2dcontext(canv) or { panic('wow') }
|
||||
mut drawing := false
|
||||
mut x := int(0)
|
||||
mut y := int(0)
|
||||
canv.add_event_listener('mousedown', fn [mut drawing, mut x, mut y] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
drawing = true
|
||||
mut state := DrawState{}
|
||||
canv.add_event_listener('mousedown', fn [mut state] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
state.drawing = true
|
||||
if event is jsdom.MouseEvent {
|
||||
x = event.offset_x()
|
||||
y = event.offset_y()
|
||||
state.x = event.offset_x()
|
||||
state.y = event.offset_y()
|
||||
}
|
||||
})
|
||||
|
||||
canv.add_event_listener('mousemove', fn [context, drawing, mut x, mut y] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
if drawing {
|
||||
canv.add_event_listener('mousemove', fn [context, mut state] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
if state.drawing {
|
||||
if event is jsdom.MouseEvent {
|
||||
draw_line(context, x, y, event.offset_x(), event.offset_y())
|
||||
x = event.offset_x()
|
||||
y = event.offset_y()
|
||||
draw_line(context, state.x, state.y, event.offset_x(), event.offset_y())
|
||||
state.x = event.offset_x()
|
||||
state.y = event.offset_y()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
jsdom.window.add_event_listener('mouseup', fn [context, mut drawing, mut x, mut y] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
if drawing {
|
||||
jsdom.window.add_event_listener('mouseup', fn [context, mut state] (_ jsdom.IEventTarget, event jsdom.IEvent) {
|
||||
if state.drawing {
|
||||
if event is jsdom.MouseEvent {
|
||||
draw_line(context, x, y, event.offset_x(), event.offset_y())
|
||||
draw_line(context, state.x, state.y, event.offset_x(), event.offset_y())
|
||||
}
|
||||
x = 0
|
||||
y = 0
|
||||
drawing = false
|
||||
state.x = 0
|
||||
state.y = 0
|
||||
state.drawing = false
|
||||
}
|
||||
})
|
||||
elem.add_event_listener('click', fn [context, canv] (_ jsdom.IEventTarget, _ jsdom.IEvent) {
|
||||
context.clear_rect(0, 0, canv.width(), canv.height())
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
Reference in New Issue
Block a user