#==================================================================#
# 自動換行 v1.00 by 禾西 on 2012.07.11
#------------------------------------------------------------------#
# * draw_lines(int x, int y, Bitmap bmp, String str, int max_char, int line_gap)
#     x, y 開始描繪的左上角坐標
#     bmp  需要描繪文字的位圖
#     str  需要換行的文字
#     max_char 一行最大的字符數
#     line_gap 行與行之間的間距
#==================================================================#
#
#調用方法
#    sp = Sprite.new
#    sp.bitmap = Bitmap.new(100,100)
#    draw_lines(0, 0, sp.bitmap, "不賣萌不給幫助!液!", 5, 1)
#
#==================================================================#
def draw_lines(x, y, bmp, str, max_char, line_gap)
  # 利用 split 劃分字符。
  # 這裡將假設:英語字符和漢字字符有同樣的寬度……
  # ……盡管很多字體都不是這樣(漢字比英語寬得多)。
  char_arr = str.split(//)
  while char_arr.size > 0
    str_buff = ""
    n = 0
    # 兩個循環:這一個 while 的作用是把一行的字符組合起來,
    # 免掉計算每個字符的 x 值位置。
    while (char_arr.size > 0 && n < max_char)
      n += 1
      str_buff += char_arr.shift
    end
    # 這個 while 的作用是描繪一行的字符,并計算下一行的 y 值。
    rect = bmp.text_size(str) 
    rect.x = x
    rect.y = y
    bmp.draw_text(rect, str_buff)
    # y 值 = 字體高度 + 間隔
    # 這樣做回避了字體比行間隔更大的問題。
    y += (rect.width + line_gap)
  end
end