ruby-graphviz_c 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gemrc +0 -0
- data/.gitignore +9 -0
- data/.travis.yml +7 -0
- data/AUTHORS.rdoc +33 -0
- data/CHANGELOG.rdoc +287 -0
- data/COPYING.rdoc +133 -0
- data/Gemfile +4 -0
- data/README.rdoc +206 -0
- data/Rakefile +71 -0
- data/bin/dot2ruby +91 -0
- data/bin/gem2gv +165 -0
- data/bin/git2gv +167 -0
- data/bin/ruby2gv +234 -0
- data/bin/xml2gv +96 -0
- data/examples/dot/JSP.dot +52 -0
- data/examples/dot/balanced.dot +36 -0
- data/examples/dot/cluster.dot +30 -0
- data/examples/dot/dotgraph.dot +28 -0
- data/examples/dot/fsm.dot +20 -0
- data/examples/dot/genetic.dot +118 -0
- data/examples/dot/hello.dot +1 -0
- data/examples/dot/hello_test.rb +33 -0
- data/examples/dot/lion_share.dot +103 -0
- data/examples/dot/prof.dot +150 -0
- data/examples/dot/psg.dot +28 -0
- data/examples/dot/rank.dot +6 -0
- data/examples/dot/sdh.dot +284 -0
- data/examples/dot/siblings.dot +492 -0
- data/examples/dot/so-sample001.gv +30 -0
- data/examples/dot/so-sample002.gv +33 -0
- data/examples/dot/so-sample003.gv +45 -0
- data/examples/dot/test.dot +17 -0
- data/examples/dot/test_parse.rb +13 -0
- data/examples/dot/this_crach_with_dot_2.20.dot +24 -0
- data/examples/dot/unix.dot +104 -0
- data/examples/graphml/attributes.ext.graphml +12 -0
- data/examples/graphml/attributes.graphml +40 -0
- data/examples/graphml/cluster.graphml +75 -0
- data/examples/graphml/failed_graph.graphml +461 -0
- data/examples/graphml/hyper.graphml +29 -0
- data/examples/graphml/nested.graphml +54 -0
- data/examples/graphml/port.graphml +32 -0
- data/examples/graphml/simple.graphml +30 -0
- data/examples/hello.png +0 -0
- data/examples/rgv/rgv.ps +125 -0
- data/examples/rgv/test_rgv.rb +12 -0
- data/examples/sample01.rb +32 -0
- data/examples/sample02.rb +42 -0
- data/examples/sample03.rb +31 -0
- data/examples/sample04.rb +22 -0
- data/examples/sample05.rb +32 -0
- data/examples/sample06.rb +46 -0
- data/examples/sample07.rb +23 -0
- data/examples/sample08.rb +34 -0
- data/examples/sample09.rb +50 -0
- data/examples/sample10.rb +50 -0
- data/examples/sample11.rb +42 -0
- data/examples/sample12.rb +55 -0
- data/examples/sample13.rb +48 -0
- data/examples/sample14.rb +44 -0
- data/examples/sample15.rb +25 -0
- data/examples/sample16.rb +8 -0
- data/examples/sample17.rb +92 -0
- data/examples/sample18.rb +24 -0
- data/examples/sample19.rb +59 -0
- data/examples/sample20.rb +47 -0
- data/examples/sample21.rb +12 -0
- data/examples/sample22.rb +10 -0
- data/examples/sample23.rb +11 -0
- data/examples/sample24.rb +11 -0
- data/examples/sample25.rb +11 -0
- data/examples/sample26.rb +8 -0
- data/examples/sample27.rb +8 -0
- data/examples/sample28.rb +12 -0
- data/examples/sample29.rb +8 -0
- data/examples/sample30.rb +12 -0
- data/examples/sample31.rb +10 -0
- data/examples/sample32.rb +14 -0
- data/examples/sample33.rb +43 -0
- data/examples/sample34.rb +29 -0
- data/examples/sample35.rb +43 -0
- data/examples/sample36.rb +35 -0
- data/examples/sample37.rb +87 -0
- data/examples/sample38.rb +12 -0
- data/examples/sample39.rb +11 -0
- data/examples/sample40.rb +17 -0
- data/examples/sample41.rb +8 -0
- data/examples/sample42.rb +35 -0
- data/examples/sample43.rb +26 -0
- data/examples/sample44.rb +97 -0
- data/examples/sample45.rb +24 -0
- data/examples/sample46.rb +43 -0
- data/examples/sample47.rb +7 -0
- data/examples/sample48.rb +62 -0
- data/examples/sample49.rb +10 -0
- data/examples/sample50.rb +215 -0
- data/examples/sample51.rb +37 -0
- data/examples/sample52.rb +62 -0
- data/examples/sample53.rb +26 -0
- data/examples/sample54.rb +26 -0
- data/examples/sample55.rb +9 -0
- data/examples/sample56.rb +10 -0
- data/examples/sample57.rb +8 -0
- data/examples/sample58.rb +33 -0
- data/examples/sample59.rb +14 -0
- data/examples/sample60.rb +12 -0
- data/examples/sample61.rb +12 -0
- data/examples/sample62.rb +24 -0
- data/examples/sample63.rb +32 -0
- data/examples/sample64.rb +31 -0
- data/examples/sample65.rb +9 -0
- data/examples/sample66.rb +4 -0
- data/examples/sample67.rb +10 -0
- data/examples/sample68.rb +27 -0
- data/examples/sample69.rb +23 -0
- data/examples/sample70.rb +9 -0
- data/examples/sample99.rb +70 -0
- data/examples/sdlshapes/README +2 -0
- data/examples/sdlshapes/sdl.ps +655 -0
- data/examples/sdlshapes/sdlshapes.dot +78 -0
- data/examples/test.xml +26 -0
- data/examples/theory/pert.rb +47 -0
- data/examples/theory/tests.rb +87 -0
- data/lib/ext/gvpr/dot2ruby.g +185 -0
- data/lib/graphviz/attrs.rb +73 -0
- data/lib/graphviz/constants.rb +294 -0
- data/lib/graphviz/core_ext.rb +64 -0
- data/lib/graphviz/dot2ruby.rb +59 -0
- data/lib/graphviz/dot_script.rb +109 -0
- data/lib/graphviz/dsl.rb +67 -0
- data/lib/graphviz/edge.rb +197 -0
- data/lib/graphviz/elements.rb +39 -0
- data/lib/graphviz/ext.rb +17 -0
- data/lib/graphviz/family_tree/couple.rb +63 -0
- data/lib/graphviz/family_tree/generation.rb +39 -0
- data/lib/graphviz/family_tree/person.rb +120 -0
- data/lib/graphviz/family_tree/sibling.rb +13 -0
- data/lib/graphviz/family_tree.rb +118 -0
- data/lib/graphviz/graphml.rb +268 -0
- data/lib/graphviz/math/matrix.rb +221 -0
- data/lib/graphviz/node.rb +160 -0
- data/lib/graphviz/nothugly/nothugly.xsl +321 -0
- data/lib/graphviz/nothugly.rb +63 -0
- data/lib/graphviz/theory.rb +321 -0
- data/lib/graphviz/types/arrow_type.rb +32 -0
- data/lib/graphviz/types/color.rb +58 -0
- data/lib/graphviz/types/color_list.rb +24 -0
- data/lib/graphviz/types/esc_string.rb +20 -0
- data/lib/graphviz/types/gv_bool.rb +49 -0
- data/lib/graphviz/types/gv_double.rb +32 -0
- data/lib/graphviz/types/html_string.rb +18 -0
- data/lib/graphviz/types/lbl_string.rb +22 -0
- data/lib/graphviz/types/rect.rb +35 -0
- data/lib/graphviz/types/spline_type.rb +77 -0
- data/lib/graphviz/types.rb +22 -0
- data/lib/graphviz/utils/colors.rb +1018 -0
- data/lib/graphviz/utils.rb +70 -0
- data/lib/graphviz/xml.rb +119 -0
- data/lib/graphviz.rb +967 -0
- data/lib/ruby-graphviz.rb +1 -0
- data/man/dot2ruby.1 +66 -0
- data/man/dot2ruby.1.ronn +55 -0
- data/man/gem2gv.1 +60 -0
- data/man/gem2gv.1.ronn +47 -0
- data/man/git2gv.1 +48 -0
- data/man/git2gv.1.ronn +40 -0
- data/man/ruby2gv.1 +60 -0
- data/man/ruby2gv.1.ronn +47 -0
- data/man/xml2gv.1 +48 -0
- data/man/xml2gv.1.ronn +39 -0
- data/ruby-graphviz.gemspec +47 -0
- data/setup.rb +1585 -0
- data/test/helper.rb +13 -0
- data/test/support.rb +95 -0
- data/test/test_dot_script.rb +47 -0
- data/test/test_examples.rb +151 -0
- data/test/test_graph.rb +115 -0
- data/test/test_search.rb +29 -0
- data/test/test_subgraph.rb +27 -0
- data/test/test_theory.rb +98 -0
- data/test/test_types.rb +65 -0
- data/test/test_utils_colors.rb +52 -0
- metadata +301 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
class GraphViz
|
2
|
+
class Types
|
3
|
+
class ColorList < Common
|
4
|
+
def check(data)
|
5
|
+
data = data.to_s if data.is_a?(Symbol)
|
6
|
+
return nil if data.empty?
|
7
|
+
|
8
|
+
@to_ruby = data.split(/\s*:\s*/).map { |c| GraphViz::Types::Color.new(c).to_ruby }
|
9
|
+
return data
|
10
|
+
end
|
11
|
+
|
12
|
+
def output
|
13
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
14
|
+
end
|
15
|
+
|
16
|
+
alias :to_gv :output
|
17
|
+
alias :to_s :output
|
18
|
+
|
19
|
+
def to_ruby
|
20
|
+
@data
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class GraphViz
|
2
|
+
class Types
|
3
|
+
class EscString < Common
|
4
|
+
def check(data)
|
5
|
+
return data
|
6
|
+
end
|
7
|
+
|
8
|
+
def output
|
9
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
10
|
+
end
|
11
|
+
|
12
|
+
alias :to_gv :output
|
13
|
+
alias :to_s :output
|
14
|
+
|
15
|
+
def to_ruby
|
16
|
+
@data
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class BoolException < RuntimeError
|
2
|
+
end
|
3
|
+
|
4
|
+
# bool
|
5
|
+
#
|
6
|
+
# For the bool type,
|
7
|
+
# - TRUE values are represented by "true" or "yes" (case-insensitive), true and any non-zero integer
|
8
|
+
# - FALSE values by "false", "no" or empty string (case-insensitive), false and zero.
|
9
|
+
#
|
10
|
+
# Example
|
11
|
+
#
|
12
|
+
# graph[:center] = "true"
|
13
|
+
# or
|
14
|
+
# graph[:center] = true
|
15
|
+
# or
|
16
|
+
# graph[:center] = 23
|
17
|
+
class GraphViz
|
18
|
+
class Types
|
19
|
+
class GvBool < Common
|
20
|
+
BOOL_TRUE = ["true", "yes"]
|
21
|
+
BOOL_FALSE = ["false", "no", ""]
|
22
|
+
|
23
|
+
def check(data)
|
24
|
+
if true == data or (data.is_a?(Integer) and data != 0) or (data.is_a?(String) and !BOOL_FALSE.include?(data.downcase))
|
25
|
+
@to_ruby = true
|
26
|
+
return data
|
27
|
+
end
|
28
|
+
|
29
|
+
if false == data or (data.is_a?(Integer) and data == 0) or (data.is_a?(String) and BOOL_FALSE.include?(data.downcase))
|
30
|
+
@to_ruby = false
|
31
|
+
return data
|
32
|
+
end
|
33
|
+
|
34
|
+
raise BoolException, "Invalid bool value"
|
35
|
+
end
|
36
|
+
|
37
|
+
def output
|
38
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
39
|
+
end
|
40
|
+
|
41
|
+
alias :to_gv :output
|
42
|
+
alias :to_s :output
|
43
|
+
|
44
|
+
def to_ruby
|
45
|
+
@to_ruby
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class DoubleException < RuntimeError
|
2
|
+
end
|
3
|
+
|
4
|
+
class GraphViz
|
5
|
+
class Types
|
6
|
+
class GvDouble < Common
|
7
|
+
FLOAT_MASK = /[-+]?(?:[0-9]*\.[0-9]+|[0-9]+)/
|
8
|
+
|
9
|
+
def check(data)
|
10
|
+
if data.kind_of?(Numeric) or (data.is_a?(String) and FLOAT_MASK.match(data))
|
11
|
+
return data
|
12
|
+
end
|
13
|
+
|
14
|
+
return nil if data.is_a?(String) and data.empty?
|
15
|
+
|
16
|
+
raise DoubleException, "Invalid double value for `#{data}`"
|
17
|
+
end
|
18
|
+
|
19
|
+
def output
|
20
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_f
|
24
|
+
@data.to_f
|
25
|
+
end
|
26
|
+
|
27
|
+
alias :to_gv :output
|
28
|
+
alias :to_s :output
|
29
|
+
alias :to_ruby :to_f
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# TODO: Remove
|
2
|
+
class GraphViz
|
3
|
+
class Types
|
4
|
+
class HtmlString < Common
|
5
|
+
def check(data)
|
6
|
+
return data
|
7
|
+
end
|
8
|
+
|
9
|
+
def output
|
10
|
+
return "<"+@data+">"
|
11
|
+
end
|
12
|
+
|
13
|
+
alias :to_gv :output
|
14
|
+
alias :to_s :output
|
15
|
+
alias :to_ruby :output
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class GraphViz
|
2
|
+
class Types
|
3
|
+
class LblString < Common
|
4
|
+
def check(data)
|
5
|
+
return data
|
6
|
+
end
|
7
|
+
|
8
|
+
def output
|
9
|
+
html = /^<([<|(^<)*<].*)>$/m.match(@data.to_s)
|
10
|
+
if html != nil
|
11
|
+
"<#{html[1]}>"
|
12
|
+
else
|
13
|
+
@data.to_s.inspect.gsub( "\\\\", "\\" )
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
alias :to_gv :output
|
18
|
+
alias :to_s :output
|
19
|
+
alias :to_ruby :output
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class RectException < RuntimeError
|
2
|
+
end
|
3
|
+
|
4
|
+
class GraphViz
|
5
|
+
class Types
|
6
|
+
class Rect < Common
|
7
|
+
FLOAT_MASK = /[-+]?(?:[0-9]*\.[0-9]+|[0-9]+)/
|
8
|
+
RECT_FINAL_MASK = /#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}/
|
9
|
+
|
10
|
+
def check(data)
|
11
|
+
if data.is_a?(String) and RECT_FINAL_MASK.match(data)
|
12
|
+
@to_ruby = data.split(",").map{ |e| e.to_f }
|
13
|
+
return data
|
14
|
+
end
|
15
|
+
if data.is_a?(Array)
|
16
|
+
return check(data.join(","))
|
17
|
+
end
|
18
|
+
return nil if data.is_a?(String) and data.empty?
|
19
|
+
|
20
|
+
raise RectException, "Invalid rect value"
|
21
|
+
end
|
22
|
+
|
23
|
+
def output
|
24
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
25
|
+
end
|
26
|
+
|
27
|
+
alias :to_gv :output
|
28
|
+
alias :to_s :output
|
29
|
+
|
30
|
+
def to_ruby
|
31
|
+
@to_ruby
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
class SplineTypeException < RuntimeError
|
2
|
+
end
|
3
|
+
|
4
|
+
# spliteType or point
|
5
|
+
#
|
6
|
+
# spline ( ';' spline )*
|
7
|
+
# where spline = (endp)? (startp)? point (triple)+
|
8
|
+
# and triple = point point point
|
9
|
+
# and endp = "e,%f,%f"
|
10
|
+
# and startp = "s,%f,%f"
|
11
|
+
#
|
12
|
+
# If a spline has points p1 p2 p3 ... pn, (n = 1 (mod 3)), the points correspond
|
13
|
+
# to the control points of a B-spline from p1 to pn. If startp is given, it touches
|
14
|
+
# one node of the edge, and the arrowhead goes from p1 to startp. If startp is not
|
15
|
+
# given, p1 touches a node. Similarly for pn and endp.
|
16
|
+
class GraphViz
|
17
|
+
class Types
|
18
|
+
class SplineType < Common
|
19
|
+
FLOAT_MASK = /[-+]?(?:[0-9]*\.[0-9]+|[0-9]+)/
|
20
|
+
ENDP_MASK = /e\s*,\s*#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}/
|
21
|
+
STARTP_MASK = /s\s*,\s*#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}/
|
22
|
+
POINT_MASK = /#{FLOAT_MASK}\s*,\s*#{FLOAT_MASK}(?:\s*,\s*#{FLOAT_MASK})?!?/
|
23
|
+
TRIPLE_MASK = /#{POINT_MASK}\s+#{POINT_MASK}\s+#{POINT_MASK}/
|
24
|
+
SPLINE_MASK = /(?:#{ENDP_MASK}\s+)?(?:#{STARTP_MASK}\s+)?#{POINT_MASK}(?:\s*#{TRIPLE_MASK})+/
|
25
|
+
|
26
|
+
FINAL_SPLINE_MASK = /^#{SPLINE_MASK}(?:\s*;\s*#{SPLINE_MASK})*$/
|
27
|
+
FINAL_POINT_MASK = /^#{POINT_MASK}$/
|
28
|
+
|
29
|
+
def check(data)
|
30
|
+
unless SPLINE_MASK.match(data).nil?
|
31
|
+
@is_spline = true
|
32
|
+
return data
|
33
|
+
end
|
34
|
+
unless FINAL_POINT_MASK.match(data).nil?
|
35
|
+
@is_spline = false
|
36
|
+
return data
|
37
|
+
end
|
38
|
+
return nil if data.empty?
|
39
|
+
|
40
|
+
raise SplineTypeException, "Invalid spline type value"
|
41
|
+
end
|
42
|
+
|
43
|
+
def output
|
44
|
+
return @data.to_s.inspect.gsub( "\\\\", "\\" )
|
45
|
+
end
|
46
|
+
|
47
|
+
alias :to_gv :output
|
48
|
+
alias :to_s :output
|
49
|
+
|
50
|
+
def point
|
51
|
+
if point?
|
52
|
+
"[#{@data}]".to_ruby
|
53
|
+
else
|
54
|
+
# TODO!
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def endp
|
59
|
+
end
|
60
|
+
|
61
|
+
def startp
|
62
|
+
end
|
63
|
+
|
64
|
+
def triples
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
def point?
|
69
|
+
not @is_spline
|
70
|
+
end
|
71
|
+
|
72
|
+
def splite_type?
|
73
|
+
@is_spline
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class GraphViz
|
2
|
+
class Types
|
3
|
+
class Common
|
4
|
+
def initialize( data )
|
5
|
+
@data = check(data)
|
6
|
+
end
|
7
|
+
|
8
|
+
def output
|
9
|
+
return @data
|
10
|
+
end
|
11
|
+
|
12
|
+
def source
|
13
|
+
return @data
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Dir.glob( File.dirname( File.expand_path(__FILE__) )+"/types/*.rb" ).each do |f|
|
18
|
+
#autoload File.basename(f).gsub(File.extname(f), "").split( "_" ).map{|n| n.capitalize }.join.to_sym, f
|
19
|
+
require f
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,1018 @@
|
|
1
|
+
require 'graphviz/core_ext'
|
2
|
+
|
3
|
+
class GraphViz
|
4
|
+
module Utils
|
5
|
+
class Colors
|
6
|
+
HEX_FOR_COLOR = /[0-9a-fA-F]{2}/
|
7
|
+
RGBA = /^(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})?$/
|
8
|
+
|
9
|
+
attr_reader :r, :g, :b, :a
|
10
|
+
attr_reader :h, :s, :v
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@r, @g, @b, @a, @h, @s, @v, @color = nil, nil, nil, nil, nil, nil, nil, nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def rgb(r, g, b, a = nil)
|
17
|
+
if r.is_a?(Fixnum)
|
18
|
+
r = r.to_s.convert_base(10, 16)
|
19
|
+
end
|
20
|
+
unless r.is_a?(String) and HEX_FOR_COLOR.match(r)
|
21
|
+
raise ColorException, "Bad red value"
|
22
|
+
end
|
23
|
+
|
24
|
+
if g.is_a?(Fixnum)
|
25
|
+
g = g.to_s.convert_base(10, 16)
|
26
|
+
end
|
27
|
+
unless g.is_a?(String) and HEX_FOR_COLOR.match(g)
|
28
|
+
raise ColorException, "Bad green value"
|
29
|
+
end
|
30
|
+
|
31
|
+
if b.is_a?(Fixnum)
|
32
|
+
b = b.to_s.convert_base(10, 16)
|
33
|
+
end
|
34
|
+
unless b.is_a?(String) and HEX_FOR_COLOR.match(b)
|
35
|
+
raise ColorException, "Bad blue value"
|
36
|
+
end
|
37
|
+
|
38
|
+
if a.is_a?(Fixnum)
|
39
|
+
a = a.to_s.convert_base(10, 16)
|
40
|
+
end
|
41
|
+
unless a.nil? or (a.is_a?(String) and HEX_FOR_COLOR.match(a))
|
42
|
+
raise ColorException, "Bad alpha value"
|
43
|
+
end
|
44
|
+
|
45
|
+
@r = r
|
46
|
+
@g = g
|
47
|
+
@b = b
|
48
|
+
@a = a
|
49
|
+
|
50
|
+
@color = COLORS.key(rgba_string.downcase)
|
51
|
+
|
52
|
+
@h, @s, @v = rgb_to_hsv(@r, @g, @b)
|
53
|
+
end
|
54
|
+
|
55
|
+
def hsv(h, s, v)
|
56
|
+
unless h.is_a?(Float) and s.is_a?(Float) and v.is_a?(Float)
|
57
|
+
raise ColorException, "Bas HSV value"
|
58
|
+
end
|
59
|
+
|
60
|
+
@h = h
|
61
|
+
@s = s
|
62
|
+
@v = v
|
63
|
+
|
64
|
+
@r, @g, @b = hsv_to_rgb(@h, @s, @v)
|
65
|
+
|
66
|
+
@color = COLORS.key(rgba_string.downcase);
|
67
|
+
end
|
68
|
+
|
69
|
+
def name(c = nil)
|
70
|
+
return @color if c.nil?
|
71
|
+
|
72
|
+
@color = c
|
73
|
+
|
74
|
+
rgb = COLORS[c]
|
75
|
+
unless rgb.nil?
|
76
|
+
m = RGBA.match(rgb)
|
77
|
+
@r = m[1]
|
78
|
+
@g = m[2]
|
79
|
+
@b = m[3]
|
80
|
+
|
81
|
+
@h, @s, @v = rgb_to_hsv(@r, @g, @b)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def rgba_string(c = "")
|
86
|
+
unless @r.nil?
|
87
|
+
"#{c}#{@r}#{@g}#{@b}#{((@a.nil?)?"":@a)}"
|
88
|
+
else
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def hsv_string(s = ", ")
|
94
|
+
unless @h.nil?
|
95
|
+
"#{@h}#{s}#{@s}#{s}#{@v}"
|
96
|
+
else
|
97
|
+
nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def rgb_to_hsv(r, g, b)
|
102
|
+
Colors.rgb_to_hsv(r, g, b)
|
103
|
+
end
|
104
|
+
|
105
|
+
def hsv_to_rgb(h, s, v)
|
106
|
+
Colors.hsv_to_rgb(h, s, v)
|
107
|
+
end
|
108
|
+
|
109
|
+
class <<self
|
110
|
+
def rgb(r, g, b, a = nil)
|
111
|
+
color = Colors.new
|
112
|
+
color.rgb(r, g, b, a)
|
113
|
+
color
|
114
|
+
end
|
115
|
+
|
116
|
+
def hsv(h, s, v)
|
117
|
+
color = Colors.new
|
118
|
+
color.hsv(h, s, v)
|
119
|
+
color
|
120
|
+
end
|
121
|
+
|
122
|
+
def name(c)
|
123
|
+
color = Colors.new
|
124
|
+
color.name(c)
|
125
|
+
color
|
126
|
+
end
|
127
|
+
|
128
|
+
def rgb_to_hsv(r, g, b)
|
129
|
+
h, s, v = 0.0, 0.0, 0.0
|
130
|
+
|
131
|
+
_r = r.convert_base(16, 10).to_f / 255.0
|
132
|
+
_g = g.convert_base(16, 10).to_f / 255.0
|
133
|
+
_b = b.convert_base(16, 10).to_f / 255.0
|
134
|
+
rgb = [ _r, _g, _b ]
|
135
|
+
|
136
|
+
min = rgb.min
|
137
|
+
max = rgb.max
|
138
|
+
v = max
|
139
|
+
|
140
|
+
delta = max - min
|
141
|
+
if max != 0.0
|
142
|
+
s = delta / max
|
143
|
+
else
|
144
|
+
return [-1, 0, v]
|
145
|
+
end
|
146
|
+
|
147
|
+
if _r == max
|
148
|
+
h = ( _g - _b ) / delta
|
149
|
+
elsif( _g == max )
|
150
|
+
h = 2 + ( _b - _r ) / delta
|
151
|
+
else
|
152
|
+
h = 4 + ( _r - _g ) / delta
|
153
|
+
end
|
154
|
+
|
155
|
+
h = h * 60
|
156
|
+
h = h + 360 if h < 0
|
157
|
+
h = h / 360.0
|
158
|
+
|
159
|
+
[h, s, v]
|
160
|
+
end
|
161
|
+
|
162
|
+
def hsv_to_rgb(h, s, v)
|
163
|
+
_h, _s, _v = h.to_f * 360.0, s.to_f, v.to_f
|
164
|
+
|
165
|
+
if _s == 0.0
|
166
|
+
r = (_v * 255 ).to_i.to_s.convert_base(10,16)
|
167
|
+
return [r, r, r]
|
168
|
+
end
|
169
|
+
|
170
|
+
_h = _h / 60.0
|
171
|
+
i = _h.floor
|
172
|
+
f = _h - i
|
173
|
+
p = _v * ( 1.0 - _s )
|
174
|
+
q = _v * ( 1.0 - _s * f )
|
175
|
+
t = _v * ( 1.0 - _s * ( 1 - f ) )
|
176
|
+
case i
|
177
|
+
when 0
|
178
|
+
r = _v
|
179
|
+
g = t
|
180
|
+
b = p
|
181
|
+
when 1
|
182
|
+
r = q
|
183
|
+
g = _v
|
184
|
+
b = p
|
185
|
+
when 2
|
186
|
+
r = p
|
187
|
+
g = _v
|
188
|
+
b = t
|
189
|
+
when 3
|
190
|
+
r = p
|
191
|
+
g = q
|
192
|
+
b = _v
|
193
|
+
when 4
|
194
|
+
r = t
|
195
|
+
g = p
|
196
|
+
b = _v
|
197
|
+
else
|
198
|
+
r = _v
|
199
|
+
g = p
|
200
|
+
b = q
|
201
|
+
end
|
202
|
+
|
203
|
+
[
|
204
|
+
(r * 255).to_i.to_s.convert_base(10, 16),
|
205
|
+
(g * 255).to_i.to_s.convert_base(10, 16),
|
206
|
+
(b * 255).to_i.to_s.convert_base(10, 16)
|
207
|
+
]
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
COLORS = {
|
212
|
+
"aliceblue" => "f0f8ff",
|
213
|
+
"antiquewhite" => "faebd7",
|
214
|
+
"antiquewhite1" => "ffefdb",
|
215
|
+
"antiquewhite2" => "eedfcc",
|
216
|
+
"antiquewhite3" => "cdc0b0",
|
217
|
+
"antiquewhite4" => "8b8378",
|
218
|
+
"aquamarine" => "7fffd4",
|
219
|
+
"aquamarine1" => "7fffd4",
|
220
|
+
"aquamarine2" => "76eec6",
|
221
|
+
"aquamarine3" => "66cdaa",
|
222
|
+
"aquamarine4" => "458b74",
|
223
|
+
"azure" => "f0ffff",
|
224
|
+
"azure1" => "f0ffff",
|
225
|
+
"azure2" => "e0eeee",
|
226
|
+
"azure3" => "c1cdcd",
|
227
|
+
"azure4" => "838b8b",
|
228
|
+
"beige" => "f5f5dc",
|
229
|
+
"bisque" => "ffe4c4",
|
230
|
+
"bisque1" => "ffe4c4",
|
231
|
+
"bisque2" => "eed5b7",
|
232
|
+
"bisque3" => "cdb79e",
|
233
|
+
"bisque4" => "8b7d6b",
|
234
|
+
"black" => "000000",
|
235
|
+
"blanchedalmond" => "ffebcd",
|
236
|
+
"blue" => "0000ff",
|
237
|
+
"blue1" => "0000ff",
|
238
|
+
"blue2" => "0000ee",
|
239
|
+
"blue3" => "0000cd",
|
240
|
+
"blue4" => "00008b",
|
241
|
+
"blueviolet" => "8a2be2",
|
242
|
+
"brown" => "a52a2a",
|
243
|
+
"brown1" => "ff4040",
|
244
|
+
"brown2" => "ee3b3b",
|
245
|
+
"brown3" => "cd3333",
|
246
|
+
"brown4" => "8b2323",
|
247
|
+
"burlywood" => "deb887",
|
248
|
+
"burlywood1" => "ffd39b",
|
249
|
+
"burlywood2" => "eec591",
|
250
|
+
"burlywood3" => "cdaa7d",
|
251
|
+
"burlywood4" => "8b7355",
|
252
|
+
"cadetblue" => "5f9ea0",
|
253
|
+
"cadetblue1" => "98f5ff",
|
254
|
+
"cadetblue2" => "8ee5ee",
|
255
|
+
"cadetblue3" => "7ac5cd",
|
256
|
+
"cadetblue4" => "53868b",
|
257
|
+
"chartreuse" => "7fff00",
|
258
|
+
"chartreuse1" => "7fff00",
|
259
|
+
"chartreuse2" => "76ee00",
|
260
|
+
"chartreuse3" => "66cd00",
|
261
|
+
"chartreuse4" => "458b00",
|
262
|
+
"chocolate" => "d2691e",
|
263
|
+
"chocolate1" => "ff7f24",
|
264
|
+
"chocolate2" => "ee7621",
|
265
|
+
"chocolate3" => "cd661d",
|
266
|
+
"chocolate4" => "8b4513",
|
267
|
+
"coral" => "ff7f50",
|
268
|
+
"coral1" => "ff7256",
|
269
|
+
"coral2" => "ee6a50",
|
270
|
+
"coral3" => "cd5b45",
|
271
|
+
"coral4" => "8b3e2f",
|
272
|
+
"cornflowerblue" => "6495ed",
|
273
|
+
"cornsilk" => "fff8dc",
|
274
|
+
"cornsilk1" => "fff8dc",
|
275
|
+
"cornsilk2" => "eee8cd",
|
276
|
+
"cornsilk3" => "cdc8b1",
|
277
|
+
"cornsilk4" => "8b8878",
|
278
|
+
"crimson" => "dc143c",
|
279
|
+
"cyan" => "00ffff",
|
280
|
+
"cyan1" => "00ffff",
|
281
|
+
"cyan2" => "00eeee",
|
282
|
+
"cyan3" => "00cdcd",
|
283
|
+
"cyan4" => "008b8b",
|
284
|
+
"darkgoldenrod" => "b8860b",
|
285
|
+
"darkgoldenrod1" => "ffb90f",
|
286
|
+
"darkgoldenrod2" => "eead0e",
|
287
|
+
"darkgoldenrod3" => "cd950c",
|
288
|
+
"darkgoldenrod4" => "8b6508",
|
289
|
+
"darkgreen" => "006400",
|
290
|
+
"darkkhaki" => "bdb76b",
|
291
|
+
"darkolivegreen" => "556b2f",
|
292
|
+
"darkolivegreen1" => "caff70",
|
293
|
+
"darkolivegreen2" => "bcee68",
|
294
|
+
"darkolivegreen3" => "a2cd5a",
|
295
|
+
"darkolivegreen4" => "6e8b3d",
|
296
|
+
"darkorange" => "ff8c00",
|
297
|
+
"darkorange1" => "ff7f00",
|
298
|
+
"darkorange2" => "ee7600",
|
299
|
+
"darkorange3" => "cd6600",
|
300
|
+
"darkorange4" => "8b4500",
|
301
|
+
"darkorchid" => "9932cc",
|
302
|
+
"darkorchid1" => "bf3eff",
|
303
|
+
"darkorchid2" => "b23aee",
|
304
|
+
"darkorchid3" => "9a32cd",
|
305
|
+
"darkorchid4" => "68228b",
|
306
|
+
"darksalmon" => "e9967a",
|
307
|
+
"darkseagreen" => "8fbc8f",
|
308
|
+
"darkseagreen1" => "c1ffc1",
|
309
|
+
"darkseagreen2" => "b4eeb4",
|
310
|
+
"darkseagreen3" => "9bcd9b",
|
311
|
+
"darkseagreen4" => "698b69",
|
312
|
+
"darkslateblue" => "483d8b",
|
313
|
+
"darkslategray" => "2f4f4f",
|
314
|
+
"darkslategray1" => "97ffff",
|
315
|
+
"darkslategray2" => "8deeee",
|
316
|
+
"darkslategray3" => "79cdcd",
|
317
|
+
"darkslategray4" => "528b8b",
|
318
|
+
"darkslategrey" => "2f4f4f",
|
319
|
+
"darkturquoise" => "00ced1",
|
320
|
+
"darkviolet" => "9400d3",
|
321
|
+
"deeppink" => "ff1493",
|
322
|
+
"deeppink1" => "ff1493",
|
323
|
+
"deeppink2" => "ee1289",
|
324
|
+
"deeppink3" => "cd1076",
|
325
|
+
"deeppink4" => "8b0a50",
|
326
|
+
"deepskyblue" => "00bfff",
|
327
|
+
"deepskyblue1" => "00bfff",
|
328
|
+
"deepskyblue2" => "00b2ee",
|
329
|
+
"deepskyblue3" => "009acd",
|
330
|
+
"deepskyblue4" => "00688b",
|
331
|
+
"dimgray" => "696969",
|
332
|
+
"dimgrey" => "696969",
|
333
|
+
"dodgerblue" => "1e90ff",
|
334
|
+
"dodgerblue1" => "1e90ff",
|
335
|
+
"dodgerblue2" => "1c86ee",
|
336
|
+
"dodgerblue3" => "1874cd",
|
337
|
+
"dodgerblue4" => "104e8b",
|
338
|
+
"firebrick" => "b22222",
|
339
|
+
"firebrick1" => "ff3030",
|
340
|
+
"firebrick2" => "ee2c2c",
|
341
|
+
"firebrick3" => "cd2626",
|
342
|
+
"firebrick4" => "8b1a1a",
|
343
|
+
"floralwhite" => "fffaf0",
|
344
|
+
"forestgreen" => "228b22",
|
345
|
+
"gainsboro" => "dcdcdc",
|
346
|
+
"ghostwhite" => "f8f8ff",
|
347
|
+
"gold" => "ffd700",
|
348
|
+
"gold1" => "ffd700",
|
349
|
+
"gold2" => "eec900",
|
350
|
+
"gold3" => "cdad00",
|
351
|
+
"gold4" => "8b7500",
|
352
|
+
"goldenrod" => "daa520",
|
353
|
+
"goldenrod1" => "ffc125",
|
354
|
+
"goldenrod2" => "eeb422",
|
355
|
+
"goldenrod3" => "cd9b1d",
|
356
|
+
"goldenrod4" => "8b6914",
|
357
|
+
"gray" => "c0c0c0",
|
358
|
+
"gray0" => "000000",
|
359
|
+
"gray1" => "030303",
|
360
|
+
"gray10" => "1a1a1a",
|
361
|
+
"gray100" => "ffffff",
|
362
|
+
"gray11" => "1c1c1c",
|
363
|
+
"gray12" => "1f1f1f",
|
364
|
+
"gray13" => "212121",
|
365
|
+
"gray14" => "242424",
|
366
|
+
"gray15" => "262626",
|
367
|
+
"gray16" => "292929",
|
368
|
+
"gray17" => "2b2b2b",
|
369
|
+
"gray18" => "2e2e2e",
|
370
|
+
"gray19" => "303030",
|
371
|
+
"gray2" => "050505",
|
372
|
+
"gray20" => "333333",
|
373
|
+
"gray21" => "363636",
|
374
|
+
"gray22" => "383838",
|
375
|
+
"gray23" => "3b3b3b",
|
376
|
+
"gray24" => "3d3d3d",
|
377
|
+
"gray25" => "404040",
|
378
|
+
"gray26" => "424242",
|
379
|
+
"gray27" => "454545",
|
380
|
+
"gray28" => "474747",
|
381
|
+
"gray29" => "4a4a4a",
|
382
|
+
"gray3" => "080808",
|
383
|
+
"gray30" => "4d4d4d",
|
384
|
+
"gray31" => "4f4f4f",
|
385
|
+
"gray32" => "525252",
|
386
|
+
"gray33" => "545454",
|
387
|
+
"gray34" => "575757",
|
388
|
+
"gray35" => "595959",
|
389
|
+
"gray36" => "5c5c5c",
|
390
|
+
"gray37" => "5e5e5e",
|
391
|
+
"gray38" => "616161",
|
392
|
+
"gray39" => "636363",
|
393
|
+
"gray4" => "0a0a0a",
|
394
|
+
"gray40" => "666666",
|
395
|
+
"gray41" => "696969",
|
396
|
+
"gray42" => "6b6b6b",
|
397
|
+
"gray43" => "6e6e6e",
|
398
|
+
"gray44" => "707070",
|
399
|
+
"gray45" => "737373",
|
400
|
+
"gray46" => "757575",
|
401
|
+
"gray47" => "787878",
|
402
|
+
"gray48" => "7a7a7a",
|
403
|
+
"gray49" => "7d7d7d",
|
404
|
+
"gray5" => "0d0d0d",
|
405
|
+
"gray50" => "7f7f7f",
|
406
|
+
"gray51" => "828282",
|
407
|
+
"gray52" => "858585",
|
408
|
+
"gray53" => "878787",
|
409
|
+
"gray54" => "8a8a8a",
|
410
|
+
"gray55" => "8c8c8c",
|
411
|
+
"gray56" => "8f8f8f",
|
412
|
+
"gray57" => "919191",
|
413
|
+
"gray58" => "949494",
|
414
|
+
"gray59" => "969696",
|
415
|
+
"gray6" => "0f0f0f",
|
416
|
+
"gray60" => "999999",
|
417
|
+
"gray61" => "9c9c9c",
|
418
|
+
"gray62" => "9e9e9e",
|
419
|
+
"gray63" => "a1a1a1",
|
420
|
+
"gray64" => "a3a3a3",
|
421
|
+
"gray65" => "a6a6a6",
|
422
|
+
"gray66" => "a8a8a8",
|
423
|
+
"gray67" => "ababab",
|
424
|
+
"gray68" => "adadad",
|
425
|
+
"gray69" => "b0b0b0",
|
426
|
+
"gray7" => "121212",
|
427
|
+
"gray70" => "b3b3b3",
|
428
|
+
"gray71" => "b5b5b5",
|
429
|
+
"gray72" => "b8b8b8",
|
430
|
+
"gray73" => "bababa",
|
431
|
+
"gray74" => "bdbdbd",
|
432
|
+
"gray75" => "bfbfbf",
|
433
|
+
"gray76" => "c2c2c2",
|
434
|
+
"gray77" => "c4c4c4",
|
435
|
+
"gray78" => "c7c7c7",
|
436
|
+
"gray79" => "c9c9c9",
|
437
|
+
"gray8" => "141414",
|
438
|
+
"gray80" => "cccccc",
|
439
|
+
"gray81" => "cfcfcf",
|
440
|
+
"gray82" => "d1d1d1",
|
441
|
+
"gray83" => "d4d4d4",
|
442
|
+
"gray84" => "d6d6d6",
|
443
|
+
"gray85" => "d9d9d9",
|
444
|
+
"gray86" => "dbdbdb",
|
445
|
+
"gray87" => "dedede",
|
446
|
+
"gray88" => "e0e0e0",
|
447
|
+
"gray89" => "e3e3e3",
|
448
|
+
"gray9" => "171717",
|
449
|
+
"gray90" => "e5e5e5",
|
450
|
+
"gray91" => "e8e8e8",
|
451
|
+
"gray92" => "ebebeb",
|
452
|
+
"gray93" => "ededed",
|
453
|
+
"gray94" => "f0f0f0",
|
454
|
+
"gray95" => "f2f2f2",
|
455
|
+
"gray96" => "f5f5f5",
|
456
|
+
"gray97" => "f7f7f7",
|
457
|
+
"gray98" => "fafafa",
|
458
|
+
"gray99" => "fcfcfc",
|
459
|
+
"green" => "00ff00",
|
460
|
+
"green1" => "00ff00",
|
461
|
+
"green2" => "00ee00",
|
462
|
+
"green3" => "00cd00",
|
463
|
+
"green4" => "008b00",
|
464
|
+
"greenyellow" => "adff2f",
|
465
|
+
"grey" => "c0c0c0",
|
466
|
+
"grey0" => "000000",
|
467
|
+
"grey1" => "030303",
|
468
|
+
"grey10" => "1a1a1a",
|
469
|
+
"grey100" => "ffffff",
|
470
|
+
"grey11" => "1c1c1c",
|
471
|
+
"grey12" => "1f1f1f",
|
472
|
+
"grey13" => "212121",
|
473
|
+
"grey14" => "242424",
|
474
|
+
"grey15" => "262626",
|
475
|
+
"grey16" => "292929",
|
476
|
+
"grey17" => "2b2b2b",
|
477
|
+
"grey18" => "2e2e2e",
|
478
|
+
"grey19" => "303030",
|
479
|
+
"grey2" => "050505",
|
480
|
+
"grey20" => "333333",
|
481
|
+
"grey21" => "363636",
|
482
|
+
"grey22" => "383838",
|
483
|
+
"grey23" => "3b3b3b",
|
484
|
+
"grey24" => "3d3d3d",
|
485
|
+
"grey25" => "404040",
|
486
|
+
"grey26" => "424242",
|
487
|
+
"grey27" => "454545",
|
488
|
+
"grey28" => "474747",
|
489
|
+
"grey29" => "4a4a4a",
|
490
|
+
"grey3" => "080808",
|
491
|
+
"grey30" => "4d4d4d",
|
492
|
+
"grey31" => "4f4f4f",
|
493
|
+
"grey32" => "525252",
|
494
|
+
"grey33" => "545454",
|
495
|
+
"grey34" => "575757",
|
496
|
+
"grey35" => "595959",
|
497
|
+
"grey36" => "5c5c5c",
|
498
|
+
"grey37" => "5e5e5e",
|
499
|
+
"grey38" => "616161",
|
500
|
+
"grey39" => "636363",
|
501
|
+
"grey4" => "0a0a0a",
|
502
|
+
"grey40" => "666666",
|
503
|
+
"grey41" => "696969",
|
504
|
+
"grey42" => "6b6b6b",
|
505
|
+
"grey43" => "6e6e6e",
|
506
|
+
"grey44" => "707070",
|
507
|
+
"grey45" => "737373",
|
508
|
+
"grey46" => "757575",
|
509
|
+
"grey47" => "787878",
|
510
|
+
"grey48" => "7a7a7a",
|
511
|
+
"grey49" => "7d7d7d",
|
512
|
+
"grey5" => "0d0d0d",
|
513
|
+
"grey50" => "7f7f7f",
|
514
|
+
"grey51" => "828282",
|
515
|
+
"grey52" => "858585",
|
516
|
+
"grey53" => "878787",
|
517
|
+
"grey54" => "8a8a8a",
|
518
|
+
"grey55" => "8c8c8c",
|
519
|
+
"grey56" => "8f8f8f",
|
520
|
+
"grey57" => "919191",
|
521
|
+
"grey58" => "949494",
|
522
|
+
"grey59" => "969696",
|
523
|
+
"grey6" => "0f0f0f",
|
524
|
+
"grey60" => "999999",
|
525
|
+
"grey61" => "9c9c9c",
|
526
|
+
"grey62" => "9e9e9e",
|
527
|
+
"grey63" => "a1a1a1",
|
528
|
+
"grey64" => "a3a3a3",
|
529
|
+
"grey65" => "a6a6a6",
|
530
|
+
"grey66" => "a8a8a8",
|
531
|
+
"grey67" => "ababab",
|
532
|
+
"grey68" => "adadad",
|
533
|
+
"grey69" => "b0b0b0",
|
534
|
+
"grey7" => "121212",
|
535
|
+
"grey70" => "b3b3b3",
|
536
|
+
"grey71" => "b5b5b5",
|
537
|
+
"grey72" => "b8b8b8",
|
538
|
+
"grey73" => "bababa",
|
539
|
+
"grey74" => "bdbdbd",
|
540
|
+
"grey75" => "bfbfbf",
|
541
|
+
"grey76" => "c2c2c2",
|
542
|
+
"grey77" => "c4c4c4",
|
543
|
+
"grey78" => "c7c7c7",
|
544
|
+
"grey79" => "c9c9c9",
|
545
|
+
"grey8" => "141414",
|
546
|
+
"grey80" => "cccccc",
|
547
|
+
"grey81" => "cfcfcf",
|
548
|
+
"grey82" => "d1d1d1",
|
549
|
+
"grey83" => "d4d4d4",
|
550
|
+
"grey84" => "d6d6d6",
|
551
|
+
"grey85" => "d9d9d9",
|
552
|
+
"grey86" => "dbdbdb",
|
553
|
+
"grey87" => "dedede",
|
554
|
+
"grey88" => "e0e0e0",
|
555
|
+
"grey89" => "e3e3e3",
|
556
|
+
"grey9" => "171717",
|
557
|
+
"grey90" => "e5e5e5",
|
558
|
+
"grey91" => "e8e8e8",
|
559
|
+
"grey92" => "ebebeb",
|
560
|
+
"grey93" => "ededed",
|
561
|
+
"grey94" => "f0f0f0",
|
562
|
+
"grey95" => "f2f2f2",
|
563
|
+
"grey96" => "f5f5f5",
|
564
|
+
"grey97" => "f7f7f7",
|
565
|
+
"grey98" => "fafafa",
|
566
|
+
"grey99" => "fcfcfc",
|
567
|
+
"honeydew" => "f0fff0",
|
568
|
+
"honeydew1" => "f0fff0",
|
569
|
+
"honeydew2" => "e0eee0",
|
570
|
+
"honeydew3" => "c1cdc1",
|
571
|
+
"honeydew4" => "838b83",
|
572
|
+
"hotpink" => "ff69b4",
|
573
|
+
"hotpink1" => "ff6eb4",
|
574
|
+
"hotpink2" => "ee6aa7",
|
575
|
+
"hotpink3" => "cd6090",
|
576
|
+
"hotpink4" => "8b3a62",
|
577
|
+
"indianred" => "cd5c5c",
|
578
|
+
"indianred1" => "ff6a6a",
|
579
|
+
"indianred2" => "ee6363",
|
580
|
+
"indianred3" => "cd5555",
|
581
|
+
"indianred4" => "8b3a3a",
|
582
|
+
"indigo" => "4b0082",
|
583
|
+
"invis" => "fffffe",
|
584
|
+
"ivory" => "fffff0",
|
585
|
+
"ivory1" => "fffff0",
|
586
|
+
"ivory2" => "eeeee0",
|
587
|
+
"ivory3" => "cdcdc1",
|
588
|
+
"ivory4" => "8b8b83",
|
589
|
+
"khaki" => "f0e68c",
|
590
|
+
"khaki1" => "fff68f",
|
591
|
+
"khaki2" => "eee685",
|
592
|
+
"khaki3" => "cdc673",
|
593
|
+
"khaki4" => "8b864e",
|
594
|
+
"lavender" => "e6e6fa",
|
595
|
+
"lavenderblush" => "fff0f5",
|
596
|
+
"lavenderblush1" => "fff0f5",
|
597
|
+
"lavenderblush2" => "eee0e5",
|
598
|
+
"lavenderblush3" => "cdc1c5",
|
599
|
+
"lavenderblush4" => "8b8386",
|
600
|
+
"lawngreen" => "7cfc00",
|
601
|
+
"lemonchiffon" => "fffacd",
|
602
|
+
"lemonchiffon1" => "fffacd",
|
603
|
+
"lemonchiffon2" => "eee9bf",
|
604
|
+
"lemonchiffon3" => "cdc9a5",
|
605
|
+
"lemonchiffon4" => "8b8970",
|
606
|
+
"lightblue" => "add8e6",
|
607
|
+
"lightblue1" => "bfefff",
|
608
|
+
"lightblue2" => "b2dfee",
|
609
|
+
"lightblue3" => "9ac0cd",
|
610
|
+
"lightblue4" => "68838b",
|
611
|
+
"lightcoral" => "f08080",
|
612
|
+
"lightcyan" => "e0ffff",
|
613
|
+
"lightcyan1" => "e0ffff",
|
614
|
+
"lightcyan2" => "d1eeee",
|
615
|
+
"lightcyan3" => "b4cdcd",
|
616
|
+
"lightcyan4" => "7a8b8b",
|
617
|
+
"lightgoldenrod" => "eedd82",
|
618
|
+
"lightgoldenrod1" => "ffec8b",
|
619
|
+
"lightgoldenrod2" => "eedc82",
|
620
|
+
"lightgoldenrod3" => "cdbe70",
|
621
|
+
"lightgoldenrod4" => "8b814c",
|
622
|
+
"lightgoldenrodyellow" => "fafad2",
|
623
|
+
"lightgray" => "d3d3d3",
|
624
|
+
"lightgrey" => "d3d3d3",
|
625
|
+
"lightpink" => "ffb6c1",
|
626
|
+
"lightpink1" => "ffaeb9",
|
627
|
+
"lightpink2" => "eea2ad",
|
628
|
+
"lightpink3" => "cd8c95",
|
629
|
+
"lightpink4" => "8b5f65",
|
630
|
+
"lightsalmon" => "ffa07a",
|
631
|
+
"lightsalmon1" => "ffa07a",
|
632
|
+
"lightsalmon2" => "ee9572",
|
633
|
+
"lightsalmon3" => "cd8162",
|
634
|
+
"lightsalmon4" => "8b5742",
|
635
|
+
"lightseagreen" => "20b2aa",
|
636
|
+
"lightskyblue" => "87cefa",
|
637
|
+
"lightskyblue1" => "b0e2ff",
|
638
|
+
"lightskyblue2" => "a4d3ee",
|
639
|
+
"lightskyblue3" => "8db6cd",
|
640
|
+
"lightskyblue4" => "607b8b",
|
641
|
+
"lightslateblue" => "8470ff",
|
642
|
+
"lightslategray" => "778899",
|
643
|
+
"lightslategrey" => "778899",
|
644
|
+
"lightsteelblue" => "b0c4de",
|
645
|
+
"lightsteelblue1" => "cae1ff",
|
646
|
+
"lightsteelblue2" => "bcd2ee",
|
647
|
+
"lightsteelblue3" => "a2b5cd",
|
648
|
+
"lightsteelblue4" => "6e7b8b",
|
649
|
+
"lightyellow" => "ffffe0",
|
650
|
+
"lightyellow1" => "ffffe0",
|
651
|
+
"lightyellow2" => "eeeed1",
|
652
|
+
"lightyellow3" => "cdcdb4",
|
653
|
+
"lightyellow4" => "8b8b7a",
|
654
|
+
"limegreen" => "32cd32",
|
655
|
+
"linen" => "faf0e6",
|
656
|
+
"magenta" => "ff00ff",
|
657
|
+
"magenta1" => "ff00ff",
|
658
|
+
"magenta2" => "ee00ee",
|
659
|
+
"magenta3" => "cd00cd",
|
660
|
+
"magenta4" => "8b008b",
|
661
|
+
"maroon" => "b03060",
|
662
|
+
"maroon1" => "ff34b3",
|
663
|
+
"maroon2" => "ee30a7",
|
664
|
+
"maroon3" => "cd2990",
|
665
|
+
"maroon4" => "8b1c62",
|
666
|
+
"mediumaquamarine" => "66cdaa",
|
667
|
+
"mediumblue" => "0000cd",
|
668
|
+
"mediumorchid" => "ba55d3",
|
669
|
+
"mediumorchid1" => "e066ff",
|
670
|
+
"mediumorchid2" => "d15fee",
|
671
|
+
"mediumorchid3" => "b452cd",
|
672
|
+
"mediumorchid4" => "7a378b",
|
673
|
+
"mediumpurple" => "9370db",
|
674
|
+
"mediumpurple1" => "ab82ff",
|
675
|
+
"mediumpurple2" => "9f79ee",
|
676
|
+
"mediumpurple3" => "8968cd",
|
677
|
+
"mediumpurple4" => "5d478b",
|
678
|
+
"mediumseagreen" => "3cb371",
|
679
|
+
"mediumslateblue" => "7b68ee",
|
680
|
+
"mediumspringgreen" => "00fa9a",
|
681
|
+
"mediumturquoise" => "48d1cc",
|
682
|
+
"mediumvioletred" => "c71585",
|
683
|
+
"midnightblue" => "191970",
|
684
|
+
"mintcream" => "f5fffa",
|
685
|
+
"mistyrose" => "ffe4e1",
|
686
|
+
"mistyrose1" => "ffe4e1",
|
687
|
+
"mistyrose2" => "eed5d2",
|
688
|
+
"mistyrose3" => "cdb7b5",
|
689
|
+
"mistyrose4" => "8b7d7b",
|
690
|
+
"moccasin" => "ffe4b5",
|
691
|
+
"navajowhite" => "ffdead",
|
692
|
+
"navajowhite1" => "ffdead",
|
693
|
+
"navajowhite2" => "eecfa1",
|
694
|
+
"navajowhite3" => "cdb38b",
|
695
|
+
"navajowhite4" => "8b795e",
|
696
|
+
"navy" => "000080",
|
697
|
+
"navyblue" => "000080",
|
698
|
+
"none" => "fffffe",
|
699
|
+
"oldlace" => "fdf5e6",
|
700
|
+
"olivedrab" => "6b8e23",
|
701
|
+
"olivedrab1" => "c0ff3e",
|
702
|
+
"olivedrab2" => "b3ee3a",
|
703
|
+
"olivedrab3" => "9acd32",
|
704
|
+
"olivedrab4" => "698b22",
|
705
|
+
"orange" => "ffa500",
|
706
|
+
"orange1" => "ffa500",
|
707
|
+
"orange2" => "ee9a00",
|
708
|
+
"orange3" => "cd8500",
|
709
|
+
"orange4" => "8b5a00",
|
710
|
+
"orangered" => "ff4500",
|
711
|
+
"orangered1" => "ff4500",
|
712
|
+
"orangered2" => "ee4000",
|
713
|
+
"orangered3" => "cd3700",
|
714
|
+
"orangered4" => "8b2500",
|
715
|
+
"orchid" => "da70d6",
|
716
|
+
"orchid1" => "ff83fa",
|
717
|
+
"orchid2" => "ee7ae9",
|
718
|
+
"orchid3" => "cd69c9",
|
719
|
+
"orchid4" => "8b4789",
|
720
|
+
"palegoldenrod" => "eee8aa",
|
721
|
+
"palegreen" => "98fb98",
|
722
|
+
"palegreen1" => "9aff9a",
|
723
|
+
"palegreen2" => "90ee90",
|
724
|
+
"palegreen3" => "7ccd7c",
|
725
|
+
"palegreen4" => "548b54",
|
726
|
+
"paleturquoise" => "afeeee",
|
727
|
+
"paleturquoise1" => "bbffff",
|
728
|
+
"paleturquoise2" => "aeeeee",
|
729
|
+
"paleturquoise3" => "96cdcd",
|
730
|
+
"paleturquoise4" => "668b8b",
|
731
|
+
"palevioletred" => "db7093",
|
732
|
+
"palevioletred1" => "ff82ab",
|
733
|
+
"palevioletred2" => "ee799f",
|
734
|
+
"palevioletred3" => "cd6889",
|
735
|
+
"palevioletred4" => "8b475d",
|
736
|
+
"papayawhip" => "ffefd5",
|
737
|
+
"peachpuff" => "ffdab9",
|
738
|
+
"peachpuff1" => "ffdab9",
|
739
|
+
"peachpuff2" => "eecbad",
|
740
|
+
"peachpuff3" => "cdaf95",
|
741
|
+
"peachpuff4" => "8b7765",
|
742
|
+
"peru" => "cd853f",
|
743
|
+
"pink" => "ffc0cb",
|
744
|
+
"pink1" => "ffb5c5",
|
745
|
+
"pink2" => "eea9b8",
|
746
|
+
"pink3" => "cd919e",
|
747
|
+
"pink4" => "8b636c",
|
748
|
+
"plum" => "dda0dd",
|
749
|
+
"plum1" => "ffbbff",
|
750
|
+
"plum2" => "eeaeee",
|
751
|
+
"plum3" => "cd96cd",
|
752
|
+
"plum4" => "8b668b",
|
753
|
+
"powderblue" => "b0e0e6",
|
754
|
+
"purple" => "a020f0",
|
755
|
+
"purple1" => "9b30ff",
|
756
|
+
"purple2" => "912cee",
|
757
|
+
"purple3" => "7d26cd",
|
758
|
+
"purple4" => "551a8b",
|
759
|
+
"red" => "ff0000",
|
760
|
+
"red1" => "ff0000",
|
761
|
+
"red2" => "ee0000",
|
762
|
+
"red3" => "cd0000",
|
763
|
+
"red4" => "8b0000",
|
764
|
+
"rosybrown" => "bc8f8f",
|
765
|
+
"rosybrown1" => "ffc1c1",
|
766
|
+
"rosybrown2" => "eeb4b4",
|
767
|
+
"rosybrown3" => "cd9b9b",
|
768
|
+
"rosybrown4" => "8b6969",
|
769
|
+
"royalblue" => "4169e1",
|
770
|
+
"royalblue1" => "4876ff",
|
771
|
+
"royalblue2" => "436eee",
|
772
|
+
"royalblue3" => "3a5fcd",
|
773
|
+
"royalblue4" => "27408b",
|
774
|
+
"saddlebrown" => "8b4513",
|
775
|
+
"salmon" => "fa8072",
|
776
|
+
"salmon1" => "ff8c69",
|
777
|
+
"salmon2" => "ee8262",
|
778
|
+
"salmon3" => "cd7054",
|
779
|
+
"salmon4" => "8b4c39",
|
780
|
+
"sandybrown" => "f4a460",
|
781
|
+
"seagreen" => "2e8b57",
|
782
|
+
"seagreen1" => "54ff9f",
|
783
|
+
"seagreen2" => "4eee94",
|
784
|
+
"seagreen3" => "43cd80",
|
785
|
+
"seagreen4" => "2e8b57",
|
786
|
+
"seashell" => "fff5ee",
|
787
|
+
"seashell1" => "fff5ee",
|
788
|
+
"seashell2" => "eee5de",
|
789
|
+
"seashell3" => "cdc5bf",
|
790
|
+
"seashell4" => "8b8682",
|
791
|
+
"sienna" => "a0522d",
|
792
|
+
"sienna1" => "ff8247",
|
793
|
+
"sienna2" => "ee7942",
|
794
|
+
"sienna3" => "cd6839",
|
795
|
+
"sienna4" => "8b4726",
|
796
|
+
"skyblue" => "87ceeb",
|
797
|
+
"skyblue1" => "87ceff",
|
798
|
+
"skyblue2" => "7ec0ee",
|
799
|
+
"skyblue3" => "6ca6cd",
|
800
|
+
"skyblue4" => "4a708b",
|
801
|
+
"slateblue" => "6a5acd",
|
802
|
+
"slateblue1" => "836fff",
|
803
|
+
"slateblue2" => "7a67ee",
|
804
|
+
"slateblue3" => "6959cd",
|
805
|
+
"slateblue4" => "473c8b",
|
806
|
+
"slategray" => "708090",
|
807
|
+
"slategray1" => "c6e2ff",
|
808
|
+
"slategray2" => "b9d3ee",
|
809
|
+
"slategray3" => "9fb6cd",
|
810
|
+
"slategray4" => "6c7b8b",
|
811
|
+
"slategrey" => "708090",
|
812
|
+
"snow" => "fffafa",
|
813
|
+
"snow1" => "fffafa",
|
814
|
+
"snow2" => "eee9e9",
|
815
|
+
"snow3" => "cdc9c9",
|
816
|
+
"snow4" => "8b8989",
|
817
|
+
"springgreen" => "00ff7f",
|
818
|
+
"springgreen1" => "00ff7f",
|
819
|
+
"springgreen2" => "00ee76",
|
820
|
+
"springgreen3" => "00cd66",
|
821
|
+
"springgreen4" => "008b45",
|
822
|
+
"steelblue" => "4682b4",
|
823
|
+
"steelblue1" => "63b8ff",
|
824
|
+
"steelblue2" => "5cacee",
|
825
|
+
"steelblue3" => "4f94cd",
|
826
|
+
"steelblue4" => "36648b",
|
827
|
+
"tan" => "d2b48c",
|
828
|
+
"tan1" => "ffa54f",
|
829
|
+
"tan2" => "ee9a49",
|
830
|
+
"tan3" => "cd853f",
|
831
|
+
"tan4" => "8b5a2b",
|
832
|
+
"thistle" => "d8bfd8",
|
833
|
+
"thistle1" => "ffe1ff",
|
834
|
+
"thistle2" => "eed2ee",
|
835
|
+
"thistle3" => "cdb5cd",
|
836
|
+
"thistle4" => "8b7b8b",
|
837
|
+
"tomato" => "ff6347",
|
838
|
+
"tomato1" => "ff6347",
|
839
|
+
"tomato2" => "ee5c42",
|
840
|
+
"tomato3" => "cd4f39",
|
841
|
+
"tomato4" => "8b3626",
|
842
|
+
"transparent" => "fffffe",
|
843
|
+
"turquoise" => "40e0d0",
|
844
|
+
"turquoise1" => "00f5ff",
|
845
|
+
"turquoise2" => "00e5ee",
|
846
|
+
"turquoise3" => "00c5cd",
|
847
|
+
"turquoise4" => "00868b",
|
848
|
+
"violet" => "ee82ee",
|
849
|
+
"violetred" => "d02090",
|
850
|
+
"violetred1" => "ff3e96",
|
851
|
+
"violetred2" => "ee3a8c",
|
852
|
+
"violetred3" => "cd3278",
|
853
|
+
"violetred4" => "8b2252",
|
854
|
+
"wheat" => "f5deb3",
|
855
|
+
"wheat1" => "ffe7ba",
|
856
|
+
"wheat2" => "eed8ae",
|
857
|
+
"wheat3" => "cdba96",
|
858
|
+
"wheat4" => "8b7e66",
|
859
|
+
"white" => "ffffff",
|
860
|
+
"whitesmoke" => "f5f5f5",
|
861
|
+
"yellow" => "ffff00",
|
862
|
+
"yellow1" => "ffff00",
|
863
|
+
"yellow2" => "eeee00",
|
864
|
+
"yellow3" => "cdcd00",
|
865
|
+
"yellow4" => "8b8b00",
|
866
|
+
"yellowgreen" => "9acd32",
|
867
|
+
"aliceblue" => "f0f8ff",
|
868
|
+
"antiquewhite" => "faebd7",
|
869
|
+
"aqua" => "00ffff",
|
870
|
+
"aquamarine" => "7fffd4",
|
871
|
+
"azure" => "f0ffff",
|
872
|
+
"beige" => "f5f5dc",
|
873
|
+
"bisque" => "ffe4c4",
|
874
|
+
"black" => "000000",
|
875
|
+
"blanchedalmond" => "ffebcd",
|
876
|
+
"blue" => "0000ff",
|
877
|
+
"blueviolet" => "8a2be2",
|
878
|
+
"brown" => "a52a2a",
|
879
|
+
"burlywood" => "deb887",
|
880
|
+
"cadetblue" => "5f9ea0",
|
881
|
+
"chartreuse" => "7fff00",
|
882
|
+
"chocolate" => "d2691e",
|
883
|
+
"coral" => "ff7f50",
|
884
|
+
"cornflowerblue" => "6495ed",
|
885
|
+
"cornsilk" => "fff8dc",
|
886
|
+
"crimson" => "dc143c",
|
887
|
+
"cyan" => "00ffff",
|
888
|
+
"darkblue" => "00008b",
|
889
|
+
"darkcyan" => "008b8b",
|
890
|
+
"darkgoldenrod" => "b8860b",
|
891
|
+
"darkgray" => "a9a9a9",
|
892
|
+
"darkgreen" => "006400",
|
893
|
+
"darkgrey" => "a9a9a9",
|
894
|
+
"darkkhaki" => "bdb76b",
|
895
|
+
"darkmagenta" => "8b008b",
|
896
|
+
"darkolivegreen" => "556b2f",
|
897
|
+
"darkorange" => "ff8c00",
|
898
|
+
"darkorchid" => "9932cc",
|
899
|
+
"darkred" => "8b0000",
|
900
|
+
"darksalmon" => "e9967a",
|
901
|
+
"darkseagreen" => "8fbc8f",
|
902
|
+
"darkslateblue" => "483d8b",
|
903
|
+
"darkslategray" => "2f4f4f",
|
904
|
+
"darkslategrey" => "2f4f4f",
|
905
|
+
"darkturquoise" => "00ced1",
|
906
|
+
"darkviolet" => "9400d3",
|
907
|
+
"deeppink" => "ff1493",
|
908
|
+
"deepskyblue" => "00bfff",
|
909
|
+
"dimgray" => "696969",
|
910
|
+
"dimgrey" => "696969",
|
911
|
+
"dodgerblue" => "1e90ff",
|
912
|
+
"firebrick" => "b22222",
|
913
|
+
"floralwhite" => "fffaf0",
|
914
|
+
"forestgreen" => "228b22",
|
915
|
+
"fuchsia" => "ff00ff",
|
916
|
+
"gainsboro" => "dcdcdc",
|
917
|
+
"ghostwhite" => "f8f8ff",
|
918
|
+
"gold" => "ffd700",
|
919
|
+
"goldenrod" => "daa520",
|
920
|
+
"gray" => "808080",
|
921
|
+
"grey" => "808080",
|
922
|
+
"green" => "008000",
|
923
|
+
"greenyellow" => "adff2f",
|
924
|
+
"honeydew" => "f0fff0",
|
925
|
+
"hotpink" => "ff69b4",
|
926
|
+
"indianred" => "cd5c5c",
|
927
|
+
"indigo" => "4b0082",
|
928
|
+
"ivory" => "fffff0",
|
929
|
+
"khaki" => "f0e68c",
|
930
|
+
"lavender" => "e6e6fa",
|
931
|
+
"lavenderblush" => "fff0f5",
|
932
|
+
"lawngreen" => "7cfc00",
|
933
|
+
"lemonchiffon" => "fffacd",
|
934
|
+
"lightblue" => "add8e6",
|
935
|
+
"lightcoral" => "f08080",
|
936
|
+
"lightcyan" => "e0ffff",
|
937
|
+
"lightgoldenrodyellow" => "fafad2",
|
938
|
+
"lightgray" => "d3d3d3",
|
939
|
+
"lightgreen" => "90ee90",
|
940
|
+
"lightgrey" => "d3d3d3",
|
941
|
+
"lightpink" => "ffb6c1",
|
942
|
+
"lightsalmon" => "ffa07a",
|
943
|
+
"lightseagreen" => "20b2aa",
|
944
|
+
"lightskyblue" => "87cefa",
|
945
|
+
"lightslategray" => "778899",
|
946
|
+
"lightslategrey" => "778899",
|
947
|
+
"lightsteelblue" => "b0c4de",
|
948
|
+
"lightyellow" => "ffffe0",
|
949
|
+
"lime" => "00ff00",
|
950
|
+
"limegreen" => "32cd32",
|
951
|
+
"linen" => "faf0e6",
|
952
|
+
"magenta" => "ff00ff",
|
953
|
+
"maroon" => "800000",
|
954
|
+
"mediumaquamarine" => "66cdaa",
|
955
|
+
"mediumblue" => "0000cd",
|
956
|
+
"mediumorchid" => "ba55d3",
|
957
|
+
"mediumpurple" => "9370db",
|
958
|
+
"mediumseagreen" => "3cb371",
|
959
|
+
"mediumslateblue" => "7b68ee",
|
960
|
+
"mediumspringgreen" => "00fa9a",
|
961
|
+
"mediumturquoise" => "48d1cc",
|
962
|
+
"mediumvioletred" => "c71585",
|
963
|
+
"midnightblue" => "191970",
|
964
|
+
"mintcream" => "f5fffa",
|
965
|
+
"mistyrose" => "ffe4e1",
|
966
|
+
"moccasin" => "ffe4b5",
|
967
|
+
"navajowhite" => "ffdead",
|
968
|
+
"navy" => "000080",
|
969
|
+
"oldlace" => "fdf5e6",
|
970
|
+
"olive" => "808000",
|
971
|
+
"olivedrab" => "6b8e23",
|
972
|
+
"orange" => "ffa500",
|
973
|
+
"orangered" => "ff4500",
|
974
|
+
"orchid" => "da70d6",
|
975
|
+
"palegoldenrod" => "eee8aa",
|
976
|
+
"palegreen" => "98fb98",
|
977
|
+
"paleturquoise" => "afeeee",
|
978
|
+
"palevioletred" => "db7093",
|
979
|
+
"papayawhip" => "ffefd5",
|
980
|
+
"peachpuff" => "ffdab9",
|
981
|
+
"peru" => "cd853f",
|
982
|
+
"pink" => "ffc0cb",
|
983
|
+
"plum" => "dda0dd",
|
984
|
+
"powderblue" => "b0e0e6",
|
985
|
+
"purple" => "800080",
|
986
|
+
"red" => "ff0000",
|
987
|
+
"rosybrown" => "bc8f8f",
|
988
|
+
"royalblue" => "4169e1",
|
989
|
+
"saddlebrown" => "8b4513",
|
990
|
+
"salmon" => "fa8072",
|
991
|
+
"sandybrown" => "f4a460",
|
992
|
+
"seagreen" => "2e8b57",
|
993
|
+
"seashell" => "fff5ee",
|
994
|
+
"sienna" => "a0522d",
|
995
|
+
"silver" => "c0c0c0",
|
996
|
+
"skyblue" => "87ceeb",
|
997
|
+
"slateblue" => "6a5acd",
|
998
|
+
"slategray" => "708090",
|
999
|
+
"slategrey" => "708090",
|
1000
|
+
"snow" => "fffafa",
|
1001
|
+
"springgreen" => "00ff7f",
|
1002
|
+
"steelblue" => "4682b4",
|
1003
|
+
"tan" => "d2b48c",
|
1004
|
+
"teal" => "008080",
|
1005
|
+
"thistle" => "d8bfd8",
|
1006
|
+
"tomato" => "ff6347",
|
1007
|
+
"turquoise" => "40e0d0",
|
1008
|
+
"violet" => "ee82ee",
|
1009
|
+
"wheat" => "f5deb3",
|
1010
|
+
"white" => "ffffff",
|
1011
|
+
"whitesmoke" => "f5f5f5",
|
1012
|
+
"yellow" => "ffff00",
|
1013
|
+
"yellowgreen" => "9acd32"
|
1014
|
+
}
|
1015
|
+
end
|
1016
|
+
end
|
1017
|
+
end
|
1018
|
+
|