comparison samples/sdl.tp @ 318:4c669942c30d

Add bindings for SDL_CreateTexture, SDL_LockTexture, SDL_SetBlendMode and SDL_GetBlendMode in SDL module
author Michael Pavone <pavone@retrodev.com>
date Thu, 19 Mar 2015 22:40:43 -0700
parents 2b045d5b673b
children
comparison
equal deleted inserted replaced
317:6dfbf5691a7f 318:4c669942c30d
9 keyUp 9 keyUp
10 mouseDown 10 mouseDown
11 mouseUp 11 mouseUp
12 mouseMotion 12 mouseMotion
13 ] from: (sdl eventTypes) 13 ] from: (sdl eventTypes)
14 import: [
15 streaming
16 ] from: (sdl textureAccess)
17 import: [
18 bgra8888
19 ] from: (sdl pixelFormats)
14 main <- { 20 main <- {
15 if: (sdl init: (video or timer)) = 0 { 21 if: (sdl init: (video or timer)) = 0 {
16 (sdl createWindow: "SDL Test" pos: 0 0 size: 640 480 flags: 0u32) value: :window { 22 (sdl createWindow: "SDL Test" pos: 0 0 size: 640 480 flags: 0u32) value: :window {
17 (window createRenderer: -1 flags: ((window renderOpts) accelerated)) value: :render { 23 (window createRenderer: -1 flags: ((window renderOpts) accelerated)) value: :render {
18 render drawColor!: (sdl r: 0u8 g: 0u8 b: 255u8) 24 render drawColor!: (sdl r: 0u8 g: 0u8 b: 255u8)
19 render clear 25 render clear
20 (sdl loadBMP: "944.bmp") value: :surf { 26 (sdl loadBMP: "944.bmp") value: :surf {
21 (surf asTexture: render) value: :tex { 27 (surf asTexture: render) value: :tex {
22 surf free 28 surf free
23 angle <- 45.0f32 29 (render createTexture: bgra8888 access: streaming width: 32 height: 32) value: :drawTex {
24 continue? <- true 30 angle <- 45.0f32
25 while: { continue? } do: { 31 continue? <- true
26 tex copy 32 drawTex blendMode!: ((sdl blendModes) blend)
27 tex copyTo: (sdl rect: 160 120 size: 320 224) 33 drawTex lockRect: (sdl rect: 0 0 size: 32 32) with: :bytearr pitch {
28 tex copyRect: (sdl rect: 80 60 size: 160 120) To: (sdl rect: 40 30 size: 320 224) 34 row <- 0
29 tex copyTo: (sdl rect: 320 240 size: 320 224) rotated: angle 35 start <- -1
30 render present 36 while: { row < 32 } do: {
31 angle <- angle + 1.0f32 37 col <- 0
38 i <- row * pitch
39 while: { col < start } do: {
40 bytearr set: i 0u8
41 i <- i + 1
42 bytearr set: i 0u8
43 i <- i + 1
44 bytearr set: i 0u8
45 i <- i + 1
46 bytearr set: i 0u8
47 i <- i + 1
48 col <- col + 1
49 }
50 end <- start + 3
51 while: { col < end } do: {
52 bytearr set: i 255u8
53 i <- i + 1
54 bytearr set: i 255u8
55 i <- i + 1
56 bytearr set: i 255u8
57 i <- i + 1
58 bytearr set: i 255u8
59 i <- i + 1
60 col <- col + 1
61 }
62 start2 <- 32 - 3 - start
63 while: { col < start2 } do: {
64 bytearr set: i 0u8
65 i <- i + 1
66 bytearr set: i 0u8
67 i <- i + 1
68 bytearr set: i 0u8
69 i <- i + 1
70 bytearr set: i 0u8
71 i <- i + 1
72 col <- col + 1
73 }
74 end <- start2 + 3
75 if: end > 32 {
76 end <- 32
77 }
78 while: { col < end } do: {
79 bytearr set: i 255u8
80 i <- i + 1
81 bytearr set: i 255u8
82 i <- i + 1
83 bytearr set: i 255u8
84 i <- i + 1
85 bytearr set: i 255u8
86 i <- i + 1
87 col <- col + 1
88 }
89 while: { col < 32 } do: {
90 bytearr set: i 0u8
91 i <- i + 1
92 bytearr set: i 0u8
93 i <- i + 1
94 bytearr set: i 0u8
95 i <- i + 1
96 bytearr set: i 0u8
97 i <- i + 1
98 col <- col + 1
99 }
100 if: row < 16 {
101 start <- start + 1
102 } else: {
103 if: row > 16 {
104 start <- start - 1
105 }
106 }
107 row <- row + 1
108 }
109 }
110 while: { continue? } do: {
111 tex copy
112 tex copyTo: (sdl rect: 160 120 size: 320 224)
113 tex copyRect: (sdl rect: 80 60 size: 160 120) To: (sdl rect: 40 30 size: 320 224)
114 tex copyTo: (sdl rect: 320 240 size: 320 224) rotated: angle
115 drawTex copyTo: (sdl rect: 484 32 size: 32 32) rotated: angle / 60.0f32
116 render present
117 angle <- angle + 1.0f32
32 118
33 event <- option none 119 event <- option none
34 while: { 120 while: {
35 event <- sdl pollEvent 121 event <- sdl pollEvent
36 event value? 122 event value?
37 } do: { 123 } do: {
38 event value: :ev { 124 event value: :ev {
39 if: (ev type) = quit { 125 if: (ev type) = quit {
40 continue? <- false 126 continue? <- false
41 } else: {
42 if: (ev type) = keyDown || (ev type) = keyUp {
43 print: "Key event for: " . (ev keyChar) . ", pressed?: " . (ev pressed?) . "\n"
44 } else: { 127 } else: {
45 if: (ev type) = mouseDown || (ev type) = mouseUp { 128 if: (ev type) = keyDown || (ev type) = keyUp {
46 print: "Mouse button event at: " . (ev x) . ", " . (ev y) . " for button " . (ev button) . "\n" 129 print: "Key event for: " . (ev keyChar) . ", pressed?: " . (ev pressed?) . "\n"
47 } else: { 130 } else: {
48 if: (ev type) = mouseMotion { 131 if: (ev type) = mouseDown || (ev type) = mouseUp {
49 print: "Mouse motion event: " . (ev xRel) . ", " . (ev yRel) . "\n" 132 print: "Mouse button event at: " . (ev x) . ", " . (ev y) . " for button " . (ev button) . "\n"
133 } else: {
134 if: (ev type) = mouseMotion {
135 print: "Mouse motion event: " . (ev xRel) . ", " . (ev yRel) . "\n"
136 }
50 } 137 }
51 } 138 }
52 } 139 }
53 } 140 } none: {}
54 } none: {} 141 }
55 } 142 }
143 } none: {
144 print: "Failed to create texture\n"
56 } 145 }
57 tex destroy 146 tex destroy
58 } none: { 147 } none: {
59 surf free 148 surf free
60 } 149 }