Module: ColorMap

Included in:
RubyCurses
Defined in:
lib/rbcurse/core/system/colormap.rb

Class Method Summary collapse

Class Method Details

.colorsObject



49
50
51
# File 'lib/rbcurse/core/system/colormap.rb', line 49

def ColorMap.colors
  @@colors
end

.get_color(fgc, bgc = $def_bg_color) ⇒ Object

public returns a color_pair for a given foreground and background color



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rbcurse/core/system/colormap.rb', line 38

def ColorMap.get_color fgc, bgc=$def_bg_color
  fgc = fgc.to_sym if fgc.is_a? String
  bgc = bgc.to_sym if bgc.is_a? String
  if $color_map.include? [fgc, bgc]
    #$log.debug " get_color found #{fgc} #{@bgc} "
    return $color_map[[fgc, bgc]]
  else
    #$log.debug " get_color NOT found #{fgc} #{@bgc} "
    return ColorMap.install_color fgc, bgc
  end
end

.get_color_const(colorstring) ⇒ Object

2010-09-20 12:22 changed colors from string to symbol private returns a color constant for a human color string



6
7
8
9
10
11
12
# File 'lib/rbcurse/core/system/colormap.rb', line 6

def ColorMap.get_color_const colorstring
  # added check for fixnum if we go beyond these constants 2011-11-28 
  # e.g. to use full 256 colors
  return colorstring if colorstring.is_a? Fixnum 
  ret = FFI::NCurses.const_get "COLOR_#{colorstring.upcase}"
  #raise  "color const nil ColorMap 8 " if !ret
end

.get_colors_for_pair(pair) ⇒ Symbol

returns the colors that make up the given pair you may want to find what makes up $bottomcolor and set color and bgcolor with it.

Examples:

color, bgcolor = get_colors_for_pair $datacolor

Parameters:

Returns:

  • (Symbol, Symbol)

    foreground and backgrounf color



33
34
35
# File 'lib/rbcurse/core/system/colormap.rb', line 33

def ColorMap.get_colors_for_pair pair
  $color_map.invert[pair]
end

.install_color(fgc, bgc) ⇒ Object

private creates a new color pair, puts in color map and returns color_pair number



16
17
18
19
20
21
22
23
24
# File 'lib/rbcurse/core/system/colormap.rb', line 16

def ColorMap.install_color fgc, bgc
    #$log.debug " install_color found #{fgc} #{@bgc} "
    @color_id += 1
  fg = ColorMap.get_color_const fgc
  bg = ColorMap.get_color_const bgc
  FFI::NCurses.init_pair(@color_id, fg, bg);
  $color_map[[fgc, bgc]] = @color_id
  return @color_id
end

.is_color?(color) ⇒ Boolean

returns true if color is a valid one, else false

Parameters:

  • color (Symbol)

    such as :black :cyan :yellow

Returns:

  • (Boolean)

    true if valid, else false



55
56
57
58
# File 'lib/rbcurse/core/system/colormap.rb', line 55

def ColorMap.is_color? color
  return true if color.is_a? Fixnum # so we can use 256 colors
  @@colors.include? color.to_sym
end

.setupObject

public setup color map at start of application



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/rbcurse/core/system/colormap.rb', line 62

def ColorMap.setup
  @color_id = 0
  $color_map = {}
  FFI::NCurses.start_color();
  # Initialize few color pairs 
  $def_fg_color = :white   # pls set these 2 for your application
  $def_bg_color = :black
  #COLORS = [COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, 
  #     COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE]
  @@colors = [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white]

  # make foreground colors
  bg = ColorMap.get_color_const $def_bg_color
  @@colors[0...@@colors.size].each_with_index do |color, i|
    next if color == $def_bg_color # NOTE hope this doesn't do something if you change def_bg
    ColorMap.install_color color, $def_bg_color
  end
  $reversecolor = ColorMap.get_color $def_bg_color, $def_fg_color
  $popupcolor = ColorMap.get_color :cyan, $def_fg_color

  $errorcolor = ColorMap.get_color :white, :red
  #$promptcolor = $selectedcolor = ColorMap.get_color(:yellow, :red)
  $promptcolor = ColorMap.get_color(:yellow, :red)
  $normalcolor = $datacolor = ColorMap.get_color(:white, :black)
  $bottomcolor = $topcolor = ColorMap.get_color(:white, :blue)
  $selectedcolor = $datacolor # since we now use reverse attr in list

  $row_selected_attr = Ncurses::A_REVERSE
  $row_focussed_attr = Ncurses::A_BOLD
  $row_attr          = Ncurses::A_NORMAL

#    $log.debug " colormap SETUP: #{$datacolor} #{$reversecolor} "
end