Class: Termdots::ColorGenerator
- Inherits:
-
Object
- Object
- Termdots::ColorGenerator
- Defined in:
- lib/termdots.rb
Overview
Color generator class
Constant Summary collapse
- COLOR_MODE_16 =
color mode
1
- COLOR_MODE_256 =
2
- CT_RGB =
color => [r, g, b]
{ :black => [0, 0, 0], :red => [205, 0, 0], :green => [0, 205, 0], :yellow => [205, 205, 0], :blue => [0, 0, 238], :magenta => [205, 0, 205], :cyan => [0, 205, 205], :gray => [229, 229, 229], :darkgray => [127, 127, 127], :l_red => [255, 0, 0], :l_green => [0, 255, 0], :l_yellow => [255, 255, 0], :l_blue => [92, 92, 255], :l_magenta => [255, 0, 255], :l_cyan => [0, 255, 255], :white => [255, 255, 255] }
- CT_ANSI =
color => ANSI escape code
{ :black => "\033[40m", :red => "\033[41m", :green => "\033[42m", :yellow => "\033[43m", :blue => "\033[44m", :magenta => "\033[45m", :cyan => "\033[46m", :gray => "\033[47m", :darkgray => "\033[100m", :l_red => "\033[101m", :l_green => "\033[102m", :l_yellow => "\033[103m", :l_blue => "\033[104m", :l_magenta => "\033[105m", :l_cyan => "\033[106m", :white => "\033[107m" }
Instance Method Summary collapse
- #clear_color ⇒ Object
-
#convert(r, g, b) ⇒ Object
r,g,b = (0…255).
- #convert16(r, g, b) ⇒ Object
- #convert256(r, g, b) ⇒ Object
-
#initialize(mode) ⇒ ColorGenerator
constructor
A new instance of ColorGenerator.
- #set_transparent_color(r, g, b) ⇒ Object
- #test ⇒ Object
- #transparent_color?(r, g, b) ⇒ Boolean
Constructor Details
#initialize(mode) ⇒ ColorGenerator
Returns a new instance of ColorGenerator.
96 97 98 99 100 101 |
# File 'lib/termdots.rb', line 96 def initialize(mode) @mode = mode @tr = -1 @tg = -1 @tb = -1 end |
Instance Method Details
#clear_color ⇒ Object
153 154 155 |
# File 'lib/termdots.rb', line 153 def clear_color return "\033[0m" end |
#convert(r, g, b) ⇒ Object
r,g,b = (0…255)
114 115 116 117 118 119 120 121 122 |
# File 'lib/termdots.rb', line 114 def convert(r, g, b) if @mode == COLOR_MODE_16 return convert16(r, g, b) elsif @mode == COLOR_MODE_256 return convert256(r, g, b) else return "" end end |
#convert16(r, g, b) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/termdots.rb', line 124 def convert16(r, g, b) if transparent_color?(r, g, b) return "" end diff_min = 255 * 3 ret = CT_ANSI[:black] CT_RGB.each do |color, rgb| diff = (r - rgb[0]).abs + (g - rgb[1]).abs + (b - rgb[2]).abs if diff < diff_min ret = CT_ANSI[color] diff_min = diff end end return ret end |
#convert256(r, g, b) ⇒ Object
142 143 144 145 146 147 148 149 150 151 |
# File 'lib/termdots.rb', line 142 def convert256(r, g, b) if transparent_color?(r, g, b) return "" end code = (r * 5 / 255 * 36) + (g * 5 / 255 * 6) + (b * 5 / 255) + 16 ret = "\033[48;5;" + code.to_s + "m" return ret end |
#set_transparent_color(r, g, b) ⇒ Object
103 104 105 106 107 |
# File 'lib/termdots.rb', line 103 def set_transparent_color(r, g, b) @tr = r @tg = g @tb = b end |
#test ⇒ Object
157 158 159 160 |
# File 'lib/termdots.rb', line 157 def test puts "\033[40m \033[41m \033[42m \033[43m \033[44m \033[45m \033[46m \033[47m \033[0m" puts "\033[100m \033[101m \033[102m \033[103m \033[104m \033[105m \033[106m \033[107m \033[0m" end |
#transparent_color?(r, g, b) ⇒ Boolean
109 110 111 |
# File 'lib/termdots.rb', line 109 def transparent_color?(r, g, b) return r == @tr && g == @tg && b == @tb end |