Sha256: 64ee1f71fcba3f86eeb2aebb7fe8fdc581a19a86da831af5637502a266493932

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

module Colors
  class ListedColormap < Colormap
    def initialize(colors, name: :from_list, n_colors: nil)
      @monochrome = false
      if n_colors.nil?
        @colors = Array.try_convert(colors)
        n_colors = @colors.length
      else
        case colors
        when String, Symbol
          @colors = Array.new(n_colors) { colors }
          @monochrome = true
        when Enumerable
          @colors = colors.cycle.take(n_colors)
          @monochrome = @colors.all? {|x| x == @colors[0] }
        else
          begin
            gray = Float(colors)
          rescue TypeError, ArgumentError
            raise ArgumentError,
                  "invalid value for `colors` (%p)" % colors
          else
            @colors = Array.new(n_colors) { gray }
          end
          @monochrome = true
        end
      end
      @colors.freeze

      super(name, n_colors)
    end

    attr_reader :colors

    private def init_colormap
      @lookup_table = self.colors.map {|color| Utils.make_color(color).to_rgba }
      @initialized = true
      update_extreme_colors
    end

    private def make_reverse_colormap(name)
      ListedColormap.new(self.colors.reverse, name: name, n_colors: self.n_colors)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
red-colors-0.4.0 lib/colors/listed_colormap.rb
red-colors-0.3.0 lib/colors/listed_colormap.rb