Module: RbSDL2::Window::Shape
- Included in:
- RbSDL2::Window
- Defined in:
- lib/rb_sdl2/window/shape.rb
Defined Under Namespace
Classes: WindowShapeMode
Instance Method Summary collapse
- #alpha_test ⇒ Object
- #alpha_test? ⇒ Boolean
- #color_key ⇒ Object
- #color_key? ⇒ Boolean
- #reverse_alpha_test? ⇒ Boolean
-
#shape_set(surface, alpha_test: nil, color_key: nil) ⇒ Object
サーフェスにアルファ―チャンネルが含まれていない場合、color_key オプションを与える必要がある。 形状マスクの設定を行う。ウィンドウの描画域は透明なピクセルで埋められている。 このメソッド呼び出しの成功後にウィンドウのサーフェスへ描画を行う必要がある。 描画方法はウィンドウのサーフェスまたはレンダラーのどちらを使用してもよい。.
- #shaped? ⇒ Boolean
Instance Method Details
#alpha_test ⇒ Object
45 |
# File 'lib/rb_sdl2/window/shape.rb', line 45 def alpha_test = shaped? && alpha_test? ? shape_mode.alpha_test : nil |
#alpha_test? ⇒ Boolean
47 |
# File 'lib/rb_sdl2/window/shape.rb', line 47 def alpha_test? = shaped? && shape_mode.alpha_test? |
#color_key ⇒ Object
49 |
# File 'lib/rb_sdl2/window/shape.rb', line 49 def color_key = shaped? && color_key? ? shape_mode.color_key : nil |
#color_key? ⇒ Boolean
51 |
# File 'lib/rb_sdl2/window/shape.rb', line 51 def color_key? = shaped? && shape_mode.color_key? |
#reverse_alpha_test? ⇒ Boolean
53 |
# File 'lib/rb_sdl2/window/shape.rb', line 53 def reverse_alpha_test? = shaped? && shape_mode.reverse_alpha_test? |
#shape_set(surface, alpha_test: nil, color_key: nil) ⇒ Object
サーフェスにアルファ―チャンネルが含まれていない場合、color_key オプションを与える必要がある。形状マスクの設定を行う。ウィンドウの描画域は透明なピクセルで埋められている。このメソッド呼び出しの成功後にウィンドウのサーフェスへ描画を行う必要がある。描画方法はウィンドウのサーフェスまたはレンダラーのどちらを使用してもよい。
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/window/shape.rb', line 59 def shape_set(surface, alpha_test: nil, color_key: nil) shape = WindowShapeMode.new if color_key shape.mode = ::SDL::ShapeModeColorKey shape.color_key = color_key elsif alpha_test&.>= 0 shape.mode = ::SDL::ShapeModeBinarizeAlpha shape.alpha_test = alpha_test elsif alpha_test&.< 0 shape.mode = ::SDL::ShapeModeReverseBinarizeAlpha shape.alpha_test = alpha_test.abs else shape.mode = ::SDL::ShapeModeDefault end err = ::SDL.SetWindowShape(self, surface, shape) # SetWindowShape は WINDOW_LACKS_SHAPE を返すことはない。 if err == ::SDL::NONSHAPEABLE_WINDOW raise RbSDL2Error, "unshaped window" elsif err == ::SDL::INVALID_SHAPE_ARGUMENT raise RbSDL2Error, "Invalid shape argument. \ The size of the window and the size of the surface do not match. \ Or the color key is not specified in the surface without alpha channel." elsif err < 0 raise RbSDL2Error end surface end |
#shaped? ⇒ Boolean
88 |
# File 'lib/rb_sdl2/window/shape.rb', line 88 def shaped? = ::SDL.IsShapedWindow(self) == ::SDL::TRUE |