Module: RbSDL2::Filesystem

Defined in:
lib/rb_sdl2/filesystem.rb

Class Method Summary collapse

Class Method Details

.base_pathObject

RbSDL2 にロードされた SDL2 の配置パスを戻す。パスの末尾にはパスの区切り文字がかならずある。パスの区切り記号は環境依存である。Windows であれば “" が使われる。Ruby は環境依存のパスの区切り文字を正しく取り扱うことができる。



8
9
10
11
12
13
14
# File 'lib/rb_sdl2/filesystem.rb', line 8

def base_path
  ptr = ::SDL2.SDL_GetBasePath
  raise RbSDL2Error if ptr.null?
  ptr.read_string.force_encoding(Encoding::UTF_8)
ensure
  ::SDL2.SDL_free(ptr)
end

.pref_path(org_name, app_name) ⇒ Object

アプリケーションが書き込むことのできるパスを戻す。このパスはユーザ毎に存在し、かつアプリケーション固有のものであり OS によって保証されている。org_name, app_name 引数はパスの生成に利用される。引数にパスの区切り記号がある場合はそれを取り除く。ここに SDL2 が提示した守るべきルールの要約を記す。

  • アプリケーション内でこのメソッドw呼び出す際は org_name は常に同じ文字列を使うこと。

  • アプリケーションごとに違う app_name を使うこと.

  • アプリケーションに一度割り当てた app_name は変更しないこと。

  • 使用する文字はアルファベット, 数字, 空白のみにすること.

注意: このメソッドを呼ぶと SDL はこのメソッドが戻すパスを実際に作成する。書き込みを行わなかった場合、空のフォルダーが残る。引数に空文字を渡しすことも、また既存のフォルダーになるように引数を与えることもできる。SDL が知りたいことはアプリケーションがアクセス可能かどうかだけだ。エラーが出るかどうかはユーザが設定するパスのアクセス制限による。



30
31
32
33
34
35
36
37
# File 'lib/rb_sdl2/filesystem.rb', line 30

def pref_path(org_name, app_name)
  ptr = ::SDL2.SDL_GetPrefPath(org_name.encode(Encoding::UTF_8),
                               app_name.encode(Encoding::UTF_8))
  raise RbSDL2Error if ptr.null?
  ptr.read_string.force_encoding(Encoding::UTF_8)
ensure
  ::SDL2.SDL_free(ptr)
end