Class: Gosu::Image

Inherits:
Object
  • Object
show all
Defined in:
lib/gosu_android/graphics/image.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Image

Returns a new instance of Image.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/gosu_android/graphics/image.rb', line 10

def initialize(*args)
  case args.length
  #Argument is ImageData
  when 1
    initialize_1 args[0]
  when 2
    if args[1].class == Bitmap
      initialize_3_bitmap(args[0], args[1])
    else
      initialize_3_file_name(args[0], args[1])
    end
  when 3
    if args[1].class == Bitmap
      initialize_3_bitmap(args[0], args[1], args[2])
    else
      initialize_3_file_name(args[0], args[1], args[2])
    end
  when 6
    if args[1].class == Bitmap
      initialize_7_bitmap(args[0], args[1], args[2], args[3], args[4], args[5])
    else
      initialize_7_file_name(args[0], args[1], args[2], args[3], args[4], args[5])
    end
  when 7
    if args[1].class == Bitmap
      initialize_7_bitmap(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
    else
      initialize_7_file_name(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
    end
  else
    raise ArgumentError
  end
end

Class Method Details

.load_tiles(window, bmp, tile_width, tile_height, tileable) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/gosu_android/graphics/image.rb', line 119

def self.load_tiles(window, bmp, tile_width, tile_height, tileable)
  images = []

  #If bmp is a file path
  if bmp.class == String or bmp.class == Fixnum
    bmp = Gosu::load_image_file(window, bmp)
  end

  if (tile_width > 0)
    tiles_x = bmp.width / tile_width
  else
    tiles_x = -tile_width
    tile_width = bmp.width / tiles_x
  end

  if (tile_height > 0)
    tiles_y = bmp.height / tile_height
  else
    tiles_y = -tile_height
    tile_height = bmp.height / tiles_y
  end

  tiles_y.times do |y|
    tiles_x.times do |x|
      images.push Image.new(window, bmp, x * tile_width, y * tile_height, tile_width, tile_height, tileable)
    end
  end
  images
end

Instance Method Details

#draw(x, y, z, factor_x = 1, factor_y = 1, c = Color::WHITE, mode = AM_DEFAULT) ⇒ Object



83
84
85
86
87
# File 'lib/gosu_android/graphics/image.rb', line 83

def draw(x, y, z, factor_x = 1, factor_y = 1, c = Color::WHITE, mode = AM_DEFAULT)
  x2 = x + width*factor_x
  y2 = y + height*factor_y
  @data.draw(x, y, c, x2, y, c, x, y2, c, x2, y2, c, z, mode)
end

#draw_rot(x, y, z, angle, center_x = 0.5, center_y = 0.5, factor_x = 1.0, factor_y = 1.0, c = Color::WHITE, mode = AM_DEFAULT) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/gosu_android/graphics/image.rb', line 89

def draw_rot(x, y, z, angle, center_x = 0.5, center_y = 0.5, factor_x = 1.0,
  factor_y = 1.0, c = Color::WHITE, mode = AM_DEFAULT)

  size_y = width  * factor_x
  size_y = height * factor_y
  offs_x = Gosu::offset_x(angle, 1)
  offs_y = Gosu::offset_y(angle, 1)

  #Offset to the centers of the original Image's edges when it is rotated
  #by <angle> degrees.
  dist_to_left_x   = +offs_y * size_y * center_x
  dist_to_left_y   = -offs_x * size_y * center_x
  dist_to_right_x  = -offs_y * size_y * (1 - center_x)
  dist_to_right_y  = +offs_x * size_y * (1 - center_x)
  dist_to_top_x    = +offs_x * size_y * center_y
  dist_to_top_y    = +offs_y * size_y * center_y
  dist_to_bottom_x = -offs_x * size_y * (1 - center_y)
  dist_to_bottom_y = -offs_y * size_y * (1 - center_y)

  @data.draw(x + dist_to_left_x  + dist_to_top_x,
    y + dist_to_left_y  + dist_to_top_y, c,
    x + dist_to_right_x + dist_to_top_x,
    y + dist_to_right_y + dist_to_top_y, c,
    x + dist_to_left_x  + dist_to_bottom_x,
    y + dist_to_left_y  + dist_to_bottom_y, c,
    x + dist_to_right_x + dist_to_bottom_x,
    y + dist_to_right_y + dist_to_bottom_y,
    c, z, mode)
end

#heightObject



79
80
81
# File 'lib/gosu_android/graphics/image.rb', line 79

def height
  @data.height
end

#widthObject



75
76
77
# File 'lib/gosu_android/graphics/image.rb', line 75

def width
  @data.width
end