Class: RbSDL2::Palette
- Inherits:
-
Object
- Object
- RbSDL2::Palette
- Defined in:
- lib/rb_sdl2/palette.rb
Defined Under Namespace
Classes: PalettePointer
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #[](nth) ⇒ Object
-
#[]=(nth, color) ⇒ Object
color 引数には 3要素以上の配列であること。4要素目以降は無視される。 color 引数は内部で splat する。これに対応していれば配列以外のオブジェクトでもよい。 パレットのカラーが描画に使われるときはアルファ値は無視されて不透明(ALPHA_OPAQUE)として扱う。.
- #each ⇒ Object
-
#initialize(ptr) ⇒ Palette
constructor
A new instance of Palette.
- #inspect ⇒ Object
- #length ⇒ Object (also: #size)
- #to_a ⇒ Object
- #to_ptr ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(ptr) ⇒ Palette
Returns a new instance of Palette.
35 36 37 |
# File 'lib/rb_sdl2/palette.rb', line 35 def initialize(ptr) @st = ::SDL::Palette.new(ptr) end |
Class Method Details
.[](*color) ⇒ Object
14 15 16 17 18 |
# File 'lib/rb_sdl2/palette.rb', line 14 def [](*color) plt = new(color.length) color.each.with_index { |c, nth| plt[nth] = c } plt end |
.new(num_colors) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/rb_sdl2/palette.rb', line 20 def new(num_colors) # SDL_AllocPalette() のエラーは引数が < 1、または必要なメモリー領域がない場合。 # パレットのカラーは作成時に全て [255, 255, 255, 255] で埋められる。 ptr = PalettePointer.new(::SDL.AllocPalette(num_colors)) raise RbSDL2Error if ptr.null? super(ptr) end |
.to_ptr(ptr) ⇒ Object
28 29 30 31 32 |
# File 'lib/rb_sdl2/palette.rb', line 28 def to_ptr(ptr) obj = allocate obj.__send__(:initialize, PalettePointer.to_ptr(ptr)) obj end |
Instance Method Details
#==(other) ⇒ Object
39 40 41 |
# File 'lib/rb_sdl2/palette.rb', line 39 def ==(other) other.respond_to?(:to_ptr) && other.to_ptr == to_ptr end |
#[](nth) ⇒ Object
43 44 45 46 |
# File 'lib/rb_sdl2/palette.rb', line 43 def [](nth) raise ArgumentError if nth < 0 || length <= nth ::SDL::Color.new(@st[:colors] + ::SDL::Color.size * nth).values end |
#[]=(nth, color) ⇒ Object
color 引数には 3要素以上の配列であること。4要素目以降は無視される。 color 引数は内部で splat する。これに対応していれば配列以外のオブジェクトでもよい。 パレットのカラーが描画に使われるときはアルファ値は無視されて不透明(ALPHA_OPAQUE)として扱う。
51 52 53 54 55 56 57 |
# File 'lib/rb_sdl2/palette.rb', line 51 def []=(nth, color) raise ArgumentError if nth < 0 || length <= nth c = ::SDL::Color.new c[:r], c[:g], c[:b] = color err = ::SDL.SetPaletteColors(self, c, nth, 1) raise RbSDL2Error if err < 0 end |
#each ⇒ Object
59 |
# File 'lib/rb_sdl2/palette.rb', line 59 def each = length.times { |nth| yield(self[nth]) } |
#inspect ⇒ Object
61 62 63 |
# File 'lib/rb_sdl2/palette.rb', line 61 def inspect "#<#{self.class.name} colors=#{length}>" end |
#length ⇒ Object Also known as: size
65 |
# File 'lib/rb_sdl2/palette.rb', line 65 def length = @st[:ncolors] |
#to_a ⇒ Object
68 |
# File 'lib/rb_sdl2/palette.rb', line 68 def to_a = to_enum.to_a |
#to_ptr ⇒ Object
70 |
# File 'lib/rb_sdl2/palette.rb', line 70 def to_ptr = @st.to_ptr |
#version ⇒ Object
72 |
# File 'lib/rb_sdl2/palette.rb', line 72 def version = @st[:version] |