2 single: RingLibSDL; はじめに
8 LibSDL, SDLImage, SDLTTF および SDLMixer ライブラリをベースとした
12 .. tip:: Ring 1.5.4 以前では、デスクトップ用の RingLibSDL バイナリ版は配布していないため RingAllegro を使用してください。
14 .. note:: RingLibSDL の用法は ring/android/ringlibsdl フォルダをご確認ください。
18 pair: RingLibSDL; ライブラリの読み込み
23 この関数を使うには、 libsdl.ring ライブラリを読み込みます (Ring 1.6 以降)。
28 # RingLibSDL ライブラリ関数の使用
31 pair: RingLibSDL; ウィンドウの作成
42 SDL_Init(SDL_INIT_EVERYTHING)
43 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
45 SDL_DestroyWindow(win)
49 pair: RingLibSDL; 画像の表示
60 SDL_Init(SDL_INIT_EVERYTHING)
61 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
62 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
63 bmp = SDL_LoadBMP("hello.bmp")
64 tex = SDL_CreateTextureFromSurface(ren,bmp)
67 SDL_RenderCopy2(ren,tex)
68 SDL_RenderPresent(ren)
70 SDL_DestroyTexture(tex)
71 SDL_DestroyRenderer(ren)
72 SDL_DestroyWindow(win)
76 pair: RingLibSDL; 二枚の画像切り替え
87 SDL_Init(SDL_INIT_EVERYTHING)
88 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
89 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
90 bmp = SDL_LoadBMP("hello.bmp")
91 tex = SDL_CreateTextureFromSurface(ren,bmp)
93 bmp = SDL_LoadBMP("hello2.bmp")
94 tex2 = SDL_CreateTextureFromSurface(ren,bmp)
97 for x = 1 to 10 showtex(tex) showtex(tex2) next
99 SDL_DestroyTexture(tex)
100 SDL_DestroyTexture(tex2)
101 SDL_DestroyRenderer(ren)
102 SDL_DestroyWindow(win)
107 SDL_RenderCopy2(ren,oTex)
108 SDL_RenderPresent(ren)
112 pair: RingLibSDL; 長方形の描画
123 SDL_Init(SDL_INIT_EVERYTHING)
124 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
125 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
127 rect = sdl_new_sdl_rect()
128 sdl_set_sdl_rect_x(rect,10)
129 sdl_set_sdl_rect_y(rect,10)
130 sdl_set_sdl_rect_w(rect,100)
131 sdl_set_sdl_rect_h(rect,100)
132 SDL_SetRenderDrawColor(ren,255,255,255,255)
133 SDL_RenderDrawRect(ren,rect)
134 sdl_destroy_sdl_rect(rect)
135 SDL_RenderPresent(ren)
137 SDL_DestroyRenderer(ren)
138 SDL_DestroyWindow(win)
142 pair: RingLibSDL; PNG 画像の表示
153 SDL_Init(SDL_INIT_EVERYTHING)
154 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
155 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
156 bmp = IMG_Load("hello3.png")
157 tex = SDL_CreateTextureFromSurface(ren,bmp)
160 SDL_RenderCopy2(ren,tex)
161 SDL_RenderPresent(ren)
163 SDL_DestroyTexture(tex)
164 SDL_DestroyRenderer(ren)
165 SDL_DestroyWindow(win)
169 pair: RingLibSDL; TTF フォントの使用
180 SDL_Init(SDL_INIT_EVERYTHING)
181 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
182 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
186 font = TTF_OpenFont("pirulen.ttf", 16)
187 color = sdl_new_sdl_color()
188 sdl_set_sdl_color_r(color,0)
189 sdl_set_sdl_color_g(color,255)
190 sdl_set_sdl_color_b(color,0)
191 text = TTF_RenderText_Solid(font,"Welcome to the Ring language",color)
192 surface = SDL_GetWindowSurface(win)
193 SDL_BlitSurface(text, nullpointer(), surface, nullpointer())
194 SDL_UpdateWindowSurface(win)
197 SDL_Destroy_SDL_Color(color)
198 SDL_FreeSurface(text)
200 SDL_DestroyRenderer(ren)
201 SDL_DestroyWindow(win)
205 pair: RingLibSDL; 透過画像の表示
216 SDL_Init(SDL_INIT_EVERYTHING)
218 flags = IMG_INIT_JPG | IMG_INIT_PNG
221 win = SDL_CreateWindow("Hello World!", 100, 100, 800, 600, SDL_WINDOW_SHOWN)
222 ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
224 bmp = IMG_Load("stars.jpg")
225 tex = SDL_CreateTextureFromSurface(ren,bmp)
228 SDL_RenderCopy(ren,tex,nullpointer(),nullpointer())
229 SDL_DestroyTexture(tex)
231 bmp = IMG_Load("player.png")
233 myformat = sdl_get_sdl_surface_format(bmp)
234 white = SDL_MapRGB(myformat, 255, 255, 255)
235 SDL_SetColorKey(bmp, SDL_True, white)
237 tex = SDL_CreateTextureFromSurface(ren,bmp)
239 rect = sdl_new_sdl_rect()
240 sdl_set_sdl_rect_x(rect,0)
241 sdl_set_sdl_rect_y(rect,0)
242 sdl_set_sdl_rect_w(rect,100)
243 sdl_set_sdl_rect_h(rect,100)
244 SDL_RenderCopy(ren,tex,nullpointer(),rect)
246 SDL_SetTextureBlendMode(tex,2)
247 SDL_SetTextureAlphaMod(tex,255)
248 sdl_set_sdl_rect_x(rect,200)
249 sdl_set_sdl_rect_y(rect,200)
250 sdl_set_sdl_rect_w(rect,100)
251 sdl_set_sdl_rect_h(rect,100)
252 SDL_RenderCopy(ren,tex,nullpointer(),rect)
254 SDL_DestroyTexture(tex)
255 SDL_Destroy_SDL_Rect(rect)
257 SDL_RenderPresent(ren)
259 SDL_DestroyRenderer(ren)
260 SDL_DestroyWindow(win)
264 pair: RingLibSDL; ウィンドウを閉じるためのイベント
267 ================================
275 SDL_Init(SDL_INIT_EVERYTHING)
276 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
278 myevent = sdl_new_sdl_event()
280 thevent = sdl_pollevent(myevent)
281 switch sdl_get_sdl_event_type(myevent)
282 on sdl_get_sdl_quit()
284 on sdl_get_sdl_keydown()
285 Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
291 SDL_DestroyWindow(win)
295 pair: RingLibSDL; マウスのイベント
306 SDL_Init(SDL_INIT_EVERYTHING)
308 win = SDL_CreateWindow("Mouse Events ", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
311 font = TTF_OpenFont("pirulen.ttf", 16)
312 color = sdl_new_sdl_color()
313 sdl_set_sdl_color_r(color,0)
314 sdl_set_sdl_color_g(color,255)
315 sdl_set_sdl_color_b(color,0)
317 surface = SDL_GetWindowSurface(win)
319 myevent = sdl_new_sdl_event()
322 sdl_pollevent(myevent)
323 switch sdl_get_sdl_event_type(myevent)
327 Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
329 on SDL_MOUSEBUTTONDOWN
330 if sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_LEFT
331 SDL_SETWINDOWTITLE(win, " Button_Left_Down " )
332 but sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_MIDDLE
333 SDL_SETWINDOWTITLE(win, " Button_Middle_Down " )
334 but sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_RIGHT
335 SDL_SETWINDOWTITLE(win, " Button_Right_Down " )
338 sdl_fillrect(surface,nullpointer(),0)
339 if sdl_get_sdl_event_motion_xrel(myevent) < 0
344 if sdl_get_sdl_event_motion_yrel(myevent) < 0
349 cMsg += " x = " + sdl_get_sdl_event_motion_x(myevent)
350 cMsg += " y = " + sdl_get_sdl_event_motion_y(myevent)
355 SDL_Destroy_SDL_Color(Color)
357 SDL_DestroyWindow(win)
361 text = TTF_RenderText_Solid(font,mymsg,color)
362 SDL_BlitSurface(text, nullpointer(), surface, nullpointer())
363 SDL_UpdateWindowSurface(win)
364 SDL_FreeSurface(text)
367 pair: RingLibSDL; 音声の再生
378 SDL_Init(SDL_INIT_EVERYTHING)
379 win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
380 Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT , 2, 10000)
381 Mix_AllocateChannels(4)
382 sound = Mix_LoadWav( "sound.wav" )
383 Mix_VolumeChunk(sound,1)
384 Mix_PlayChannel(1,sound,0)
386 myevent = sdl_new_sdl_event()
388 thevent = sdl_pollevent(myevent)
389 switch sdl_get_sdl_event_type(myevent)
390 on sdl_get_sdl_quit()
392 on sdl_get_sdl_keydown()
393 Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
398 Mix_FreeChunk( sound )
401 SDL_DestroyWindow(win)