Mercurial > repos > tabletprog
annotate modules/sdl.tp @ 276:9f9cc73bf86d
Added toplevel module which will provide top level symbols for new compiler
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 20 Jul 2014 12:48:37 -0700 |
parents | a923b5b7da3d |
children | 2b58eafa360b |
rev | line source |
---|---|
274
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 _constant <- macro: :name cname { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 quote: (llMessage: name withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 uintret <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 } andCode: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 uintret <- make_object: (addr_of: obj_uint32_meta) NULL 0 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 uintret num!: cname |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 uintret |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 }) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 _subsystems <- #{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 _constant: timer SDL_INIT_TIMER |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 _constant: audio SDL_INIT_AUDIO |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 _constant: video SDL_INIT_VIDEO |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 _constant: joystick SDL_INIT_JOYSTICK |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 _constant: haptic SDL_INIT_HAPTIC |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 _constant: gameController SDL_INIT_GAMECONTROLLER |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 _constant: events SDL_INIT_EVENTS |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 _constant: everything SDL_INIT_EVERYTHING |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 _windowOpts <- #{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 _constant: fullscreen SDL_WINDOW_FULLSCREEN |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 _constant: fullscreenDesktop SDL_WINDOW_FULLSCREEN_DESKTOP |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 _constant: opengl SDL_WINDOW_OPENGL |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 _constant: hidden SDL_WINDOW_HIDDEN |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 _constant: borderless SDL_WINDOW_BORDERLESS |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 _constant: minimized SDL_WINDOW_MINIMIZED |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 _constant: maximized SDL_WINDOW_MAXIMIZED |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 _constant: inputGrabbed SDL_WINDOW_INPUT_GRABBED |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 _constant: allowHighDPI SDL_WINDOW_ALLOW_HIGHDPI |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 _helper <- #{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 llMessage: createWindow withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 title <- string ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 x <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 y <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 w <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 h <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 flags <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 makeWindow <- lambda ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 windowOpaque <- cpointer ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 win <- object ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 } andCode: :title x y w h flags makeWindow { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 windowOpaque <- make_object: (addr_of: cpointer_meta) NULL 0 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 windowOpaque val!: (SDL_CreateWindow: (title data) (x num) (y num) (w num) (h num) (flags num)) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 if: (windowOpaque val) { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 win <- ccall: makeWindow 1 (windowOpaque castTo: (object ptr)) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 mcall: value 2 option win |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 } else: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 mcall: none 1 option |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 #{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 includeSystemHeader: "SDL.h" |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 includeSystemHeader: "stdlib.h" |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 llMessage: init withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 flags <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 intret <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 } andCode: :flags { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 intret num!: (SDL_Init: (flags num)) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 if: (intret num) { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 atexit: SDL_Quit |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 intret |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 llMessage: initSubSystem withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 flags <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 intret <- obj_int32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 } andCode: :flags { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 intret num!: (SDL_InitSubSystem: (flags num)) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 intret |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 llMessage: quitSubSystem withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
83 flags <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
84 } andCode: :flags { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 SDL_QuitSubSystem: (flags num) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 true |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
87 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
88 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
89 createWindow:pos:size:flags <- :title :x y :w h :flags{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
90 _helper createWindow: title x y w h flags :ptr { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
91 #{ |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
92 includeSystemHeader: "SDL.h" |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 llProperty: window withType: (SDL_Window ptr) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
94 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
95 llMessage: _ptr_init withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
96 ptr <- cpointer ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
97 } andCode: :ptr { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
98 window <- ptr val |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
99 self |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
101 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
102 llMessage: destroy withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 } andCode: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
104 SDL_DestroyWindow: window |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
105 true |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
106 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
107 } _ptr_init |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
109 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
110 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
111 llMessage: delay withVars: { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
112 ms <- obj_uint32 ptr |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
113 } andCode: :ms { |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
114 SDL_Delay: (ms num) |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
115 true |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
116 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
117 |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
118 subsystems <- { _subsystems } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
119 windowOpts <- { _windowOpts } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
120 } |
a923b5b7da3d
Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
121 } |