Class: Dedalus::Elements::Image

Inherits:
Atom show all
Defined in:
lib/dedalus/elements/image.rb

Direct Known Subclasses

Icon, Sprite

Instance Attribute Summary collapse

Attributes inherited from Dedalus::Element

#background_color, #color, #height_percent, #margin, #position, #shown, #width_percent

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Dedalus::Element

#big_font, #code_font, #draw_bounding_box, #font, #huge_font, #initialize, #record?, #tiny_font, #view, #window

Constructor Details

This class inherits a constructor from Dedalus::Element

Instance Attribute Details

#invert_xObject

Returns the value of attribute invert_x.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def invert_x
  @invert_x
end

#invert_yObject

Returns the value of attribute invert_y.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def invert_y
  @invert_y
end

#overlay_colorObject

Returns the value of attribute overlay_color.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def overlay_color
  @overlay_color
end

#paddingObject

Returns the value of attribute padding.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def padding
  @padding
end

#pathObject

Returns the value of attribute path.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def path
  @path
end

#z_orderObject

Returns the value of attribute z_order.



4
5
6
# File 'lib/dedalus/elements/image.rb', line 4

def z_order
  @z_order
end

Class Method Details

.descriptionObject



62
63
64
# File 'lib/dedalus/elements/image.rb', line 62

def self.description
  "an image"
end

.example_dataObject



58
59
60
# File 'lib/dedalus/elements/image.rb', line 58

def self.example_data
  { path: "media/images/cosmos.jpg", scale: 0.2, invert_y: true, invert_x: true }
end

Instance Method Details

#assetObject



66
67
68
# File 'lib/dedalus/elements/image.rb', line 66

def asset
  @asset ||= Dedalus::ImageRepository.lookup(path)
end

#dimensionsObject



46
47
48
# File 'lib/dedalus/elements/image.rb', line 46

def dimensions
  [ width, height ]
end

#heightObject



42
43
44
# File 'lib/dedalus/elements/image.rb', line 42

def height
  2*padding + (asset.height * scale)
end

#offsetObject



28
29
30
31
32
# File 'lib/dedalus/elements/image.rb', line 28

def offset
  ox = invert_x ? width : 0
  oy = invert_y ? height : 0
  [ ox, oy ]
end

#overlay_gosu_colorObject



22
23
24
25
26
# File 'lib/dedalus/elements/image.rb', line 22

def overlay_gosu_color
  clr = Palette.decode_color(overlay_color).to_gosu
  clr.alpha = 255
  clr
end

#renderObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/dedalus/elements/image.rb', line 6

def render
  x0,y0 = *position
  ox,oy = *offset

  x_scale = invert_x ? -scale : scale
  y_scale = invert_y ? -scale : scale

  x,y = x0 + padding + ox, y0 + padding + oy

  if overlay_color
    asset.draw(x,y, z_order, x_scale, y_scale, overlay_gosu_color)
  else
    asset.draw(x,y, z_order, x_scale, y_scale)
  end
end

#scaleObject



54
55
56
# File 'lib/dedalus/elements/image.rb', line 54

def scale
  @scale ||= 1.0
end

#widthObject

def z_order @z_order ||= ZOrder::Foreground end



38
39
40
# File 'lib/dedalus/elements/image.rb', line 38

def width
  2*padding + (asset.width * scale)
end