annotate modules/sdl.tp @ 291:38bbbf74b735

Initial work on event support in SDL module
author Michael Pavone <pavone@retrodev.com>
date Tue, 22 Jul 2014 23:35:08 -0700
parents b01d7c1b4edd
children 2b045d5b673b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 _helper <- #{
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 llMessage: createWindow withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 title <- string ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 x <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 y <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 w <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 h <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 flags <- obj_uint32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 makeWindow <- lambda ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 windowOpaque <- cpointer ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 win <- object ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 } andCode: :title x y w h flags makeWindow {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 windowOpaque <- make_object: (addr_of: cpointer_meta) NULL 0
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 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
16 if: (windowOpaque val) {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 win <- ccall: makeWindow 1 (windowOpaque castTo: (object ptr))
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 mcall: value 2 option win
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 } else: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 mcall: none 1 option
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 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
23
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
24 llMessage: createRenderer withVars: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
25 window <- cpointer ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
26 index <- obj_int32 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
27 flags <- obj_uint32 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
28 rendOpaque <- cpointer ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
29 rend <- object ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
30 makeRender <- lambda ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
31 } andCode: :window index flags makeRender {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
32 rendOpaque <- make_object: (addr_of: cpointer_meta) NULL 0
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
33 rendOpaque val!: (SDL_CreateRenderer: (window val) (index num) (flags num))
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
34 if: (rendOpaque val) {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
35 rend <- ccall: makeRender 1 (rendOpaque castTo: (object ptr))
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
36 mcall: value 2 option rend
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
37 } else: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
38 mcall: none 1 option
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
39 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
40 }
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
41
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
42 llMessage: loadBMP withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
43 filename <- string ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
44 makeSurface <- lambda ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
45 surfOpaque <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
46 surf <- object ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
47 } andCode: :filename makeSurface{
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
48 surfOpaque <- make_object: (addr_of: cpointer_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
49 surfOpaque val!: (SDL_LoadBMP: (filename data))
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
50 if: (surfOpaque val) {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
51 surf <- ccall: makeSurface 1 (surfOpaque castTo: (object ptr))
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
52 mcall: value 2 option surf
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
53 } else: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
54 mcall: none 1 option
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
55 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
56 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
57
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
58 llMessage: createTextureFromSurface withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
59 rendOpaque <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
60 surfOpaque <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
61 makeTexture <- lambda ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
62 texOpaque <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
63 tex <- object ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
64 } andCode: :rendOpaque surfOpaque makeTexture {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
65 texOpaque <- make_object: (addr_of: cpointer_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
66 texOpaque val!: (SDL_CreateTextureFromSurface: (rendOpaque val) (surfOpaque val))
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
67 if: (texOpaque val) {
291
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
68 tex <- ccall: makeTexture 2 (rendOpaque castTo: (object ptr)) (texOpaque castTo: (object ptr))
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
69 mcall: value 2 option tex
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
70 } else: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
71 mcall: none 1 option
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
72 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
73 }
291
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
74
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
75 llMessage: pollEvent withVars: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
76 constructor <- lambda ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
77 event <- SDL_Event
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
78 eventPtr <- cpointer ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
79 eventType <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
80 timeStampO <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
81 } andCode: :constructor {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
82 if: (SDL_PollEvent: (addr_of: event)) {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
83 eventType <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
84 timeStampO <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
85 eventType num!: ((addr_of: event) type)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
86 timeStampO num!: ((addr_of: ((addr_of: event) common)) timestamp)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
87 eventPtr <- make_object: (addr_of: cpointer_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
88 eventPtr val!: (addr_of: event)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
89 mcall: value 2 option (ccall: constructor 3 (eventType castTo: (object ptr)) (
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
90 timeStampO castTo: (object ptr)) (eventPtr castTo: (object ptr)))
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
91 } else: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
92 mcall: none 1 option
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
93 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
94 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
95
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
96 llMessage: populateWindowEvent withVars: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
97 eventPtr <- cpointer ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
98 empty <- object ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
99 winEvent <- SDL_WindowEvent ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
100 ou32 <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
101 ou8 <- obj_uint8 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
102 oi32 <- obj_int32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
103 } andCode: :eventPtr empty {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
104 winEvent <- eventPtr val
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
105 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
106 ou32 num!: (winEvent windowID)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
107 mcall: windowID! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
108 ou8 <- make_object: (addr_of: obj_uint8_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
109 ou8 num!: (winEvent event)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
110 mcall: event! 2 empty ou8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
111 oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
112 oi32 num!: (winEvent data1)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
113 mcall: data1! 2 empty oi32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
114 oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
115 oi32 num!: (winEvent data2)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
116 mcall: data2! 2 empty oi32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
117 empty
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
118 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
119
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
120 llMessage: populateKeyEvent withVars: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
121 eventPtr <- cpointer ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
122 empty <- object ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
123 keyEvent <- SDL_KeyboardEvent ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
124 ou32 <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
125 ou16 <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
126 ou8 <- obj_uint8 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
127 } andCode: :eventPtr empty {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
128 keyEvent <- eventPtr val
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
129 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
130 ou32 num!: (keyEvent windowID)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
131 mcall: windowID! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
132 if: (keyEvent state) = SDL_PRESSED {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
133 mcall: pressed?! 2 empty true
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
134 } else: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
135 mcall: pressed?! 2 empty false
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
136 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
137 ou8 <- make_object: (addr_of: obj_uint8_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
138 ou8 num!: (keyEvent repeat)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
139 mcall: repeat! 2 empty ou8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
140 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
141 ou32 num!: ((addr_of: (keyEvent keysym)) scancode)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
142 mcall: scanCode! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
143 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
144 ou32 num!: ((addr_of: (keyEvent keysym)) sym)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
145 mcall: keyCode! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
146 ou16 <- make_object: (addr_of: obj_uint16_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
147 ou16 num!: ((addr_of: (keyEvent keysym)) mod)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
148 mcall: mod! 2 empty ou16
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
149 empty
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
150 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
151
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
152 llMessage: populateMouseButtonEvent withVars: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
153 eventPtr <- cpointer ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
154 empty <- object ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
155 mouseButEvent <- SDL_MouseButtonEvent ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
156 ou32 <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
157 ou8 <- obj_uint8 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
158 oi32 <- obj_int32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
159 } andCode: :eventPtr empty {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
160 mouseButEvent <- eventPtr val
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
161 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
162 ou32 num!: (mouseButEvent windowID)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
163 mcall: windowID! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
164 ou32 <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
165 ou32 num!: (mouseButEvent which)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
166 mcall: mouseID! 2 empty ou32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
167 ou8 <- make_object: (addr_of: obj_uint8_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
168 ou8 num!: (mouseButEvent button)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
169 mcall: button! 2 empty ou8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
170 if: (mouseButEvent state) = SDL_PRESSED {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
171 mcall: pressed?! 2 empty true
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
172 } else: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
173 mcall: pressed?! 2 empty false
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
174 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
175 ou8 <- make_object: (addr_of: obj_uint8_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
176 ou8 num!: (mouseButEvent clicks)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
177 mcall: clicks! 2 empty ou8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
178 oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
179 oi32 num!: (mouseButEvent x)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
180 mcall: x! 2 empty oi32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
181 oi32 <- make_object: (addr_of: obj_int32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
182 oi32 num!: (mouseButEvent y)
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
183 mcall: y! 2 empty oi32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
184 }
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
185 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
186
291
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
187 _constant <- macro: :name cname {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
188 quote: (llMessage: name withVars: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
189 uintret <- obj_uint32 ptr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
190 } andCode: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
191 uintret <- make_object: (addr_of: obj_uint32_meta) NULL 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
192 uintret num!: cname
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
193 uintret
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
194 })
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
195 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
196 _subsystems <- #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
197 _constant: timer SDL_INIT_TIMER
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
198 _constant: audio SDL_INIT_AUDIO
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
199 _constant: video SDL_INIT_VIDEO
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
200 _constant: joystick SDL_INIT_JOYSTICK
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
201 _constant: haptic SDL_INIT_HAPTIC
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
202 _constant: gameController SDL_INIT_GAMECONTROLLER
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
203 _constant: events SDL_INIT_EVENTS
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
204 _constant: everything SDL_INIT_EVERYTHING
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
205 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
206
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
207 _windowOpts <- #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
208 _constant: fullscreen SDL_WINDOW_FULLSCREEN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
209 _constant: fullscreenDesktop SDL_WINDOW_FULLSCREEN_DESKTOP
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
210 _constant: opengl SDL_WINDOW_OPENGL
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
211 _constant: hidden SDL_WINDOW_HIDDEN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
212 _constant: borderless SDL_WINDOW_BORDERLESS
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
213 _constant: minimized SDL_WINDOW_MINIMIZED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
214 _constant: maximized SDL_WINDOW_MAXIMIZED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
215 _constant: inputGrabbed SDL_WINDOW_INPUT_GRABBED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
216 _constant: allowHighDPI SDL_WINDOW_ALLOW_HIGHDPI
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
217 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
218
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
219 _renderOpts <- #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
220 _constant: software SDL_RENDERER_SOFTWARE
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
221 _constant: accelerated SDL_RENDERER_ACCELERATED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
222 _constant: presentVSYNC SDL_RENDERER_PRESENTVSYNC
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
223 _constant: targetTexture SDL_RENDERER_TARGETTEXTURE
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
224
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
225 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
226
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
227 _events <- #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
228 _constant: quit SDL_QUIT
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
229 _constant: window SDL_WINDOWEVENT
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
230 _constant: sysWM SDL_SYSWMEVENT
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
231 _constant: keyDown SDL_KEYDOWN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
232 _constant: keyUp SDL_KEYUP
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
233 _constant: textEditing SDL_TEXTEDITING
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
234 _constant: textInput SDL_TEXTINPUT
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
235 _constant: mouseMotion SDL_MOUSEMOTION
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
236 _constant: mouseDown SDL_MOUSEBUTTONDOWN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
237 _constant: mouseUp SDL_MOUSEBUTTONUP
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
238 _constant: mouseWheel SDL_MOUSEWHEEL
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
239 _constant: joyAxis SDL_JOYAXISMOTION
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
240 _constant: joyBall SDL_JOYBALLMOTION
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
241 _constant: joyHat SDL_JOYHATMOTION
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
242 _constant: joyDown SDL_JOYBUTTONDOWN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
243 _constant: joyUp SDL_JOYBUTTONUP
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
244 _constant: joyDeviceAdded SDL_JOYDEVICEADDED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
245 _constant: joyDeviceRemoved SDL_JOYDEVICEREMOVED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
246 _constant: controllerAxis SDL_CONTROLLERAXISMOTION
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
247 _constant: controllerDown SDL_CONTROLLERBUTTONDOWN
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
248 _constant: controllerUp SDL_CONTROLLERBUTTONUP
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
249 _constant: controllerDeviceAdded SDL_CONTROLLERDEVICEADDED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
250 _constant: controllerDeviceRemoved SDL_CONTROLLERDEVICEREMOVED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
251 _constant: controllerDeviceRemapped SDL_CONTROLLERDEVICEREMAPPED
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
252 _constant: dropFile SDL_DROPFILE
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
253 //TODO: Add mobile/touch/gesture events
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
254 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
255
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
256 _eventConstructors <- dict hash
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
257 _eventConstructors set: (_events window) :typ tstamp eventPtr {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
258 _helper populateWindowEvent: eventPtr #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
259 type <- typ
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
260 timeStamp <- tstamp
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
261 windowID <- 0u32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
262 event <- 0u8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
263 data1 <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
264 data2 <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
265 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
266 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
267 keyEvent <- :typ tstamp eventPtr {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
268 _helper populateKeyEvent: eventPtr #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
269 type <- typ
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
270 timeStamp <- tstamp
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
271 windowID <- 0u32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
272 pressed? <- false
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
273 repeat <- 0u8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
274 scanCode <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
275 keyCode <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
276 mod <- 0u16
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
277 _constant: scanCodeMask SDLK_SCANCODE_MASK
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
278 keyChar <- {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
279 if: (keyCode and (self scanCodeMask)) = 0 {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
280 keyCode utf8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
281 } else: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
282 ""
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
283 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
284 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
285 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
286 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
287 _eventConstructors set: (_events keyDown) keyEvent
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
288 _eventConstructors set: (_events keyUp) keyEvent
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
289
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
290 mouseButtonEvent <- :typ tstamp eventPtr {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
291 _helper populateMouseButtonEvent: eventPtr #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
292 type <- typ
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
293 timeStamp <- tstamp
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
294 windowID <- 0u32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
295 mouseID <- 0u32
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
296 button <- 0u8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
297 pressed? <- false
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
298 clicks <- 0u8
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
299 x <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
300 y <- 0
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
301 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
302 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
303 _eventConstructors set: (_events mouseDown) mouseButtonEvent
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
304 _eventConstructors set: (_events mouseUp) mouseButtonEvent
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
305
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
306 _makeTexture <- :rendptr texptr {
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
307 #{
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
308 includeSystemHeader: "SDL.h"
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
309 llProperty: renderer withType: (SDL_Renderer ptr)
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
310 llProperty: texture withType: (SDL_Texture ptr)
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
311 llMessage: opaque withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
312 ptr <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
313 } andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
314 ptr <- make_object: (addr_of: cpointer_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
315 ptr val!: texture
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
316 ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
317 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
318 llMessage: _ptr_init withVars: {
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
319 rendptr <- cpointer ptr
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
320 texptr <- cpointer ptr
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
321 } andCode: :rendptr texptr{
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
322 renderer <- rendptr val
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
323 texture <- texptr val
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
324 self
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
325 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
326
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
327 llMessage: copy withVars: {
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
328 intret <- obj_int32 ptr
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
329 } andCode: {
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
330 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
331 intret num!: (SDL_RenderCopy: renderer texture NULL NULL)
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
332 intret
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
333 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
334
283
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
335 llMessage: copyTo withVars: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
336 dst <- object ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
337 dstOpaque <- cpointer ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
338 intret <- obj_int32 ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
339 } andCode: :dst {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
340 dstOpaque <- (mcall: _rectPointer 1 dst) castTo: (cpointer ptr)
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
341 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
342 intret num!: (SDL_RenderCopy: renderer texture NULL (dstOpaque val))
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
343 intret
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
344 }
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
345
284
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
346 llMessage: copyRect:To withVars: {
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
347 src <- object ptr
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
348 dst <- object ptr
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
349 srcOpaque <- cpointer ptr
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
350 dstOpaque <- cpointer ptr
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
351 intret <- obj_int32 ptr
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
352 } andCode: :src :dst {
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
353 srcOpaque <- (mcall: _rectPointer 1 src) castTo: (cpointer ptr)
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
354 dstOpaque <- (mcall: _rectPointer 1 dst) castTo: (cpointer ptr)
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
355 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
356 intret num!: (SDL_RenderCopy: renderer texture (srcOpaque val) (dstOpaque val))
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
357 intret
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
358 }
99c18127da04 Add another SDL_RenderCopy binding in the form of copyRect:To
Michael Pavone <pavone@retrodev.com>
parents: 283
diff changeset
359
287
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
360 llMessage: copyTo:rotated withVars: {
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
361 dst <- object ptr
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
362 angle <- object ptr
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
363 dstOpaque <- cpointer ptr
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
364 anglef <- obj_float32 ptr
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
365 intret <- obj_int32 ptr
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
366 } andCode: :dst :angle {
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
367 anglef <- (mcall: f32 1 angle) castTo: (obj_float32 ptr)
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
368 dstOpaque <- (mcall: _rectPointer 1 dst) castTo: (cpointer ptr)
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
369 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
370 intret num!: (SDL_RenderCopyEx: renderer texture NULL (dstOpaque val) (anglef num) NULL SDL_FLIP_NONE)
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
371 intret
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
372 }
b01d7c1b4edd Add binding for simple form of SDL_RenderCopyEx
Michael Pavone <pavone@retrodev.com>
parents: 285
diff changeset
373
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
374 llMessage: destroy withVars: {} andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
375 SDL_DestroyTexture: texture
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
376 true
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
377 }
279
eb83863fd33e Store renderer pointer in texture object since the texture can only be used with the renderer it was created with
Michael Pavone <pavone@retrodev.com>
parents: 278
diff changeset
378 } _ptr_init: rendptr texptr
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
379 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
380
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
381 _makeSurface <- :ptr {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
382 #{
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
383 includeSystemHeader: "SDL.h"
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
384 llProperty: surface withType: (SDL_Surface ptr)
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
385 llMessage: opaque withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
386 ptr <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
387 } andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
388 ptr <- make_object: (addr_of: cpointer_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
389 ptr val!: surface
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
390 ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
391 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
392 llMessage: _ptr_init withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
393 ptr <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
394 } andCode: :ptr{
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
395 surface <- ptr val
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
396 self
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
397 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
398
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
399 asTexture <- :renderer {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
400 _helper createTextureFromSurface: (renderer opaque) opaque _makeTexture
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
401 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
402
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
403 llMessage: free withVars: {} andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
404 SDL_FreeSurface: surface
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
405 true
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
406 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
407 } _ptr_init: ptr
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
408 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
409
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
410 #{
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
411 includeSystemHeader: "SDL.h"
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
412 includeSystemHeader: "stdlib.h"
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
413
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
414 llMessage: init withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
415 flags <- obj_uint32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
416 intret <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
417 } andCode: :flags {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
418 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
419 intret num!: (SDL_Init: (flags num))
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
420 if: (intret num) {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
421 atexit: SDL_Quit
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
422 }
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
423 intret
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
424 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
425
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
426 llMessage: initSubSystem withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
427 flags <- obj_uint32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
428 intret <- obj_int32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
429 } andCode: :flags {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
430 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
431 intret num!: (SDL_InitSubSystem: (flags num))
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
432 intret
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
433 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
434
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
435 llMessage: quitSubSystem withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
436 flags <- obj_uint32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
437 } andCode: :flags {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
438 SDL_QuitSubSystem: (flags num)
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
439 true
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
440 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
441
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
442 r:g:b:a <- :rc :gc :bc :ac {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
443 #{
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
444 r <- rc
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
445 g <- gc
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
446 b <- bc
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
447 a <- ac
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
448 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
449 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
450
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
451 r:g:b <- :r :g :b {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
452 r: r g: g b: b a: 255u8
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
453 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
454
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
455 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
456 _helper createWindow: title x y w h flags :ptr {
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
457 print: (string: ptr) . "\n"
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
458 #{
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
459 includeSystemHeader: "SDL.h"
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
460 llProperty: window withType: (SDL_Window ptr)
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
461 llMessage: opaque withVars: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
462 op <- cpointer ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
463 } andCode: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
464 op <- make_object: (addr_of: cpointer_meta) NULL 0
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
465 op val!: window
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
466 op
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
467 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
468
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
469 llMessage: _ptr_init withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
470 ptr <- cpointer ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
471 } andCode: :ptr {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
472 window <- ptr val
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
473 self
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
474 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
475
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
476 renderOpts <- { _renderOpts }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
477
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
478 createRenderer:flags <- :index :flags {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
479 _helper createRenderer: (self opaque) index flags :ptr {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
480 #{
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
481 includeSystemHeader: "SDL.h"
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
482 llProperty: renderer withType: (SDL_Renderer ptr)
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
483 llMessage: opaque withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
484 op <- cpointer ptr
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
485 } andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
486 op <- make_object: (addr_of: cpointer_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
487 op val!: renderer
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
488 op
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
489 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
490 llMessage: _ptr_init withVars: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
491 ptr <- cpointer ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
492 } andCode: :ptr {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
493 renderer <- ptr val
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
494 self
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
495 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
496
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
497 llMessage: drawColor! withVars: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
498 color <- object ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
499 rc <- obj_uint8 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
500 gc <- obj_uint8 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
501 bc <- obj_uint8 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
502 ac <- obj_uint8 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
503 intret <- obj_int32 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
504 } andCode: :color {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
505 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
506 rc <- (mcall: r 1 color) castTo: (obj_uint8 ptr)
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
507 gc <- (mcall: g 1 color) castTo: (obj_uint8 ptr)
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
508 bc <- (mcall: b 1 color) castTo: (obj_uint8 ptr)
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
509 ac <- (mcall: a 1 color) castTo: (obj_uint8 ptr)
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
510 intret num!: (SDL_SetRenderDrawColor: renderer (rc num) (gc num) (bc num) (ac num))
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
511 intret
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
512 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
513
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
514 llMessage: clear withVars: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
515 intret <- obj_int32 ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
516 } andCode: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
517 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
518 intret num!: (SDL_RenderClear: renderer)
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
519 intret
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
520 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
521
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
522 llMessage: present withVars: {} andCode: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
523 SDL_RenderPresent: renderer
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
524 true
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
525 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
526
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
527 llMessage: destroy withVars: {} andCode: {
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
528 SDL_DestroyRenderer: renderer
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
529 true
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
530 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
531 } _ptr_init: ptr
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
532 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
533 }
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
534
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
535 llMessage: destroy withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
536 } andCode: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
537 SDL_DestroyWindow: window
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
538 true
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
539 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
540 } _ptr_init: ptr
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
541 }
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
542 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
543
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
544 loadBMP <- :filename {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
545 _helper loadBMP: filename _makeSurface
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
546 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
547
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
548 llMessage: delay withVars: {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
549 ms <- obj_uint32 ptr
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
550 } andCode: :ms {
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
551 SDL_Delay: (ms num)
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
552 true
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
553 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
554
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
555 llMessage: clearError withVars: {} andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
556 SDL_ClearError:
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
557 true
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
558 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
559
283
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
560 rect:size <- :x y :w h {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
561 getter <- macro: :propName {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
562 quote: (llMessage: propName withVars: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
563 intret <- obj_int32 ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
564 } andCode: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
565 intret <- make_object: (addr_of: obj_int32_meta) NULL 0
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
566 intret num!: ((addr_of: rect) propName)
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
567 intret
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
568 })
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
569 }
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
570 setter <- macro: :propName {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
571 quote: (llMessage: propName withVars: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
572 v <- obj_int32 ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
573 } andCode: :v {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
574 (addr_of: rect) propName: (v num)
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
575 self
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
576 })
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
577 }
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
578 (((#{
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
579 llProperty: rect withType: SDL_Rect
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
580 getter: x
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
581 setter: x!
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
582 getter: y
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
583 setter: y!
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
584 getter: w
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
585 setter: w!
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
586 getter: h
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
587 setter: h!
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
588 llMessage: _rectPointer withVars: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
589 retptr <- cpointer ptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
590 } andCode: {
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
591 retptr <- make_object: (addr_of: cpointer_meta) NULL 0
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
592 retptr val!: (addr_of: (self rect))
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
593 retptr
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
594 }
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
595 } x!: x) y!: y) w!: w) h!: h
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
596 }
0ec4f1b68a38 Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
Michael Pavone <pavone@retrodev.com>
parents: 279
diff changeset
597
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
598 llMessage: getError withVars: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
599 str <- string ptr
285
bb1539decd62 Fix const warning in sdl module
Michael Pavone <pavone@retrodev.com>
parents: 284
diff changeset
600 rawstr <- const: (char ptr)
278
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
601 } andCode: {
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
602 rawstr <- SDL_GetError:
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
603 str <- make_object: (addr_of: string_meta) NULL 0
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
604 str bytes!: (strlen: rawstr)
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
605 str len!: (str bytes)
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
606 str data!: (GC_MALLOC: (str bytes) + 1)
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
607 memcpy: (str data) rawstr (str bytes) + 1
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
608 str
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
609 }
1205c7a43cb4 Add bindings for SDL_ClearError, SDL_GetError, SDL_LoadBMP, SDL_CreateTextureFromSurface and a partial binding for SDL_RendererCopy
Michael Pavone <pavone@retrodev.com>
parents: 277
diff changeset
610
291
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
611 pollEvent <- {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
612 _helper pollEvent: :typ tstamp eventPtr {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
613 _eventConstructors ifget: typ :handler {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
614 handler: typ tstamp eventPtr
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
615 } else: {
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
616 //fallback event
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
617 #{
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
618 type <- typ
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
619 timeStamp <- tstamp
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
620 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
621 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
622 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
623 }
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
624
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
625 subsystems <- { _subsystems }
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
626 windowOpts <- { _windowOpts }
291
38bbbf74b735 Initial work on event support in SDL module
Michael Pavone <pavone@retrodev.com>
parents: 287
diff changeset
627 eventTypes <- { _events }
274
a923b5b7da3d Initial work on an SDL2 binding
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
628 }
277
2b58eafa360b Add SDL bindings for creating a renderer, clearing it, presenting it and destroying it
Michael Pavone <pavone@retrodev.com>
parents: 274
diff changeset
629 }