/ examples / window_demo / main.olea
main.olea
 1  extern fn yield_task()
 2  extern fn end_current_task()
 3  
 4  extern fn allocate_memory(usize) usize^
 5  extern fn free_memory(usize^)
 6  
 7  extern fn new_window(usize^, usize^, usize, usize, usize, usize, usize, usize)
 8  extern fn destroy_window(usize^)
 9  extern fn get_next_window_event(usize^, usize^, usize^) usize
10  extern fn get_window_overlay_number(usize^) usize
11  extern fn start_dragging_window(usize^)
12  
13  extern fn draw_str_to_overlay(usize^, usize, usize, usize, usize, usize)
14  
15  extern fn break()
16  
17  fn main(stream usize):
18      let title = allocate_memory(12)
19      title[0] = 1684957527
20      title[1] = 1142978415
21      title[2] = 7302501
22      
23      let string = allocate_memory(16)
24      string[0] = 1819043144
25      string[1] = 1998597231
26      string[2] = 1684828783
27      string[3] = 33
28  
29      let window = allocate_memory(40)
30      new_window(window, title, 256, 256, 64, 64, 0, 0)
31  
32      let color_black = 16777216
33      let color_gray = 2155905152
34      let color_white = 0 - 1
35      draw_str_to_overlay(string, 16, 32, color_black, color_white, get_window_overlay_number(window))
36  
37      let running = 1
38      while running:
39          yield_task()
40          let x = 0
41          let y = 0
42          let event = 0
43          while event + 1:
44              event = get_next_window_event(window, x@, y@)
45              if event:
46                  0
47              else:
48                  if y <= 15:
49                      if x <= 7:
50                          running = 0
51                      else:
52                          start_dragging_window(window)
53      destroy_window(window)
54      free_memory(window)
55      free_memory(string)
56      free_memory(title)