Class: DXRubySDL::Image

Inherits:
Object
  • Object
show all
Includes:
Color
Defined in:
lib/dxruby_sdl/image.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Color

to_sdl_alpha, to_sdl_color

Constructor Details

#initialize(width, height, color = [0, 0, 0, 0]) ⇒ Image

Returns a new instance of Image.



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dxruby_sdl/image.rb', line 32

def initialize(width, height, color = [0, 0, 0, 0])
  @color = color

  if width == 0 && height == 0
    return
  end

  @_surface =
    SDL::Surface.new(SDL::SWSURFACE, width, height, Window._screen)
  @_surface.fill_rect(0, 0, width, height, @color)
end

Instance Attribute Details

#_surfaceObject (readonly)

Returns the value of attribute _surface.



7
8
9
# File 'lib/dxruby_sdl/image.rb', line 7

def _surface
  @_surface
end

Class Method Details

.load(filename, x = nil, y = nil, width = nil, height = nil) ⇒ Object



9
10
11
12
13
14
# File 'lib/dxruby_sdl/image.rb', line 9

def self.load(filename, x = nil, y = nil, width = nil, height = nil)
  image = new(0, 0)
  surface = SDL::Surface.load(filename)
  image.instance_variable_set('@_surface', surface)
  return image
end

.load_tiles(filename, xcount, ycount) ⇒ Object Also known as: loadTiles, load_to_array



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/dxruby_sdl/image.rb', line 16

def self.load_tiles(filename, xcount, ycount)
  surface = SDL::Surface.load(filename)
  width = surface.w / xcount
  height = surface.h / ycount
  images = []
  ycount.times do |y|
    xcount.times do |x|
      image = new(0, 0)
      s = surface.copy_rect(x * width, y * height, width, height)
      image.instance_variable_set('@_surface', s)
      images << image
    end
  end
  return images
end

Instance Method Details

#box(x1, y1, x2, y2, color) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'lib/dxruby_sdl/image.rb', line 73

def box(x1, y1, x2, y2, color)
  x = x1 < x2 ? x1 : x2
  w = (x2 - x1).abs
  y = y1 < y2 ? y1 : y2
  h = (y2 - y1).abs
  lock do
    @_surface.draw_rect(x, y, w, h, to_sdl_color(color))
  end
end

#circle(x, y, r, color) ⇒ Object



66
67
68
69
70
71
# File 'lib/dxruby_sdl/image.rb', line 66

def circle(x, y, r, color)
  lock do
    @_surface.draw_circle(x, y, r, to_sdl_color(color), false, true,
                          to_sdl_alpha(color))
  end
end

#heightObject



48
49
50
# File 'lib/dxruby_sdl/image.rb', line 48

def height
  return @_surface.h
end

#line(x1, y1, x2, y2, color) ⇒ Object



59
60
61
62
63
64
# File 'lib/dxruby_sdl/image.rb', line 59

def line(x1, y1, x2, y2, color)
  lock do
    @_surface.draw_line(x1, y1, x2, y2,
                        to_sdl_color(color), true, to_sdl_alpha(color))
  end
end

#slice(x, y, width, height) ⇒ Object



52
53
54
55
56
57
# File 'lib/dxruby_sdl/image.rb', line 52

def slice(x, y, width, height)
  s = @_surface.copy_rect(x, y, width, height)
  image = Image.new(0, 0)
  image.instance_variable_set('@_surface', s)
  return image
end

#widthObject



44
45
46
# File 'lib/dxruby_sdl/image.rb', line 44

def width
  return @_surface.w
end