Module: RbSDL2::SDL
- Defined in:
- lib/rb_sdl2/sdl.rb
Constant Summary collapse
- SDL_INIT_TIMER =
0x00000001
- SDL_INIT_AUDIO =
0x00000010
- SDL_INIT_VIDEO =
0x00000020
- SDL_INIT_JOYSTICK =
0x00000200
- SDL_INIT_HAPTIC =
0x00001000
- SDL_INIT_GAMECONTROLLER =
0x00002000
- SDL_INIT_EVENTS =
0x00004000
- SDL_INIT_SENSOR =
0x00008000
- SDL_INIT_EVERYTHING =
SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR
- NUL =
厳密な定義のためエンコーディングは ASCII-8BIT とする。
"\x00".encode!(Encoding::ASCII_8BIT).freeze
Class Method Summary collapse
-
.init(*flags) ⇒ Object
SDL を初期化します。 flags に起動したい SDL サブシステムのシンボルで指定します。 flags を指定指定しない場合は全ての SDL サブシステムが起動します。 SDL サブシステムのシンボルは :audio, :events, :game_controller, :haptic, :joystick, :sensor, :timer, :video です。.
-
.init?(*flags) ⇒ Boolean
SDL サブシステムが初期化されているか確認します。 flags に与えたシンボルの SDL サブシステムが全て起動している時に true を戻します。.
-
.ptr_to_str(ptr) ⇒ Object
SDL String(C String, UTF-8) を Ruby String へ変換します。 戻り値の文字列エンコードは UTF-8 です。ptr へ与えたポインター先のメモリーは開放しません。 ptr へ NULL ポインターを与えても安全です。その場合は空文字を戻します。 戻り値の文字列は Ruby 側へコピーされたものです。これを変更しても SDL のメモリー領域に影響を与えません。.
-
.quit ⇒ Object
SDL を終了します。RbSDL2 ではアプリケーションの終了時にこのメソッドを呼ぶ必要はありません。 終了後に再び SDL サブシステムを起動する必要がある場合は再度 init メソッドを呼ぶことができます。 このメソッドは何度でも呼び出すことができます。.
-
.str_to_sdl(s) ⇒ Object
Ruby String を SDL で取り扱う String へ変換します。 戻り値は UTF-8 エンコードされた変更不可能な文字列です。 内部では s へ与えた文字列をコピーし UTF-8 エンコードへ変換します。(元の文字列への影響はありません) 文字列に NUL 文字が含まれる場合は ArgumentError が発生します。.
Class Method Details
.init(*flags) ⇒ Object
SDL を初期化します。 flags に起動したい SDL サブシステムのシンボルで指定します。 flags を指定指定しない場合は全ての SDL サブシステムが起動します。 SDL サブシステムのシンボルは :audio, :events, :game_controller, :haptic, :joystick, :sensor, :timer, :video です。
22 23 24 25 |
# File 'lib/rb_sdl2/sdl.rb', line 22 def init(*flags) err = ::SDL.Init(to_num(*flags)) raise RbSDL2Error if err < 0 end |
.init?(*flags) ⇒ Boolean
SDL サブシステムが初期化されているか確認します。 flags に与えたシンボルの SDL サブシステムが全て起動している時に true を戻します。
29 |
# File 'lib/rb_sdl2/sdl.rb', line 29 def init?(*flags) = ::SDL.WasInit(mask = to_num(*flags)) == mask |
.ptr_to_str(ptr) ⇒ Object
SDL String(C String, UTF-8) を Ruby String へ変換します。 戻り値の文字列エンコードは UTF-8 です。ptr へ与えたポインター先のメモリーは開放しません。 ptr へ NULL ポインターを与えても安全です。その場合は空文字を戻します。 戻り値の文字列は Ruby 側へコピーされたものです。これを変更しても SDL のメモリー領域に影響を与えません。
57 58 59 60 61 62 63 |
# File 'lib/rb_sdl2/sdl.rb', line 57 def ptr_to_str(ptr) if ptr.null? "" else ptr.read_string.force_encoding(Encoding::UTF_8) end end |
.quit ⇒ Object
SDL を終了します。RbSDL2 ではアプリケーションの終了時にこのメソッドを呼ぶ必要はありません。 終了後に再び SDL サブシステムを起動する必要がある場合は再度 init メソッドを呼ぶことができます。 このメソッドは何度でも呼び出すことができます。
34 |
# File 'lib/rb_sdl2/sdl.rb', line 34 def quit = ::SDL.Quit |
.str_to_sdl(s) ⇒ Object
Ruby String を SDL で取り扱う String へ変換します。 戻り値は UTF-8 エンコードされた変更不可能な文字列です。 内部では s へ与えた文字列をコピーし UTF-8 エンコードへ変換します。(元の文字列への影響はありません) 文字列に NUL 文字が含まれる場合は ArgumentError が発生します。
72 73 74 75 76 77 78 79 80 |
# File 'lib/rb_sdl2/sdl.rb', line 72 def str_to_sdl(s) # dup -> UTF-8 -> ASCII-8BIT # ASCII-8BIT にするのは size メソッドで正確なバイト数を得るため。(bytesize は忘れることがある) # frozen にして SDL 用文字列を変更(例えばエンコーディング)させない。 sdl = String.new(s).encode!(Encoding::UTF_8).force_encoding(Encoding::ASCII_8BIT).freeze # NUL 文字の混入チェック raise ArgumentError if sdl.include?(NUL) sdl end |