Class: Rixmap::Format::XPM::XPMColorTable
- Inherits:
-
Object
- Object
- Rixmap::Format::XPM::XPMColorTable
- Includes:
- Enumerable
- Defined in:
- lib/rixmap/format/xpm.rb
Overview
XPMカラーテーブル
文字と対応するカラー表現を持ちます.
Constant Summary collapse
- CHARACTERS =
カラー名に使用する文字の一覧
" 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"
Instance Attribute Summary collapse
-
#code_size ⇒ Integer
readonly
色コードサイズ.
-
#codes ⇒ Array<String>
readonly
コードリスト.
-
#colors ⇒ Array<String>
readonly
色データ.
Instance Method Summary collapse
-
#each {|Array| ... } ⇒ Enumerator
各カラーテーブルデータを順に処理します.
-
#initialize(palette) ⇒ XPMColorTable
constructor
パレットからカラーテーブルを作成します.
Constructor Details
#initialize(palette) ⇒ XPMColorTable
パレットからカラーテーブルを作成します.
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_size ⇒ Integer (readonly)
Returns 色コードサイズ.
22 23 24 |
# File 'lib/rixmap/format/xpm.rb', line 22 def code_size @code_size end |
#codes ⇒ Array<String> (readonly)
Returns コードリスト.
25 26 27 |
# File 'lib/rixmap/format/xpm.rb', line 25 def codes @codes end |
#colors ⇒ Array<String> (readonly)
Returns 色データ.
28 29 30 |
# File 'lib/rixmap/format/xpm.rb', line 28 def colors @colors end |
Instance Method Details
#each {|Array| ... } ⇒ Enumerator
各カラーテーブルデータを順に処理します.
カラーテーブルデータは [code, color] の配列で渡されます
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 |