Class: Miyako::Font
Overview
フォント管理クラス
フォントは、等幅フォント奨励(プロポーショナルフォントを選ぶと、文字が正しく描画されない可能性あり)
Constant Summary collapse
- @@font_cache =
{}
- @@name_2_font_path =
Hash.new
- @@font_base_path =
Hash.new
- @@font_base_name =
Hash.new
- @@initialized =
false
Instance Attribute Summary collapse
-
#ascent ⇒ Object
readonly
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#color ⇒ Object
Returns the value of attribute color.
-
#descent ⇒ Object
readonly
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#height ⇒ Object
readonly
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#hspace ⇒ Object
Returns the value of attribute hspace.
-
#line_skip ⇒ Object
readonly
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#shadow_color ⇒ Object
Returns the value of attribute shadow_color.
-
#shadow_margin ⇒ Object
Returns the value of attribute shadow_margin.
-
#size ⇒ Object
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#text ⇒ Object
OS_MAC_OS_X = “mac_osx” ORG_ENC = “UTF-8” NEW_ENC = “UTF-8-MAC”.
-
#use_shadow ⇒ Object
Returns the value of attribute use_shadow.
-
#vspace ⇒ Object
Returns the value of attribute vspace.
Class Method Summary collapse
-
.create_font_path ⇒ Object
:nodoc:.
-
.findFontPath(fname) ⇒ Object
:nodoc:.
-
.get_font_inner(fname, fpath, size = 16) ⇒ Object
:nodoc:.
-
.init ⇒ Object
フォント関連の初期化処理 既に初期化済みの時はMiyakoErrorが発生する.
-
.initialized? ⇒ Boolean
フォント周辺の初期化がされた?.
-
.sans_serif ⇒ Object
Sans Serifフォント(ゴシックフォント)を取得する マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、 共通の名称でフォントインスタンスを取得するときに使う(主にゴシックフォント) 返却値:: OSごとに設定されたフォントイン寸タンス(フォントサイズは16).
-
.search_font_path_file(hash, path) ⇒ Object
:nodoc:.
-
.serif ⇒ Object
Serifフォント(明朝フォント)を取得する マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、 共通の名称でフォントインスタンスを取得するときに使う(主に明朝フォント) 返却値:: OSごとに設定されたフォントイン寸タンス(フォントサイズは16).
-
.system_font ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#bold ⇒ Object
フォントの属性をbold(太文字)に設定する ブロックを渡したときは、ブロック評価中のみ太字になる 文字が領域外にはみ出る場合があるので注意! 返却値:: 自分自身.
-
#bold=(f) ⇒ Object
フォントのbold属性を設定する f:: bold属性かどうか(true/false).
-
#bold? ⇒ Boolean
フォントのbold属性の有無を返す 返却値:: bold属性かどうか(true/false).
-
#color_during(color) ⇒ Object
ブロック評価中のみ、フォントの文字の色を変更する color:: 変更する色(の3要素の配列(値:0~255)) 返却値:: 自分自身を返す.
-
#dispose ⇒ Object
フォントインスタンスを解放する.
-
#draw_text(dst, str, x, y) ⇒ Object
文字列を描画する 対象のスプライトに文字列を描画する dst:: 描画先スプライト str:: 描画する文字列 x:: 描画位置x軸 y:: 描画位置Y軸.
-
#get_fit_size(size) ⇒ Object
指定したピクセル数のフォントが十分(欠けることなく)収まるピクセル数を取得する size:: フォントの大きさ(単位:ピクセル) 返却値:: 算出されたピクセル数.
-
#initialize(fname, size = 16) ⇒ Font
constructor
インスタンス生成 指定したフォントファイル名から、フォントインスタンスを生成する。 フォントファイルのパスは、Miyako2.0起動時にファイルパス(カレントディレクトリとシステムのフォントディレクトリ)を 再帰的に検索し、先に見つけた方を採用する(同一ファイル名がカレントディレクトリとシステムのディレクトリに両方 存在するときは、カレントディレクトリを優先する) そのため、フォントファイル名は、パスを指定する必要がない(逆に言うと、パスを指定すると例外が発生する)。 fname:: フォントファイル名(フォントファミリー名不可)。パス指定不可 size:: フォントの大きさ。単位はピクセル。デフォルトは 16 返却値:: 生成されたインスタンスを返す.
-
#initialize_copy(obj) ⇒ Object
:nodoc:.
-
#italic ⇒ Object
フォントの属性をitalic(斜め)に設定する ブロックを渡したときは、ブロック評価中のみ斜体文字になる 文字が領域外にはみ出る場合があるので注意! 返却値:: 自分自身.
-
#italic=(f) ⇒ Object
フォントのitalic属性を設定する f:: italic属性かどうか(true/false).
-
#italic? ⇒ Boolean
フォントのitalic属性の有無を返す 返却値:: italic属性かどうか(true/false).
-
#line_height ⇒ Object
フォントサイズ(yやjなどの下にはみ出る箇所も算出)を取得する 返却値:: 算出されたフォントサイズ.
-
#margin_height(align, height) ⇒ Object
指定した高さで描画する際のマージンを求める 現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。 第1引数に渡す“align”は、以下の3種類のシンボルのどれかを渡す :top:: 上側に描画(マージンはゼロ) :middle:: 中間に描画 :bottom:: 下部に描画.
-
#normal ⇒ Object
フォントの属性をすべてクリアする f:: 自分自身.
-
#render ⇒ Object
文字列を画面に描画する 返却値:: 自分自身を返す.
-
#render_str(text) ⇒ Object
文字列を画面に描画する 引数textは、内部でto_sメソッドを呼び出して文字列化している text:: 描画対象の文字列 返却値:: 自分自身を返す.
-
#render_str_to(dst, text) ⇒ Object
文字列をスプライトに描画する 引数textは、内部でto_sメソッドを呼び出して文字列化している dst:: 描画先スプライト text:: 描画対象の文字列 返却値:: 自分自身を返す.
-
#render_to(dst) ⇒ Object
文字列をスプライトに描画する dst:: 描画先スプライト 返却値:: 自分自身を返す.
-
#render_xy(x, y) ⇒ Object
文字列を画面の指定の位置に描画する x:: x方向位置 y:: y方向位置 返却値:: 自分自身を返す.
-
#render_xy_to(dst, x, y) ⇒ Object
文字列をスプライトの指定の位置に描画する dst:: 描画先スプライト x:: x方向位置 y:: y方向位置 返却値:: 自分自身を返す.
-
#shadow_during(color = @shadow_color, margin = @shadow_margin) ⇒ Object
ブロック評価中のみ、影文字文字の色・マージンを変更する また、ブロック評価中は影文字が強制的に有効になる color:: 変更する色([r,g,b]の3要素の配列(値:0~255))、デフォルトはFont#shadow_colorメソッドの値() margin:: 変更する色(2要素の整数の配列、デフォルトはFont#shadow_marginメソッドの値() 返却値:: 自分自身を返す.
-
#size_during(sz) ⇒ Object
ブロック評価中のみ、フォントの大きさを変更する sz:: 変更するフォントの大きさ(単位:ピクセル) 返却値:: 自分自身を返す.
-
#text_size(txt) ⇒ Object
文字列描画したときの大きさを取得する 現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。 txt:: 算出したい文字列 返却値:: 文字列を描画したときの大きさ(の配列).
-
#under_line ⇒ Object
フォントの属性をunder_line(下線)に設定する ブロックを渡したときは、ブロック評価中のみ下線付き文字になる 返却値:: 自分自身.
-
#under_line=(f) ⇒ Object
フォントのunder_line属性を設定する f:: under_line属性かどうか(true/false).
-
#under_line? ⇒ Boolean
フォントのunder_line属性の有無を返す 返却値:: under_line属性かどうか(true/false).
-
#visible ⇒ Object
描画可能・不可状態を返す 描画可能の時はtrue、不可能なときはfalseを返す 返却値:: true/falseを返す.
-
#visible=(v) ⇒ Object
描画可能・不可状態を設定する 描画可能の時はtrue、不可能なときはfalseを渡す 返却値:: 自分自身を返す.
Methods included from Layout
#add_snap_child, #bottom, #bottom!, #broad_rect, #center, #center!, #centering, #centering!, #copy_layout, #delete_snap_child, #get_snap_children, #get_snap_sprite, #h, #include_snap_child?, #init_layout, #layout_dispose, #left, #left!, #middle, #middle!, #move, #move!, #move_to, #move_to!, #on_move, #outside_bottom, #outside_bottom!, #outside_left, #outside_left!, #outside_right, #outside_right!, #outside_top, #outside_top!, #pos, #rect, #relative_move_to, #relative_move_to!, #reset_snap, #right, #right!, #segment, #set_layout_size, #set_snap_children, #set_snap_sprite, #snap, #top, #top!, #update_layout, #update_layout_position, #w, #x, #y
Methods included from Animation
[], []=, anim_hash, #reset, reset, start, #start, #stop, stop, update, update_animation, #update_animation
Methods included from SpriteBase
#bitmap, #hide, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #rect, #render_d, #show, #to_sprite, #to_unit, #update
Constructor Details
#initialize(fname, size = 16) ⇒ Font
インスタンス生成
指定したフォントファイル名から、フォントインスタンスを生成する。 フォントファイルのパスは、Miyako2.0起動時にファイルパス(カレントディレクトリとシステムのフォントディレクトリ)を 再帰的に検索し、先に見つけた方を採用する(同一ファイル名がカレントディレクトリとシステムのディレクトリに両方 存在するときは、カレントディレクトリを優先する) そのため、フォントファイル名は、パスを指定する必要がない(逆に言うと、パスを指定すると例外が発生する)。
- fname
-
フォントファイル名(フォントファミリー名不可)。パス指定不可
- size
-
フォントの大きさ。単位はピクセル。デフォルトは 16
- 返却値
-
生成されたインスタンスを返す
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/Miyako/API/font.rb', line 153 def initialize(fname, size=16) init_layout @size = size @color = [255, 255, 255] @fname = fname @vspace = 0 @hspace = 0 @bold = false @italic = false @under_line = false @fpath = Font.findFontPath(@fname) or raise MiyakoIOError.new(@fname) @font = Font.get_font_inner(@fname, @fpath, @size) @font.style = SDL::TTF::STYLE_NORMAL init_height @use_shadow = false @shadow_color = [128, 128, 128] @shadow_margin = [2, 2] @unit = SpriteUnitFactory.create @text = "" @visible = true set_layout_size(*self.text_size(@text)) end |
Instance Attribute Details
#ascent ⇒ Object (readonly)
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def ascent @ascent end |
#color ⇒ Object
Returns the value of attribute color.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def color @color end |
#descent ⇒ Object (readonly)
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def descent @descent end |
#height ⇒ Object (readonly)
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def height @height end |
#hspace ⇒ Object
Returns the value of attribute hspace.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def hspace @hspace end |
#line_skip ⇒ Object (readonly)
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def line_skip @line_skip end |
#shadow_color ⇒ Object
Returns the value of attribute shadow_color.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def shadow_color @shadow_color end |
#shadow_margin ⇒ Object
Returns the value of attribute shadow_margin.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def shadow_margin @shadow_margin end |
#size ⇒ Object
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def size @size end |
#text ⇒ Object
OS_MAC_OS_X = “mac_osx”
ORG_ENC = "UTF-8"
NEW_ENC = "UTF-8-MAC"
40 41 42 |
# File 'lib/Miyako/API/font.rb', line 40 def text @text end |
#use_shadow ⇒ Object
Returns the value of attribute use_shadow.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def use_shadow @use_shadow end |
#vspace ⇒ Object
Returns the value of attribute vspace.
41 42 43 |
# File 'lib/Miyako/API/font.rb', line 41 def vspace @vspace end |
Class Method Details
.create_font_path ⇒ Object
:nodoc:
111 112 113 114 115 116 117 118 |
# File 'lib/Miyako/API/font.rb', line 111 def Font.create_font_path #:nodoc: osn = Miyako::getOSName @@font_base_path[osn].each{|path| path = path.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため path = path.tr("\\", "\/") @@name_2_font_path = Font.search_font_path_file(@@name_2_font_path, path) } end |
.findFontPath(fname) ⇒ Object
:nodoc:
120 121 122 123 |
# File 'lib/Miyako/API/font.rb', line 120 def Font.findFontPath(fname) #:nodoc: fname = fname.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため return @@name_2_font_path.fetch(fname, nil) end |
.get_font_inner(fname, fpath, size = 16) ⇒ Object
:nodoc:
125 126 127 128 129 130 131 132 133 |
# File 'lib/Miyako/API/font.rb', line 125 def Font.get_font_inner(fname, fpath, size=16) #:nodoc: if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため fname = fname.encode(Encoding::UTF_8) fpath = fpath.encode(Encoding::UTF_8) end @@font_cache[fname] ||= {} @@font_cache[fname][size] ||= SDL::TTF.open(fpath, size) return @@font_cache[fname][size] end |
.init ⇒ Object
フォント関連の初期化処理
既に初期化済みの時はMiyakoErrorが発生する
89 90 91 92 93 94 |
# File 'lib/Miyako/API/font.rb', line 89 def Font.init raise MiyakoError, "Already initialized!" if @@initialized SDL::TTF.init Font.create_font_path @@initialized = true end |
.initialized? ⇒ Boolean
フォント周辺の初期化がされた?
97 98 99 |
# File 'lib/Miyako/API/font.rb', line 97 def Font.initialized? @@initialized end |
.sans_serif ⇒ Object
Sans Serifフォント(ゴシックフォント)を取得する
マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、 共通の名称でフォントインスタンスを取得するときに使う(主にゴシックフォント)
- 返却値
-
OSごとに設定されたフォントイン寸タンス(フォントサイズは16)
527 528 529 530 531 532 533 |
# File 'lib/Miyako/API/font.rb', line 527 def Font::sans_serif filename = @@font_base_name[Miyako::getOSName]. detect{|base| Font.findFontPath(base[:sans_serif]) }[:sans_serif] return Font.new(filename) end |
.search_font_path_file(hash, path) ⇒ Object
:nodoc:
101 102 103 104 105 106 107 108 109 |
# File 'lib/Miyako/API/font.rb', line 101 def Font.search_font_path_file(hash, path) #:nodoc: Dir.glob(path+"*"){|d| hash = Font.search_font_path_file(hash, d+"/") if test(?d, d) d = d.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため d = d.tr("\\", "\/") hash[$1] = d if (d =~ /\/([^\/\.]+\.tt[fc])\z/ || d =~ /\/([^\/\.]+\.otf)\z/) # MacOSX対応 } return hash end |
.serif ⇒ Object
Serifフォント(明朝フォント)を取得する
マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、 共通の名称でフォントインスタンスを取得するときに使う(主に明朝フォント)
- 返却値
-
OSごとに設定されたフォントイン寸タンス(フォントサイズは16)
518 519 520 521 |
# File 'lib/Miyako/API/font.rb', line 518 def Font::serif filename = @@font_base_name[Miyako::getOSName].detect{|base| Font.findFontPath(base[:serif]) }[:serif] return Font.new(filename) end |
Instance Method Details
#bold ⇒ Object
フォントの属性をbold(太文字)に設定する
ブロックを渡したときは、ブロック評価中のみ太字になる 文字が領域外にはみ出る場合があるので注意!
- 返却値
-
自分自身
289 290 291 292 293 294 295 296 297 298 |
# File 'lib/Miyako/API/font.rb', line 289 def bold if block_given? tbold, self.bold = self.bold?, true yield self.bold = tbold else self.bold = true end return self end |
#bold=(f) ⇒ Object
フォントのbold属性を設定する
- f
-
bold属性かどうか(true/false)
308 309 310 311 312 313 |
# File 'lib/Miyako/API/font.rb', line 308 def bold=(f) @bold = f @font.style |= SDL::TTF::STYLE_BOLD @font.style -= SDL::TTF::STYLE_BOLD unless @bold return self end |
#bold? ⇒ Boolean
フォントのbold属性の有無を返す
- 返却値
-
bold属性かどうか(true/false)
302 303 304 |
# File 'lib/Miyako/API/font.rb', line 302 def bold? return @bold end |
#color_during(color) ⇒ Object
ブロック評価中のみ、フォントの文字の色を変更する
- color
-
変更する色(の3要素の配列(値:0~255))
- 返却値
-
自分自身を返す
240 241 242 243 244 245 246 |
# File 'lib/Miyako/API/font.rb', line 240 def color_during(color) raise MiyakoError, "not given block!" unless block_given? tcolor, self.color = @color, color yield self.color = tcolor return self end |
#dispose ⇒ Object
フォントインスタンスを解放する
281 282 283 |
# File 'lib/Miyako/API/font.rb', line 281 def dispose @font = nil end |
#draw_text(dst, str, x, y) ⇒ Object
文字列を描画する
対象のスプライトに文字列を描画する
- dst
-
描画先スプライト
- str
-
描画する文字列
- x
-
描画位置x軸
- y
-
描画位置Y軸
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 |
# File 'lib/Miyako/API/font.rb', line 387 def draw_text(dst, str, x, y) str = str.encode(Encoding::UTF_8) str.chars{|c| if @use_shadow src2 = @font.renderBlendedUTF8(c, @shadow_color[0], @shadow_color[1], @shadow_color[2]) if src2 SpriteUnitFactory.apply(@unit, {:bitmap=>src2, :ow=>src2.w, :oh=>src2.h}) Miyako::Bitmap.blit_aa(@unit, dst.to_unit, x+@shadow_margin[0], y+@shadow_margin[1]) else break x end end src = @font.renderBlendedUTF8(c, @color[0], @color[1], @color[2]) if src SpriteUnitFactory.apply(@unit, {:bitmap=>src, :ow=>src.w, :oh=>src.h}) Miyako::Bitmap.blit_aa(@unit, dst.to_unit, x, y) else break x end x += chr_size_inner(c) } return x end |
#get_fit_size(size) ⇒ Object
指定したピクセル数のフォントが十分(欠けることなく)収まるピクセル数を取得する
- size
-
フォントの大きさ(単位:ピクセル)
- 返却値
-
算出されたピクセル数
268 269 270 271 272 |
# File 'lib/Miyako/API/font.rb', line 268 def get_fit_size(size) path = Font.findFontPath(@fname) font = SDL::TTF.open(path, size) return (size.to_f * (size.to_f / font.line_skip.to_f)).to_i end |
#initialize_copy(obj) ⇒ Object
:nodoc:
176 177 178 179 180 181 182 183 184 |
# File 'lib/Miyako/API/font.rb', line 176 def initialize_copy(obj) #:nodoc: @size = @size.dup @color = @color.dup @fname = @fname.dup @shadow_color = @shadow_color.dup @shadow_margin = @shadow_margin.dup @unit = @unit.dup @text = @text.dup end |
#italic ⇒ Object
フォントの属性をitalic(斜め)に設定する
ブロックを渡したときは、ブロック評価中のみ斜体文字になる 文字が領域外にはみ出る場合があるので注意!
- 返却値
-
自分自身
319 320 321 322 323 324 325 326 327 328 |
# File 'lib/Miyako/API/font.rb', line 319 def italic if block_given? titalic, self.italic = self.italic?, true yield self.italic = titalic else self.italic = true end return self end |
#italic=(f) ⇒ Object
フォントのitalic属性を設定する
- f
-
italic属性かどうか(true/false)
338 339 340 341 342 343 |
# File 'lib/Miyako/API/font.rb', line 338 def italic=(f) @italic = f @font.style |= SDL::TTF::STYLE_ITALIC @font.style -= SDL::TTF::STYLE_ITALIC unless @italic return self end |
#italic? ⇒ Boolean
フォントのitalic属性の有無を返す
- 返却値
-
italic属性かどうか(true/false)
332 333 334 |
# File 'lib/Miyako/API/font.rb', line 332 def italic? return @italic end |
#line_height ⇒ Object
フォントサイズ(yやjなどの下にはみ出る箇所も算出)を取得する
- 返却値
-
算出されたフォントサイズ
276 277 278 |
# File 'lib/Miyako/API/font.rb', line 276 def line_height return @line_skip + @vspace + (@use_shadow ? @shadow_margin[1] : 0) end |
#margin_height(align, height) ⇒ Object
指定した高さで描画する際のマージンを求める
現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。 第1引数に渡す“align”は、以下の3種類のシンボルのどれかを渡す
- :top
-
上側に描画(マージンはゼロ)
- :middle
-
中間に描画
- :bottom
-
下部に描画
- align
-
描画位置
- height
-
描画する高さ
- 返却値
-
マージンの値
501 502 503 504 505 506 507 508 509 510 511 512 |
# File 'lib/Miyako/API/font.rb', line 501 def margin_height(align, height) case align when :top return 0 when :middle return (height - self.line_height) >> 1 when :bottom return height - self.line_height end #else raise MiyakoError, "Illegal margin_height align! : #{align}" end |
#normal ⇒ Object
フォントの属性をすべてクリアする
- f
-
自分自身
376 377 378 379 |
# File 'lib/Miyako/API/font.rb', line 376 def normal @font.style = 0 return self end |
#render ⇒ Object
文字列を画面に描画する
- 返却値
-
自分自身を返す
413 414 415 416 417 |
# File 'lib/Miyako/API/font.rb', line 413 def render return self unless @visible draw_text(Screen, @text, @layout[:pos][0], @layout[:pos][1]) return self end |
#render_str(text) ⇒ Object
文字列を画面に描画する
引数textは、内部でto_sメソッドを呼び出して文字列化している
- text
-
描画対象の文字列
- 返却値
-
自分自身を返す
453 454 455 456 457 |
# File 'lib/Miyako/API/font.rb', line 453 def render_str(text) return self unless @visible draw_text(Screen, text.to_s, @layout[:pos][0], @layout[:pos][1]) return self end |
#render_str_to(dst, text) ⇒ Object
文字列をスプライトに描画する
引数textは、内部でto_sメソッドを呼び出して文字列化している
- dst
-
描画先スプライト
- text
-
描画対象の文字列
- 返却値
-
自分自身を返す
464 465 466 467 468 |
# File 'lib/Miyako/API/font.rb', line 464 def render_str_to(dst, text) return self unless @visible draw_text(dst, text.to_s, @layout[:pos][0], @layout[:pos][1]) return self end |
#render_to(dst) ⇒ Object
文字列をスプライトに描画する
- dst
-
描画先スプライト
- 返却値
-
自分自身を返す
422 423 424 425 426 |
# File 'lib/Miyako/API/font.rb', line 422 def render_to(dst) return self unless @visible draw_text(dst, @text, @layout[:pos][0], @layout[:pos][1]) return self end |
#render_xy(x, y) ⇒ Object
文字列を画面の指定の位置に描画する
- x
-
x方向位置
- y
-
y方向位置
- 返却値
-
自分自身を返す
432 433 434 435 436 |
# File 'lib/Miyako/API/font.rb', line 432 def render_xy(x, y) return self unless @visible draw_text(Screen, @text, x, y) return self end |
#render_xy_to(dst, x, y) ⇒ Object
文字列をスプライトの指定の位置に描画する
- dst
-
描画先スプライト
- x
-
x方向位置
- y
-
y方向位置
- 返却値
-
自分自身を返す
443 444 445 446 447 |
# File 'lib/Miyako/API/font.rb', line 443 def render_xy_to(dst, x, y) return self unless @visible draw_text(dst, @text, x, y) return self end |
#shadow_during(color = @shadow_color, margin = @shadow_margin) ⇒ Object
ブロック評価中のみ、影文字文字の色・マージンを変更する
また、ブロック評価中は影文字が強制的に有効になる
- color
-
変更する色([r,g,b]の3要素の配列(値:0~255))、デフォルトはFont#shadow_colorメソッドの値()
- margin
- 返却値
-
自分自身を返す
253 254 255 256 257 258 259 260 261 262 263 |
# File 'lib/Miyako/API/font.rb', line 253 def shadow_during(color = @shadow_color, margin = @shadow_margin) raise MiyakoError, "not given block!" unless block_given? tflag, @use_shadow = @use_shadow, true tcolor, @shadow_color = @shadow_color, color tmargin, @shadow_margin = @shadow_margin, margin yield @use_shadow = tflag @shadow_color = tcolor @shadow_margin = tmargin return self end |
#size_during(sz) ⇒ Object
ブロック評価中のみ、フォントの大きさを変更する
- sz
-
変更するフォントの大きさ(単位:ピクセル)
- 返却値
-
自分自身を返す
228 229 230 231 232 233 234 235 |
# File 'lib/Miyako/API/font.rb', line 228 def size_during(sz) raise MiyakoError, "not given block!" unless block_given? tsize = @size self.size = sz yield self.size = tsize return self end |
#text_size(txt) ⇒ Object
文字列描画したときの大きさを取得する
現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。
- txt
-
算出したい文字列
- 返却値
-
文字列を描画したときの大きさ(の配列)
484 485 486 487 488 489 |
# File 'lib/Miyako/API/font.rb', line 484 def text_size(txt) width = txt.chars.inject(0){|r, c| r += (c.bytesize == 1 ? @size >> 1 : @size) } + ((@use_shadow ? @shadow_margin[0] : 0) + @hspace) * (txt.chars.to_a.length - 1) return [width, self.line_height] end |
#under_line ⇒ Object
フォントの属性をunder_line(下線)に設定する
ブロックを渡したときは、ブロック評価中のみ下線付き文字になる
- 返却値
-
自分自身
348 349 350 351 352 353 354 355 356 357 |
# File 'lib/Miyako/API/font.rb', line 348 def under_line if block_given? tunder_line, self.under_line = self.under_line?, true yield self.under_line = tunder_line else self.under_line = true end return self end |
#under_line=(f) ⇒ Object
フォントのunder_line属性を設定する
- f
-
under_line属性かどうか(true/false)
367 368 369 370 371 372 |
# File 'lib/Miyako/API/font.rb', line 367 def under_line=(f) @under_line = f @font.style |= SDL::TTF::STYLE_UNDERLINE @font.style -= SDL::TTF::STYLE_UNDERLINE unless @under_line return self end |
#under_line? ⇒ Boolean
フォントのunder_line属性の有無を返す
- 返却値
-
under_line属性かどうか(true/false)
361 362 363 |
# File 'lib/Miyako/API/font.rb', line 361 def under_line? return @under_line end |
#visible ⇒ Object
描画可能・不可状態を返す
描画可能の時はtrue、不可能なときはfalseを返す
- 返却値
-
true/falseを返す
189 190 191 |
# File 'lib/Miyako/API/font.rb', line 189 def visible return @visible end |
#visible=(v) ⇒ Object
描画可能・不可状態を設定する
描画可能の時はtrue、不可能なときはfalseを渡す
- 返却値
-
自分自身を返す
196 197 198 199 |
# File 'lib/Miyako/API/font.rb', line 196 def visible=(v) @visible = v return self end |