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 |