Module: ColorMap

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

Class Method Summary collapse

Class Method Details

.colorsObject



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

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



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

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
# 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.to_s.upcase}"
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



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

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



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

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



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

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



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
91
92
93
# File 'lib/rbcurse/core/system/colormap.rb', line 61

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