Class: TaskJuggler::Painter::Color

Inherits:
Object
  • Object
show all
Defined in:
lib/taskjuggler/Painter/Color.rb

Overview

A description of the color. The color is stored internally as an RGB value. Common names are provided for many popular colors.

Constant Summary collapse

NamedColors =
{
  :aliceblue => [ 240, 248, 255 ],
  :antiquewhite  => [ 250, 235, 215 ],
  :aqua => [ 0, 255, 255 ],
  :aquamarine  => [ 127, 255, 212 ],
  :azure => [ 240, 255, 255 ],
  :beige => [ 245, 245, 220 ],
  :bisque  => [ 255, 228, 196 ],
  :black => [ 0, 0, 0 ],
  :blanchedalmond  => [ 255, 235, 205 ],
  :blue => [ 0, 0, 255 ],
  :blueviolet  => [ 138, 43, 226 ],
  :brown => [ 165, 42, 42 ],
  :burlywood => [ 222, 184, 135 ],
  :cadetblue => [ 95, 158, 160 ],
  :chartreuse  => [ 127, 255, 0 ],
  :chocolate => [ 210, 105, 30 ],
  :coral => [ 255, 127, 80 ],
  :cornflowerblue  => [ 100, 149, 237 ],
  :cornsilk  => [ 255, 248, 220 ],
  :crimson => [ 220, 20, 60 ],
  :cyan => [ 0, 255, 255 ],
  :darkblue => [ 0, 0, 139 ],
  :darkcyan => [ 0, 139, 139 ],
  :darkgoldenrod => [ 184, 134, 11 ],
  :darkgray  => [ 169, 169, 169 ],
  :darkgreen => [ 0, 100, 0 ],
  :darkgrey  => [ 169, 169, 169 ],
  :darkkhaki => [ 189, 183, 107 ],
  :darkmagenta => [ 139, 0, 139 ],
  :darkolivegreen => [ 85, 107, 47 ],
  :darkorange  => [ 255, 140, 0 ],
  :darkorchid  => [ 153, 50, 204 ],
  :darkred => [ 139, 0, 0 ],
  :darksalmon  => [ 233, 150, 122 ],
  :darkseagreen  => [ 143, 188, 143 ],
  :darkslateblue => [ 72, 61, 139 ],
  :darkslategray => [ 47, 79, 79 ],
  :darkslategrey => [ 47, 79, 79 ],
  :darkturquoise => [ 0, 206, 209 ],
  :darkviolet  => [ 148, 0, 211 ],
  :deeppink  => [ 255, 20, 147 ],
  :deepskyblue => [ 0, 191, 255 ],
  :dimgray => [ 105, 105, 105 ],
  :dimgrey => [ 105, 105, 105 ],
  :dodgerblue => [ 30, 144, 255 ],
  :firebrick => [ 178, 34, 34 ],
  :floralwhite => [ 255, 250, 240 ],
  :forestgreen => [ 34, 139, 34 ],
  :fuchsia => [ 255, 0, 255 ],
  :gainsboro => [ 220, 220, 220 ],
  :ghostwhite  => [ 248, 248, 255 ],
  :gold  => [ 255, 215, 0 ],
  :goldenrod => [ 218, 165, 32 ],
  :gray  => [ 128, 128, 128 ],
  :grey  => [ 128, 128, 128 ],
  :green => [ 0, 128, 0 ],
  :greenyellow => [ 173, 255, 47 ],
  :honeydew  => [ 240, 255, 240 ],
  :hotpink => [ 255, 105, 180 ],
  :indianred => [ 205, 92, 92 ],
  :indigo => [ 75, 0, 130 ],
  :ivory => [ 255, 255, 240 ],
  :khaki => [ 240, 230, 140 ],
  :lavender  => [ 230, 230, 250 ],
  :lavenderblush => [ 255, 240, 245 ],
  :lawngreen => [ 124, 252, 0 ],
  :lemonchiffon  => [ 255, 250, 205 ],
  :lightblue => [ 173, 216, 230 ],
  :lightcoral  => [ 240, 128, 128 ],
  :lightcyan => [ 224, 255, 255 ],
  :lightgoldenrodyellow  => [ 250, 250, 210 ],
  :lightgray => [ 211, 211, 211 ],
  :lightgreen  => [ 144, 238, 144 ],
  :lightgrey => [ 211, 211, 211 ],
  :lightpink => [ 255, 182, 193 ],
  :lightsalmon => [ 255, 160, 122 ],
  :lightseagreen => [ 32, 178, 170 ],
  :lightskyblue  => [ 135, 206, 250 ],
  :lightslategray  => [ 119, 136, 153 ],
  :lightslategrey  => [ 119, 136, 153 ],
  :lightsteelblue  => [ 176, 196, 222 ],
  :lightyellow => [ 255, 255, 224 ],
  :lime => [ 0, 255, 0 ],
  :limegreen => [ 50, 205, 50 ],
  :linen => [ 250, 240, 230 ],
  :magenta => [ 255, 0, 255 ],
  :maroon  => [ 128, 0, 0 ],
  :mediumaquamarine  => [ 102, 205, 170 ],
  :mediumblue => [ 0, 0, 205 ],
  :mediumorchid  => [ 186, 85, 211 ],
  :mediumpurple  => [ 147, 112, 219 ],
  :mediumseagreen => [ 60, 179, 113 ],
  :mediumslateblue => [ 123, 104, 238 ],
  :mediumspringgreen => [ 0, 250, 154 ],
  :mediumturquoise => [ 72, 209, 204 ],
  :mediumvioletred => [ 199, 21, 133 ],
  :midnightblue => [ 25, 25, 112 ],
  :mintcream => [ 245, 255, 250 ],
  :mistyrose => [ 255, 228, 225 ],
  :moccasin  => [ 255, 228, 181 ],
  :navajowhite => [ 255, 222, 173 ],
  :navy => [ 0, 0, 128 ],
  :oldlace => [ 253, 245, 230 ],
  :olive => [ 128, 128, 0 ],
  :olivedrab => [ 107, 142, 35 ],
  :orange  => [ 255, 165, 0 ],
  :orangered => [ 255, 69, 0 ],
  :orchid  => [ 218, 112, 214 ],
  :palegoldenrod => [ 238, 232, 170 ],
  :palegreen => [ 152, 251, 152 ],
  :paleturquoise => [ 175, 238, 238 ],
  :palevioletred => [ 219, 112, 147 ],
  :papayawhip  => [ 255, 239, 213 ],
  :peachpuff => [ 255, 218, 185 ],
  :peru  => [ 205, 133, 63 ],
  :pink  => [ 255, 192, 203 ],
  :plum  => [ 221, 160, 221 ],
  :powderblue  => [ 176, 224, 230 ],
  :purple  => [ 128, 0, 128 ],
  :red => [ 255, 0, 0 ],
  :rosybrown => [ 188, 143, 143 ],
  :royalblue => [ 65, 105, 225 ],
  :saddlebrown => [ 139, 69, 19 ],
  :salmon  => [ 250, 128, 114 ],
  :sandybrown  => [ 244, 164, 96 ],
  :seagreen => [ 46, 139, 87 ],
  :seashell  => [ 255, 245, 238 ],
  :sienna  => [ 160, 82, 45 ],
  :silver  => [ 192, 192, 192 ],
  :skyblue => [ 135, 206, 235 ],
  :slateblue => [ 106, 90, 205 ],
  :slategray => [ 112, 128, 144 ],
  :slategrey => [ 112, 128, 144 ],
  :snow  => [ 255, 250, 250 ],
  :springgreen => [ 0, 255, 127 ],
  :steelblue => [ 70, 130, 180 ],
  :tan => [ 210, 180, 140 ],
  :teal => [ 0, 128, 128 ],
  :thistle => [ 216, 191, 216 ],
  :tomato  => [ 255, 99, 71 ],
  :turquoise => [ 64, 224, 208 ],
  :violet  => [ 238, 130, 238 ],
  :wheat => [ 245, 222, 179 ],
  :white => [ 255, 255, 255 ],
  :whitesmoke  => [ 245, 245, 245 ],
  :yellow  => [ 255, 255, 0 ],
  :yellowgreen => [ 154, 205, 50 ]
}

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Color

