Module: ColorMap

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

Class Method Summary collapse

Class Method Details

.colorsObject



46
47
48
# File 'lib/rbcurse/colormap.rb', line 46

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



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rbcurse/colormap.rb', line 35

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
# File 'lib/rbcurse/colormap.rb', line 6

def ColorMap.get_color_const colorstring
  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


30
31
32
# File 'lib/rbcurse/colormap.rb', line 30

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



13
14
15
16
17
18
19
20
21
# File 'lib/rbcurse/colormap.rb', line 13

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



52
53
54
# File 'lib/rbcurse/colormap.rb', line 52

def ColorMap.is_color? color
  @@colors.include? color.to_sym
end

.setupObject

public setup color map at start of application



58
59
60
61
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
# File 'lib/rbcurse/colormap.rb', line 58

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
    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