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.



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
206
# File 'lib/taskjuggler/Painter/Color.rb', line 174

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



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

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

#to_rgbObject



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

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

#to_sObject

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



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

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