Class: Rixmap::Format::XPM::XPMColorTable

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rixmap/format/xpm.rb

Overview

XPMカラーテーブル

文字と対応するカラー表現を持ちます.

Constant Summary collapse

CHARACTERS =

カラー名に使用する文字の一覧

Returns:

  • (String)

    文字リスト

" 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(palette) ⇒ XPMColorTable

パレットからカラーテーブルを作成します.

Parameters:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rixmap/format/xpm.rb', line 33

def initialize(palette)
  @codes = []
  @colors = []
  @code_size = 0

  nchars = CHARACTERS.size
  csize  = Math.log(palette.size, nchars).ceil
  palette.each_with_index do |c, i|
    code = []
    tmp = i
    csize.downto(1) do |j|
      base = (nchars ** (j - 1))
      ch = tmp / base
      tmp = tmp % base
      code << CHARACTERS[ch]
    end
    @codes[i] = code.join('')
    @colors[i] = "#%02X%02X%02X" % [c.red, c.green, c.blue]
  end
  @code_size = csize
end

Instance Attribute Details

#code_sizeInteger (readonly)

Returns 色コードサイズ.

Returns:

  • (Integer)

    色コードサイズ



22
23
24
# File 'lib/rixmap/format/xpm.rb', line 22

def code_size
  @code_size
end

#codesArray<String> (readonly)

Returns コードリスト.

Returns:

  • (Array<String>)

    コードリスト



25
26
27
# File 'lib/rixmap/format/xpm.rb', line 25

def codes
  @codes
end

#colorsArray<String> (readonly)

Returns 色データ.

Returns:

  • (Array<String>)

    色データ



28
29
30
# File 'lib/rixmap/format/xpm.rb', line 28

def colors
  @colors
end

Instance Method Details

#each {|Array| ... } ⇒ Enumerator

各カラーテーブルデータを順に処理します.

カラーテーブルデータは [code, color] の配列で渡されます

Yields:

  • (Array)

    [code, color] 形式の配列

Returns:

  • (Enumerator)

    ブロックを渡さなかった場合はEnumeratorを返します.



61
62
63
64
65
66
67
68
69
# File 'lib/rixmap/format/xpm.rb', line 61

def each
  if block_given?
    @codes.each_with_index do |code, i|
      yield [code, @colors[i]]
    end
  else
    return Enumerator.new(self)
  end
end