Create a new Color object.



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/taskjuggler/Painter/Color.rb', line 173

def initialize(*args)
  if args.length == 1
    unless NamedColors.include?(args[0])
      raise "Unknown color name #{args[0]}"
    end

    @r, @g, @b = NamedColors[args[0]]
  elsif args.length == 3
    args.each do |v|
      unless v >= 0 && v < 256
        raise ArgumentError, "RGB values (#{args.join(', ')}) must " +
                             "be between 0 and 255."
      end
    end

    @r, @g, @b = args
  elsif args.length == 4
    unless args[0] >= 0 && args[0] < 360
      raise ArgumentError, "Hue value must be between 0 and 360"
    end
    unless args[1] >= 0 && args[1] <= 255
      raise ArgumentError, "Saturation value (#{args[1]}) must be " +
                           "between 0 and 255"
    end
    unless args[2] >= 0 && args[2] <= 255
      raise ArgumentError, "Color value (#{args[2]}) must be " +
                           "between 0 and 255"
    end
    @r, @g, @b = hsvToRgb(*args[0..2])
  else
    raise ArgumentError
  end
end

Instance Method Details

#to_hsvObject



211
212
213
# File 'lib/taskjuggler/Painter/Color.rb', line 211

def to_hsv
  rgbToHsv(@r, @g, @b)
end

#to_rgbObject



207
208
209
# File 'lib/taskjuggler/Painter/Color.rb', line 207

def to_rgb
  [ @r, @g, @b ]
end

#to_sObject

Convert the RGB value into a String format that is used in HTML.



216
217
218
# File 'lib/taskjuggler/Painter/Color.rb', line 216

def to_s
  format("#%02x%02x%02x", @r, @g, @b)
end