module Canis::ColorMap
Public Class Methods
# File lib/canis/core/system/colormap.rb, line 67 def ColorMap.colors @@colors end
public
returns a color_pair for a given foreground and background color
# File lib/canis/core/system/colormap.rb, line 56 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
2010-09-20 12:22 changed colors from string to symbol
private
returns a color constant for a human color string
# File lib/canis/core/system/colormap.rb, line 23 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? Integer ret = FFI::NCurses.const_get "COLOR_#{colorstring.to_s.upcase}" end
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. @param [Integer] color_pair @return [Symbol, Symbol] foreground and backgrounf color @example
color, bgcolor = get_colors_for_pair $datacolor
# File lib/canis/core/system/colormap.rb, line 51 def ColorMap.get_colors_for_pair pair $color_map.invert[pair] end
private
creates a new color pair, puts in color map and returns color_pair number
# File lib/canis/core/system/colormap.rb, line 32 def ColorMap.install_color fgc, bgc #$log.debug " install_color found #{fgc} #{@bgc} " @color_id += 1 # testing to see, since i get junk after 255 or so #@color_id = 255 if @color_id > 255 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
returns true if color is a valid one, else false @param [Symbol] color such as :black :cyan :yellow @return [Boolean] true if valid, else false
# File lib/canis/core/system/colormap.rb, line 73 def ColorMap.is_color? color return true if color.is_a? Integer # so we can use 256 colors @@colors.include? color.to_sym end
reset the color_id to zero so one can create colors from scratch. This is only to be used in the case of a color demo when you don't want the colors
we originally made, since there seems to be a shortage of slots.
# File lib/canis/core/system/colormap.rb, line 116 def ColorMap.reset_color_id @color_id = 0 $color_map = {} end
public
setup color map at start of application
# File lib/canis/core/system/colormap.rb, line 80 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($def_fg_color, $def_bg_color) $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