Class: RbSDL2::Cursor
- Inherits:
-
Object
- Object
- RbSDL2::Cursor
- Defined in:
- lib/rb_sdl2/cursor.rb
Defined Under Namespace
Classes: CursorPointer
Class Method Summary collapse
-
.current=(cursor) ⇒ Object
nil を与えた場合デフォルトカーソルが設定されます。.
- .current?(cursor) ⇒ Boolean
- .hide ⇒ Object
-
.new(obj = nil, hot: nil) ⇒ Object
obj が Surface オブジェクトの時はカラーカーソルを作成します。 その際に hot 引数にカーソルの判定位置を与えることができます。値は [x, y] です。 引数に与えた Surface オブジェクトは SDL 側にコピーされるため呼び出し後に安全に開放できます。 obj が Symbol の時はシステムカーソルを作成します。 Symbol は :arrow, :i_beam, :wait, :crosshair, :wait_arrow, :size_nw_se, :size_ne_sw, :size_we, :sie_ns, :size_all, :no, :hand が指定できます。 obj が nil の場合はデフォルトカーソルを作成します。.
- .show ⇒ Object
- .shown? ⇒ Boolean
-
.update ⇒ Object
カーソルの再描画を行います。.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#current! ⇒ Object
自身をカレントカーソルに設定します。カーソルの表示状態は変更されません。.
-
#current? ⇒ Boolean
自身がカレントカーソルの場合に true を戻します。.
-
#hide ⇒ Object
自身がカレントカーソルの場合のみカーソルを非表示にします。.
-
#initialize(ptr) ⇒ Cursor
constructor
A new instance of Cursor.
-
#show ⇒ Object
自身を表示カーソルにします。この時カレントカーソルは自身に設定されています。.
-
#shown? ⇒ Boolean
自身がカレントカーソルの場合かつカーソル表示中の時に true を戻します。.
- #to_ptr ⇒ Object
Constructor Details
#initialize(ptr) ⇒ Cursor
Returns a new instance of Cursor.
89 90 91 |
# File 'lib/rb_sdl2/cursor.rb', line 89 def initialize(ptr) @ptr = ptr end |
Class Method Details
.current=(cursor) ⇒ Object
nil を与えた場合デフォルトカーソルが設定されます。
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rb_sdl2/cursor.rb', line 16 def current=(cursor) @current = if cursor.nil? ::SDL.SetCursor(::SDL.GetDefaultCursor) # => nil elsif Cursor === cursor ::SDL.SetCursor(cursor) cursor else raise TypeError end end |
.current?(cursor) ⇒ Boolean
27 |
# File 'lib/rb_sdl2/cursor.rb', line 27 def current?(cursor) = ::SDL.GetCursor == cursor.to_ptr |
.hide ⇒ Object
29 30 31 32 |
# File 'lib/rb_sdl2/cursor.rb', line 29 def hide ::SDL.ShowCursor(::SDL::DISABLE) nil end |
.new(obj = nil, hot: nil) ⇒ Object
obj が Surface オブジェクトの時はカラーカーソルを作成します。 その際に hot 引数にカーソルの判定位置を与えることができます。値は [x, y] です。 引数に与えた Surface オブジェクトは SDL 側にコピーされるため呼び出し後に安全に開放できます。 obj が Symbol の時はシステムカーソルを作成します。 Symbol は :arrow, :i_beam, :wait, :crosshair, :wait_arrow, :size_nw_se, :size_ne_sw, :size_we, :sie_ns, :size_all, :no, :hand が指定できます。 obj が nil の場合はデフォルトカーソルを作成します。
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/rb_sdl2/cursor.rb', line 51 def new(obj = nil, hot: nil) ptr = CursorPointer.new( case obj when Surface hot_x, hot_y = hot # SDL_CreateColorCursor() は与えられた surface をコピーする。 # 呼び出し後に引数に与えた surface オブジェクトは安全に開放できる。 ::SDL.CreateColorCursor(obj, hot_x, hot_y) when Symbol id = case obj when :arrow then ::SDL::SYSTEM_CURSOR_ARROW when :i_beam then ::SDL::SYSTEM_CURSOR_IBEAM when :wait then ::SDL::SYSTEM_CURSOR_WAIT when :crosshair then ::SDL::SYSTEM_CURSOR_CROSSHAIR when :wait_arrow then ::SDL::SYSTEM_CURSOR_WAITARROW when :size_nw_se then ::SDL::SYSTEM_CURSOR_SIZENWSE when :size_ne_sw then ::SDL::SYSTEM_CURSOR_SIZENESW when :size_we then ::SDL::SYSTEM_CURSOR_SIZEWE when :size_ns then ::SDL::SYSTEM_CURSOR_SIZENS when :size_all then ::SDL::SYSTEM_CURSOR_SIZEALL when :no then ::SDL::SYSTEM_CURSOR_NO when :hand then ::SDL::SYSTEM_CURSOR_HAND else raise ArgumentError end ::SDL.CreateSystemCursor(id) when nil # SDL 側にあるデフォルトカーソルのポインターを戻す。このポインターはシングルトンである。 # ポインターを SDL_FreeCursor() へ与えても安全である。SDL 内部では開放されない。 ::SDL.GetDefaultCursor else raise ArgumentError end ) raise RbSDL2Error if ptr.null? super(ptr) end |
.show ⇒ Object
34 35 36 37 |
# File 'lib/rb_sdl2/cursor.rb', line 34 def show ::SDL.ShowCursor(::SDL::ENABLE) nil end |
.shown? ⇒ Boolean
39 |
# File 'lib/rb_sdl2/cursor.rb', line 39 def shown? = ::SDL.ShowCursor(::SDL::QUERY) == ::SDL::ENABLE |
.update ⇒ Object
カーソルの再描画を行います。
42 |
# File 'lib/rb_sdl2/cursor.rb', line 42 def update = ::SDL.SetCursor(nil); |
Instance Method Details
#==(other) ⇒ Object
93 94 95 |
# File 'lib/rb_sdl2/cursor.rb', line 93 def ==(other) other.respond_to?(:to_ptr) && other.to_ptr == @ptr end |
#current! ⇒ Object
自身をカレントカーソルに設定します。カーソルの表示状態は変更されません。
98 |
# File 'lib/rb_sdl2/cursor.rb', line 98 def current! = Cursor.current = self |
#current? ⇒ Boolean
自身がカレントカーソルの場合に true を戻します。
101 |
# File 'lib/rb_sdl2/cursor.rb', line 101 def current? = Cursor.current?(self) |
#hide ⇒ Object
自身がカレントカーソルの場合のみカーソルを非表示にします。
104 105 106 107 |
# File 'lib/rb_sdl2/cursor.rb', line 104 def hide current? && Cursor.hide self end |
#show ⇒ Object
自身を表示カーソルにします。この時カレントカーソルは自身に設定されています。
110 111 112 113 |
# File 'lib/rb_sdl2/cursor.rb', line 110 def show current! && Cursor.show self end |
#shown? ⇒ Boolean
自身がカレントカーソルの場合かつカーソル表示中の時に true を戻します。
116 |
# File 'lib/rb_sdl2/cursor.rb', line 116 def shown? = current? && Cursor.shown? |
#to_ptr ⇒ Object
118 |
# File 'lib/rb_sdl2/cursor.rb', line 118 def to_ptr = @ptr |