Class MyGame::Font
In: mygame/lib/mygame.rb
Parent: DrawPrimitive

フォントプリミティブ

フォントを描画するためのプリミティブです。 また ShadowFont を使うと影つきフォントを描画することができます。

次のサンプルはフォントオブジェクト生成して "Hello" を画面に描画する例です。

 require 'mygame/boot'
 fnt = Font.new("Hello")
 main_loop do
   fnt.render
 end

Methods

Constants

DEFALUT_TTF = 'VL-Gothic-Regular.ttf'   デフォルトで使用している TTF です。

Attributes

color  [RW]  フォントの色( [r, g, b] で指定する。赤なら [255, 0, 0] )
shadow_color  [RW]  フォントの影色
size  [RW]  フォントサイズ
string  [RW]  描画するする文字列
ttf_path  [RW]  使用する TTF

Public Class methods

ロードした TTF データのキャッシュをクリアします。

[Source]

# File mygame/lib/mygame.rb, line 502
    def self.clear_cache
      @@tff_cache = {}
    end

デフォルトのフォントサイズを返します。

[Source]

# File mygame/lib/mygame.rb, line 470
    def self.default_size
      @@default_size
    end

デフォルトのフォントサイズを設定します。

[Source]

# File mygame/lib/mygame.rb, line 475
    def self.default_size=(size)
      @@default_size = size
    end

デフォルトで使用する TTF のパスを返します。

[Source]

# File mygame/lib/mygame.rb, line 480
    def self.default_ttf_path
      @@default_ttf_path
    end

デフォルトで使用する TTF を設定します。

[Source]

# File mygame/lib/mygame.rb, line 485
    def self.default_ttf_path=(path)
      @@default_ttf_path = path
    end

フォントオブジェクトを生成します。

[Source]

# File mygame/lib/mygame.rb, line 490
    def initialize(string = '', *options)
      super(*options)

      @font = open_tff(@ttf_path, @size)
      @font.style = SDL::TTF::STYLE_NORMAL

      @last_string = nil
      self.string = string
    end

デフォルトの TTF とフォントサイズを設定します。

[Source]

# File mygame/lib/mygame.rb, line 455
    def self.setup_default_setting(ttf = nil, size = nil)
      datadir = Config::CONFIG["datadir"]
      mygame_datadir = File.join(datadir, 'mygame')
      ['./fonts', mygame_datadir].each do |dir|
        path = ttf || File.join(dir, DEFALUT_TTF)
        if File.exist?(path)
          @@default_ttf_path = path
          break
        end
      end
      @@default_size = size || 16
    end

Public Instance methods

フォントオブジェクトを描画します。

[Source]

# File mygame/lib/mygame.rb, line 578
    def render
      if hide? or @surface.nil?
        @disp_x = @disp_y = nil
        return
      end
      x = @x + offset_x
      y = @y + offset_y
      if max_w?
        disp_w = 0
        disp_h = 0
      else
        disp_w = w# / 2 * size

        disp_h = h + @dy
      end
      @disp_x, @disp_y = x, y
      return if @alpha <= 0
      @surface.set_alpha(SDL::SRCALPHA, alpha) if alpha < 255
      SDL.blit_surface @surface, 0, 0, disp_w, disp_h, screen, x, y
   end

フォントオブジェクトを更新します。

[Source]

# File mygame/lib/mygame.rb, line 573
    def update
      @w += @added_width unless max_w?
    end

[Validate]