class RbSDL2::Window::Display::GammaRamp

Public Class Methods

[](*a) click to toggle source
# File lib/rb_sdl2/window/display.rb, line 38
def [](*a)
  raise ArgumentError if a.length != 256
  ptr = ::FFI::MemoryPointer.new(:uint16, 256).write_array_of_uint16(a)
  obj = allocate
  obj.__send__(:initialize, ptr)
  obj
end
new(gamma) click to toggle source
Calls superclass method
# File lib/rb_sdl2/window/display.rb, line 46
def new(gamma)
  ptr = ::FFI::MemoryPointer.new(:uint16, 256)
  ::SDL2.SDL_CalculateGammaRamp(gamma, ptr)
  super(ptr)
end
new(ptr) click to toggle source
# File lib/rb_sdl2/window/display.rb, line 53
def initialize(ptr)
  @ptr = ptr
end

Public Instance Methods

gamma=(rgb) click to toggle source
r_gamma, g_gamma, b_gamma

| gamma

# File lib/rb_sdl2/window/display.rb, line 64
def gamma=(rgb)
  r, g, b = *rgb
  self.gamma_ramp = (!g && !b ? [r, r, r] : [r, g, b]).map { |f| GammaRamp.new(f) }
end
gamma_ramp() click to toggle source
# File lib/rb_sdl2/window/display.rb, line 69
def gamma_ramp
  rgb = Array.new(3) { GammaRamp.new }
  err = ::SDL2.SDL_GetWindowGammaRamp(self, *rgb)
  raise RbSDL2Error if err < 0
  rgb.map(&:to_a)
end
gamma_ramp=(r_g_b) click to toggle source

r_g_b: [[r,…],,[b,…]] 画面全体に影響を与える。OSからリセットされることもある。 アプリケーションが終了しても永続的に影響をあたえる。ユーザにとって望ましくないだろう。

# File lib/rb_sdl2/window/display.rb, line 79
def gamma_ramp=(r_g_b)
  err = ::SDL2.SDL_SetWindowGammaRamp(self, *r_g_b.map { |a| GammaRamp[*a] })
  raise RbSDL2Error if err < 0
end
to_a(= @ptr.read_array_of_uint16(256)) click to toggle source
# File lib/rb_sdl2/window/display.rb, line 59
  def to_a = @ptr.read_array_of_uint16(256)
  alias to_ary to_a
end
to_ptr(= @ptr) click to toggle source
# File lib/rb_sdl2/window/display.rb, line 57
    def to_ptr = @ptr

    def to_a = @ptr.read_array_of_uint16(256)
    alias to_ary to_a
  end

  # [r_gamma, g_gamma, b_gamma] | gamma
  def gamma=(rgb)
    r, g, b = *rgb
    self.gamma_ramp = (!g && !b ? [r, r, r] : [r, g, b]).map { |f| GammaRamp.new(f) }
  end

  def gamma_ramp
    rgb = Array.new(3) { GammaRamp.new }
    err = ::SDL2.SDL_GetWindowGammaRamp(self, *rgb)
    raise RbSDL2Error if err < 0
    rgb.map(&:to_a)
  end

  # r_g_b: [[r,...],[g,...],[b,...]]
  # 画面全体に影響を与える。OSからリセットされることもある。
  # アプリケーションが終了しても永続的に影響をあたえる。ユーザにとって望ましくないだろう。
  def gamma_ramp=(r_g_b)
    err = ::SDL2.SDL_SetWindowGammaRamp(self, *r_g_b.map { |a| GammaRamp[*a] })
    raise RbSDL2Error if err < 0
  end
end