Class: Miyako::Color

Inherits:
Object show all
Defined in:
lib/Miyako/API/color.rb

Overview

色を管理するクラス

色情報は、、[r,g,b,a(透明度)]の2種類の配列

それぞれの要素の値は0〜255の範囲

4要素必要な色情報に3要素の配列を渡すと、自動的に4要素目(値は255)が挿入される

(注)本クラスで採用する透明度と、画像が持つ透明度とは別物

Constant Summary collapse

@@symbol2color =
{:black       => [  0,  0,  0, 255],
:white       => [255,255,255, 255],
:blue        => [  0,  0,255, 255],
:green       => [  0,255,  0, 255],
:red         => [255,  0,  0, 255],
:cyan        => [  0,255,255, 255],
:purple      => [255,  0,255, 255],
:yellow      => [255,255,  0, 255],
:light_gray  => [200,200,200, 255],
:half_gray   => [128,128,128, 255],
:half_blue   => [  0,  0,128, 255],
:half_green  => [  0,128,  0, 255],
:half_red    => [128,  0,  0, 255],
:half_cyan   => [  0,128,128, 255],
:half_purple => [128,  0,128, 255],
:half_yellow => [128,128,  0, 255],
:dark_gray   => [ 80, 80, 80, 255],
:dark_blue   => [  0,  0, 80, 255],
:dark_green  => [  0, 80,  0, 255],
:dark_red    => [ 80,  0,  0, 255],
:dark_cyan   => [  0, 80, 80, 255],
:dark_purple => [ 80,  0, 80, 255],
:dark_yellow => [ 80, 80,  0, 255]}

Class Method Summary collapse

Class Method Details

.[](name, alpha = nil) ⇒ Object

シンボルから色情報を取得する

name::色に対応したシンボル(以下の一覧参照)。存在しないシンボルを渡したときはエラーを返す 返却値::シンボルに対応した4要素の配列

シンボル

色配列()

:black
0, 0, 0, 255
:white
255,255,255, 255
:blue
0, 0,255, 255
:green
0,255, 0, 255
:red
255, 0, 0, 255
:cyan
0,255,255, 255
:purple
255, 0,255, 255
:yellow
255,255, 0, 255
:light_gray
200,200,200, 255
:half_gray
128,128,128, 255
:half_blue
0, 0,128, 255
:half_green
0,128, 0, 255
:half_red
128, 0, 0, 255
:half_cyan
0,128,128, 255
:half_purple
128, 0,128, 255
:half_yellow
128,128, 0, 255
:dark_gray
80, 80, 80, 255
:dark_blue
0, 0, 80, 255
:dark_green
0, 80, 0, 255
:dark_red
80, 0, 0, 255
:dark_cyan
0, 80, 80, 255
:dark_purple
80, 0, 80, 255
:dark_yellow
80, 80, 0, 255


87
88
89
90
91
# File 'lib/Miyako/API/color.rb', line 87

def Color.[](name, alpha = nil)
  c = (@@symbol2color[name.to_sym].dup or raise MiyakoError, "Illegal Color Name! : #{name}")
  c[3] = alpha if alpha
  return c
end

.[]=(name, value) ⇒ Object

Color.[]メソッドで使用できるシンボルと色情報との対を登録する

name

色に対応させるシンボル

value

色情報を示す3〜4要素の配列。3要素のときは4要素目を自動的に追加する



96
97
98
99
# File 'lib/Miyako/API/color.rb', line 96

def Color.[]=(name, value)
  @@symbol2color[name.to_sym] = value
  @@symbol2color[name.to_sym] << 255 if value.length == 3
end

.to_rgb(v, alpha = nil) ⇒ Object

様々な形式のデータを色情報に変換する

v::変換対象のインスタンス。変換可能な内容は以下の一覧参照 alpha::透明度。デフォルトはnil

インスタンス

書式

配列

最低3要素の数値の配列

文字列

”#RRGGBB“で示す16進数の文字列、もしくは”red“、”black“など。使える文字列はColor.[]で使えるシンボルに対応

数値

32bitの値を8bitずつ割り当て(aaaaaaaarrrrrrrrggggggggbbbbbbbb)

シンボル

Color.[]と同じ



110
111
112
113
114
# File 'lib/Miyako/API/color.rb', line 110

def Color::to_rgb(v, alpha = nil)
  c = (v.to_miyako_color or raise MiyakoError, "Illegal parameter")
  c[3] = alpha if alpha
  return c
end

.to_s(cc) ⇒ Object

色情報をColor.[]メソッドで使用できるシンボルと色情報との対を登録する

cc

色情報(シンボル、文字列)

value

色情報を示す3〜4要素の配列。3要素のときは4要素目を自動的に追加する



119
120
121
122
# File 'lib/Miyako/API/color.rb', line 119

def Color::to_s(cc)
  c = to_rgb(cc)
  return "[#{c[0]},#{c[1]},#{c[2]},#{c[3]}]"
end