Method: Color::Palette::Gimp#initialize

Defined in:
lib/coloration/color/palette/gimp.rb

#initialize(palette) ⇒ Gimp

Create a new GIMP palette.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/coloration/color/palette/gimp.rb', line 43

def initialize(palette)
  @colors   = []
  @names    = {}
  @valid    = false
  @name     = "(unnamed)"

  index     = 0

  palette.split($/).each do |line|
    line.chomp!
    line.gsub!(/\s*#.*\Z/, '')

    next if line.empty?

    if line =~ /\AGIMP Palette\Z/
      @valid = true
      next
    end

    info = /(\w+):\s(.*$)/.match(line)
    if info
      @name = info.captures[1] if info.captures[0] =~ /name/i
      next
    end

    line.gsub!(/^\s+/, '')
    data = line.split(/\s+/, 4)
    name = data.pop.strip
    data.map! { |el| el.to_i }

    color = Color::RGB.new(*data)

    @colors[index]  = color
    @names[name] ||= []
    @names[name]  << color

    index += 1
  end
end