Method: MiniGL::TextHelper#write_line
- Defined in:
- lib/minigl/text.rb
#write_line(text, x = nil, y = nil, mode = :left, color = 0, alpha = 0xff, effect = nil, effect_color = 0, effect_size = 1, effect_alpha = 0xff, z_index = 0) ⇒ Object
- x
-
The horizontal reference for drawing the text. If
modeis:left, all text will be drawn from this point to the right; ifmodeis:right, all text will be drawn from this point to the left; and ifmodeis:center, the text will be equally distributed to the left and to the right of this point. - y
-
The vertical reference for drawing the text. All text will be drawn from this point down.
- mode
-
The alignment of the text. Valid values are
:left,:rightand:center. - color
-
The color of the text, in hexadecimal RRGGBB format.
- alpha
-
The opacity of the text. Valid values vary from 0 (fully transparent) to 255 (fully opaque).
- effect
-
Effect to add to the text. It can be either
nil, for no effect,:borderfor bordered text, or:shadowfor shadowed text (the shadow is always placed below and to the right of the text). - effect_color
-
Color of the effect, if any.
- effect_size
-
Size of the effect, if any. In the case of
:border, this will be the width of the border (the border will only look good wheneffect_sizeis relatively small, compared to the size of the font); in the case of:shadow, it will be the distance between the text and the shadow. - effect_alpha
-
Opacity of the effect, if any. For shadows, it is usual to provide less than 255.
- z_index
-
The z-order to draw the object. Objects with larger z-orders will be drawn on top of the ones with smaller z-orders.
Obs.: This method accepts named parameters, but text, x and y are mandatory.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/minigl/text.rb', line 49 def write_line(text, x = nil, y = nil, mode = :left, color = 0, alpha = 0xff, effect = nil, effect_color = 0, effect_size = 1, effect_alpha = 0xff, z_index = 0) if text.is_a? Hash x = text[:x] y = text[:y] mode = text.fetch(:mode, :left) color = text.fetch(:color, 0) alpha = text.fetch(:alpha, 0xff) effect = text.fetch(:effect, nil) effect_color = text.fetch(:effect_color, 0) effect_size = text.fetch(:effect_size, 1) effect_alpha = text.fetch(:effect_alpha, 0xff) z_index = text.fetch(:z_index, 0) text = text[:text] end color = (alpha << 24) | color rel = case mode when :left then 0 when :center then 0.5 when :right then 1 else 0 end if effect effect_color = (effect_alpha << 24) | effect_color if effect == :border @font.draw_markup_rel text, x - effect_size, y - effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x, y - effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x + effect_size, y - effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x + effect_size, y, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x + effect_size, y + effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x, y + effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x - effect_size, y + effect_size, z_index, rel, 0, 1, 1, effect_color @font.draw_markup_rel text, x - effect_size, y, z_index, rel, 0, 1, 1, effect_color elsif effect == :shadow @font.draw_markup_rel text, x + effect_size, y + effect_size, z_index, rel, 0, 1, 1, effect_color end end @font.draw_markup_rel text, x, y, z_index, rel, 0, 1, 1, color end |