Class: RbSDL2::Window::HitTest

Inherits:
FFI::Function
  • Object
show all
Defined in:
lib/rb_sdl2/window/hit_test.rb

Instance Method Summary collapse

Constructor Details

#initialize(proc) ⇒ HitTest

proc には引数を1つ取るコーラブル・オブジェクトを与えます。 コーラブル・オブジェクトの引数に与えられる値はウィンドウのクリックされた位置を表す配列([x, y])です。 コールバックは整数を戻す必要があります。何もしないのであれば SDL_HITTEST_NORMAL を戻します。 詳しくは SDL_HitTestResult 列挙体を参照してください。 コールバックを呼び出したウィンドウの情報を受け取ることはできません。 コーラブル・オブジェクトに対応するウィンドウ・オブジェクトを取り込むことで同じことができます。



21
22
23
24
25
26
27
28
# File 'lib/rb_sdl2/window/hit_test.rb', line 21

def initialize(proc)
  # SDL_HitTestResult SDL_HitTest(SDL_Window* win, const SDL_Point* area, void* data)
  super(:int, [:pointer, :pointer, :pointer]) do |_win, area, _data|
    # コールバック実行終了を OS が待つようなので、与えらえた window ポインターは有効なものとしてよいだろう。
    # area には Point のアドレスが入る。Point は x, y の2つの int 型メンバーである。
    proc.call(::SDL::Point.new(area).values)
  end
end