Module: Textbringer::Color

Defined in:
lib/textbringer/color.rb

Defined Under Namespace

Classes: RGBColor

Constant Summary collapse

BASIC_COLORS =
{
  "default" => -1,
  "black" => Curses::COLOR_BLACK,
  "red" => Curses::COLOR_RED,
  "green" => Curses::COLOR_GREEN,
  "yellow" => Curses::COLOR_YELLOW,
  "blue" => Curses::COLOR_BLUE,
  "magenta" => Curses::COLOR_MAGENTA,
  "cyan" => Curses::COLOR_CYAN,
  "white" => Curses::COLOR_WHITE,
  "brightblack" => 8,
  "brightred" => 9,
  "brightgreen" => 10,
  "brightyellow" => 11,
  "brightblue" => 12,
  "brightmagenta" => 13,
  "brightcyan" => 14,
  "brightwhite" => 15
}
ADDITIONAL_COLORS =
[]

Class Method Summary collapse

Class Method Details

.[](name) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/textbringer/color.rb', line 40

def self.[](name)
  n = find_color_number(name)
  if n < Window.colors
    n
  else
    -1
  end
end

.find_color_number(name) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/textbringer/color.rb', line 49

def self.find_color_number(name)
  if name.is_a?(Integer)
    return name
  end
  case name
  when /\A\#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})\z/
    r = $1.to_i(16)
    g = $2.to_i(16)
    b = $3.to_i(16)
    ADDITIONAL_COLORS.sort_by { |c|
      (r - c.r) ** 2 + (g - c.g) ** 2 + (b - c.b) ** 2
    }.first.number
  else
    unless BASIC_COLORS.key?(name)
      raise EditorError, "No such color: #{name}"
    end
    BASIC_COLORS[name]
  end
end