color-tools 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog +35 -1
 - data/Install +11 -2
 - data/README +44 -12
 - data/Rakefile +11 -2
 - data/lib/color.rb +35 -158
 - data/lib/color/cmyk.rb +62 -18
 - data/lib/color/css.rb +27 -0
 - data/lib/color/grayscale.rb +43 -13
 - data/lib/color/hsl.rb +130 -0
 - data/lib/color/palette.rb +4 -0
 - data/lib/color/palette/gimp.rb +47 -12
 - data/lib/color/palette/monocontrast.rb +41 -11
 - data/lib/color/rgb-colors.rb +189 -0
 - data/lib/color/rgb.rb +163 -27
 - data/lib/color/rgb/metallic.rb +28 -0
 - data/lib/color/yiq.rb +35 -9
 - data/metaconfig +11 -2
 - data/pre-setup.rb +12 -3
 - data/tests/test_cmyk.rb +116 -0
 - data/tests/test_css.rb +28 -0
 - data/tests/test_gimp.rb +79 -0
 - data/tests/test_grayscale.rb +87 -0
 - data/tests/test_hsl.rb +93 -0
 - data/tests/test_monocontrast.rb +145 -0
 - data/tests/test_rgb.rb +160 -0
 - data/tests/test_yiq.rb +81 -0
 - data/tests/testall.rb +20 -0
 - metadata +23 -8
 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # $Id: metallic.rb,v 1.1 2005/08/05 23:07:20 austin Exp $
         
     | 
| 
      
 10 
     | 
    
         
            +
            #++
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              # This namespace contains some RGB metallic colours suggested by Jim Freeze.
         
     | 
| 
      
 13 
     | 
    
         
            +
            module Color::RGB::Metallic
         
     | 
| 
      
 14 
     | 
    
         
            +
              Aluminum    = Color::RGB.new(0x99, 0x99, 0x99)
         
     | 
| 
      
 15 
     | 
    
         
            +
              CoolCopper  = Color::RGB.new(0xd9, 0x87, 0x19)
         
     | 
| 
      
 16 
     | 
    
         
            +
              Copper      = Color::RGB.new(0xb8, 0x73, 0x33)
         
     | 
| 
      
 17 
     | 
    
         
            +
              Iron        = Color::RGB.new(0x4c, 0x4c, 0x4c)
         
     | 
| 
      
 18 
     | 
    
         
            +
              Lead        = Color::RGB.new(0x19, 0x19, 0x19)
         
     | 
| 
      
 19 
     | 
    
         
            +
              Magnesium   = Color::RGB.new(0xb3, 0xb3, 0xb3)
         
     | 
| 
      
 20 
     | 
    
         
            +
              Mercury     = Color::RGB.new(0xe6, 0xe6, 0xe6)
         
     | 
| 
      
 21 
     | 
    
         
            +
              Nickel      = Color::RGB.new(0x80, 0x80, 0x80)
         
     | 
| 
      
 22 
     | 
    
         
            +
              PolySilicon = Color::RGB.new(0x60, 0x00, 0x00)
         
     | 
| 
      
 23 
     | 
    
         
            +
              Poly        = PolySilicon
         
     | 
| 
      
 24 
     | 
    
         
            +
              Silver      = Color::RGB.new(0xcc, 0xcc, 0xcc)
         
     | 
| 
      
 25 
     | 
    
         
            +
              Steel       = Color::RGB.new(0x66, 0x66, 0x66)
         
     | 
| 
      
 26 
     | 
    
         
            +
              Tin         = Color::RGB.new(0x7f, 0x7f, 0x7f)
         
     | 
| 
      
 27 
     | 
    
         
            +
              Tungsten    = Color::RGB.new(0x33, 0x33, 0x33)
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/color/yiq.rb
    CHANGED
    
    | 
         @@ -3,11 +3,17 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Copyright 2005 Austin Ziegler
         
     | 
| 
       5 
5 
     | 
    
         
             
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # $Id: yiq.rb,v 1.3 2005/08/08 02:44:17 austin Exp $
         
     | 
| 
       6 
10 
     | 
    
         
             
            #++
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
       8 
12 
     | 
    
         
             
              # A colour object representing YIQ (NTSC) colour encoding.
         
     | 
| 
       9 
13 
     | 
    
         
             
            class Color::YIQ
         
     | 
| 
       10 
14 
     | 
    
         
             
                # Creates a YIQ colour object from fractional values 0 .. 1.
         
     | 
| 
      
 15 
     | 
    
         
            +
                #
         
     | 
| 
      
 16 
     | 
    
         
            +
                #   Color::YIQ.new(0.3, 0.2, 0.1)
         
     | 
| 
       11 
17 
     | 
    
         
             
              def self.from_fraction(y = 0, i = 0, q = 0)
         
     | 
| 
       12 
18 
     | 
    
         
             
                color = Color::YIQ.new
         
     | 
| 
       13 
19 
     | 
    
         
             
                color.y = y
         
     | 
| 
         @@ -17,6 +23,8 @@ class Color::YIQ 
     | 
|
| 
       17 
23 
     | 
    
         
             
              end
         
     | 
| 
       18 
24 
     | 
    
         | 
| 
       19 
25 
     | 
    
         
             
                # Creates a YIQ colour object from percentages 0 .. 100.
         
     | 
| 
      
 26 
     | 
    
         
            +
                #
         
     | 
| 
      
 27 
     | 
    
         
            +
                #   Color::YIQ.new(10, 20, 30)
         
     | 
| 
       20 
28 
     | 
    
         
             
              def initialize(y = 0, i = 0, q = 0)
         
     | 
| 
       21 
29 
     | 
    
         
             
                @y = y / 100.0
         
     | 
| 
       22 
30 
     | 
    
         
             
                @i = i / 100.0
         
     | 
| 
         @@ -27,13 +35,15 @@ class Color::YIQ 
     | 
|
| 
       27 
35 
     | 
    
         
             
                # converted to YIQ before comparison, so the comparison between a YIQ
         
     | 
| 
       28 
36 
     | 
    
         
             
                # colour and a non-YIQ colour will be approximate and based on the other
         
     | 
| 
       29 
37 
     | 
    
         
             
                # colour's #to_yiq conversion. If there is no #to_yiq conversion, this
         
     | 
| 
       30 
     | 
    
         
            -
                # will raise an exception.
         
     | 
| 
      
 38 
     | 
    
         
            +
                # will raise an exception. This will report that two YIQ values are
         
     | 
| 
      
 39 
     | 
    
         
            +
                # equivalent if all component colours are within 1e-4 (0.0001) of each
         
     | 
| 
      
 40 
     | 
    
         
            +
                # other.
         
     | 
| 
       31 
41 
     | 
    
         
             
              def ==(other)
         
     | 
| 
       32 
42 
     | 
    
         
             
                other = other.to_yiq
         
     | 
| 
       33 
43 
     | 
    
         
             
                other.kind_of?(Color::YIQ) and
         
     | 
| 
       34 
     | 
    
         
            -
                (@y  
     | 
| 
       35 
     | 
    
         
            -
                (@i  
     | 
| 
       36 
     | 
    
         
            -
                (@q  
     | 
| 
      
 44 
     | 
    
         
            +
                ((@y - other.y).abs <= 1e-4) and
         
     | 
| 
      
 45 
     | 
    
         
            +
                ((@i - other.i).abs <= 1e-4) and
         
     | 
| 
      
 46 
     | 
    
         
            +
                ((@q - other.q).abs <= 1e-4) 
         
     | 
| 
       37 
47 
     | 
    
         
             
              end
         
     | 
| 
       38 
48 
     | 
    
         | 
| 
       39 
49 
     | 
    
         
             
              def to_yiq
         
     | 
| 
         @@ -41,12 +51,28 @@ class Color::YIQ 
     | 
|
| 
       41 
51 
     | 
    
         
             
              end
         
     | 
| 
       42 
52 
     | 
    
         | 
| 
       43 
53 
     | 
    
         
             
              def brightness
         
     | 
| 
       44 
     | 
    
         
            -
                @ 
     | 
| 
      
 54 
     | 
    
         
            +
                @y
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
              def to_grayscale
         
     | 
| 
      
 57 
     | 
    
         
            +
                Color::GrayScale.new(@y)
         
     | 
| 
       45 
58 
     | 
    
         
             
              end
         
     | 
| 
       46 
     | 
    
         
            -
              alias to_grayscale brightness
         
     | 
| 
       47 
59 
     | 
    
         
             
              alias to_greyscale to_grayscale
         
     | 
| 
       48 
60 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
              attr_accessor :y
         
     | 
| 
       50 
     | 
    
         
            -
               
     | 
| 
       51 
     | 
    
         
            -
               
     | 
| 
      
 61 
     | 
    
         
            +
              attr_accessor :y, :i, :q
         
     | 
| 
      
 62 
     | 
    
         
            +
              remove_method :y=, :i=, :q=
         
     | 
| 
      
 63 
     | 
    
         
            +
              def y=(yy) #:nodoc:
         
     | 
| 
      
 64 
     | 
    
         
            +
                yy = 1.0 if yy > 1
         
     | 
| 
      
 65 
     | 
    
         
            +
                yy = 0.0 if yy < 0
         
     | 
| 
      
 66 
     | 
    
         
            +
                @y = yy
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
              def i=(ii) #:nodoc:
         
     | 
| 
      
 69 
     | 
    
         
            +
                ii = 1.0 if ii > 1
         
     | 
| 
      
 70 
     | 
    
         
            +
                ii = 0.0 if ii < 0
         
     | 
| 
      
 71 
     | 
    
         
            +
                @i = ii
         
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
              def q=(qq) #:nodoc:
         
     | 
| 
      
 74 
     | 
    
         
            +
                qq = 1.0 if qq > 1
         
     | 
| 
      
 75 
     | 
    
         
            +
                qq = 0.0 if qq < 0
         
     | 
| 
      
 76 
     | 
    
         
            +
                @q = qq
         
     | 
| 
      
 77 
     | 
    
         
            +
              end
         
     | 
| 
       52 
78 
     | 
    
         
             
            end
         
     | 
    
        data/metaconfig
    CHANGED
    
    | 
         @@ -1,4 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            #  
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
       4 
7 
     | 
    
         
             
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # $Id: metaconfig,v 1.2 2005/08/05 23:07:20 austin Exp $
         
     | 
| 
      
 11 
     | 
    
         
            +
            #++
         
     | 
| 
      
 12 
     | 
    
         
            +
            # vim: sts=2 sw=2 ts=4 et ai tw=77
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
    
        data/pre-setup.rb
    CHANGED
    
    | 
         @@ -1,4 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            #--
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # $Id: pre-setup.rb,v 1.5 2005/08/08 02:53:16 austin Exp $
         
     | 
| 
      
 10 
     | 
    
         
            +
            #++
         
     | 
| 
       2 
11 
     | 
    
         
             
            # vim: sts=2 sw=2 ts=4 et ai tw=77
         
     | 
| 
       3 
12 
     | 
    
         | 
| 
       4 
13 
     | 
    
         
             
            require 'rdoc/rdoc'
         
     | 
| 
         @@ -12,7 +21,7 @@ rescue Exception => e 
     | 
|
| 
       12 
21 
     | 
    
         
             
            end
         
     | 
| 
       13 
22 
     | 
    
         | 
| 
       14 
23 
     | 
    
         
             
            def build_ri(files)
         
     | 
| 
       15 
     | 
    
         
            -
              RDoc::RDoc.new.document( 
     | 
| 
      
 24 
     | 
    
         
            +
              RDoc::RDoc.new.document(files)
         
     | 
| 
       16 
25 
     | 
    
         
             
            rescue RDoc::RDocError => e
         
     | 
| 
       17 
26 
     | 
    
         
             
              $stderr.puts e.message
         
     | 
| 
       18 
27 
     | 
    
         
             
            rescue Exception => e
         
     | 
| 
         @@ -43,4 +52,4 @@ ri    = %w(--ri-site --merge) 
     | 
|
| 
       43 
52 
     | 
    
         
             
            dox   = %w(README Changelog lib)
         
     | 
| 
       44 
53 
     | 
    
         
             
            build_rdoc rdoc + dox
         
     | 
| 
       45 
54 
     | 
    
         
             
            build_ri ri + dox
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
            run_tests Dir["tests/test_*.rb"]
         
     | 
    
        data/tests/test_cmyk.rb
    ADDED
    
    | 
         @@ -0,0 +1,116 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # $Id: test_cmyk.rb,v 1.1 2005/08/08 02:44:17 austin Exp $
         
     | 
| 
      
 11 
     | 
    
         
            +
            #++
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'test/unit' unless defined? $ZENTEST and $ZENTEST
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'color'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            module TestColor
         
     | 
| 
      
 18 
     | 
    
         
            +
              class TestCMYK < Test::Unit::TestCase
         
     | 
| 
      
 19 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @cmyk = Color::CMYK.new(10, 20, 30, 40)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def test_c
         
     | 
| 
      
 24 
     | 
    
         
            +
                  assert_in_delta(0.1, @cmyk.c, 1e-4)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def test_c_equals
         
     | 
| 
      
 28 
     | 
    
         
            +
                  assert_in_delta(0.1, @cmyk.c, 1e-4)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.c = 0.2 }
         
     | 
| 
      
 30 
     | 
    
         
            +
                  assert_in_delta(0.2, @cmyk.c, 1e-4)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.c = 2.0 }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  assert_in_delta(1.0, @cmyk.c, 1e-4)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.c = -1.0 }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  assert_in_delta(0.0, @cmyk.c, 1e-4)
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def test_html
         
     | 
| 
      
 38 
     | 
    
         
            +
                  assert(@cmyk.html =~ /^#[0-9a-fA-F]{6}/)
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def test_k
         
     | 
| 
      
 42 
     | 
    
         
            +
                  assert_in_delta(0.4, @cmyk.k, 1e-4)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def test_k_equals
         
     | 
| 
      
 46 
     | 
    
         
            +
                  assert_in_delta(0.4, @cmyk.k, 1e-4)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.k = 0.2 }
         
     | 
| 
      
 48 
     | 
    
         
            +
                  assert_in_delta(0.2, @cmyk.k, 1e-4)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.k = 2.0 }
         
     | 
| 
      
 50 
     | 
    
         
            +
                  assert_in_delta(1.0, @cmyk.k, 1e-4)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.k = -1.0 }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  assert_in_delta(0.0, @cmyk.k, 1e-4)
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                def test_m
         
     | 
| 
      
 56 
     | 
    
         
            +
                  assert_in_delta(0.2, @cmyk.m, 1e-4)
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                def test_m_equals
         
     | 
| 
      
 60 
     | 
    
         
            +
                  assert_in_delta(0.2, @cmyk.m, 1e-4)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.m = 0.3 }
         
     | 
| 
      
 62 
     | 
    
         
            +
                  assert_in_delta(0.3, @cmyk.m, 1e-4)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.m = 2.0 }
         
     | 
| 
      
 64 
     | 
    
         
            +
                  assert_in_delta(1.0, @cmyk.m, 1e-4)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.m = -1.0 }
         
     | 
| 
      
 66 
     | 
    
         
            +
                  assert_in_delta(0.0, @cmyk.m, 1e-4)
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                def test_pdf_fill
         
     | 
| 
      
 70 
     | 
    
         
            +
                  assert_equal("0.100 0.200 0.300 0.400 k", @cmyk.pdf_fill)
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                def test_pdf_stroke
         
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_equal("0.100 0.200 0.300 0.400 K", @cmyk.pdf_stroke)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                def test_to_cmyk
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert(@cmyk.to_cmyk == @cmyk)
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                def test_to_grayscale
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_kind_of(Color::GrayScale, @cmyk.to_grayscale)
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                def test_to_greyscale
         
     | 
| 
      
 86 
     | 
    
         
            +
                  assert_kind_of(Color::GreyScale, @cmyk.to_grayscale)
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                def test_to_hsl
         
     | 
| 
      
 90 
     | 
    
         
            +
                  assert_kind_of(Color::HSL, @cmyk.to_hsl)
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def test_to_rgb
         
     | 
| 
      
 94 
     | 
    
         
            +
                  assert_kind_of(Color::RGB, @cmyk.to_rgb(true))
         
     | 
| 
      
 95 
     | 
    
         
            +
                  assert_kind_of(Color::RGB, @cmyk.to_rgb)
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                def test_to_yiq
         
     | 
| 
      
 99 
     | 
    
         
            +
                  assert_kind_of(Color::YIQ, @cmyk.to_yiq)
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                def test_y
         
     | 
| 
      
 103 
     | 
    
         
            +
                  assert_in_delta(0.3, @cmyk.y, 1e-4)
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                def test_y_equals
         
     | 
| 
      
 107 
     | 
    
         
            +
                  assert_in_delta(0.3, @cmyk.y, 1e-4)
         
     | 
| 
      
 108 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.y = 0.2 }
         
     | 
| 
      
 109 
     | 
    
         
            +
                  assert_in_delta(0.2, @cmyk.y, 1e-4)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.y = 2.0 }
         
     | 
| 
      
 111 
     | 
    
         
            +
                  assert_in_delta(1.0, @cmyk.y, 1e-4)
         
     | 
| 
      
 112 
     | 
    
         
            +
                  assert_nothing_raised { @cmyk.y = -1.0 }
         
     | 
| 
      
 113 
     | 
    
         
            +
                  assert_in_delta(0.0, @cmyk.y, 1e-4)
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
              end
         
     | 
| 
      
 116 
     | 
    
         
            +
            end
         
     | 
    
        data/tests/test_css.rb
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # $Id: test_css.rb,v 1.1 2005/08/08 02:44:17 austin Exp $
         
     | 
| 
      
 11 
     | 
    
         
            +
            #++
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'test/unit' unless defined? $ZENTEST and $ZENTEST
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'color'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'color/css'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            module TestColor
         
     | 
| 
      
 19 
     | 
    
         
            +
              class TestCSS < Test::Unit::TestCase
         
     | 
| 
      
 20 
     | 
    
         
            +
                def test_index
         
     | 
| 
      
 21 
     | 
    
         
            +
                  assert_equal(Color::RGB::AliceBlue, Color::CSS[:aliceblue])
         
     | 
| 
      
 22 
     | 
    
         
            +
                  assert_equal(Color::RGB::AliceBlue, Color::CSS["AliceBlue"])
         
     | 
| 
      
 23 
     | 
    
         
            +
                  assert_equal(Color::RGB::AliceBlue, Color::CSS["aliceBlue"])
         
     | 
| 
      
 24 
     | 
    
         
            +
                  assert_equal(Color::RGB::AliceBlue, Color::CSS["aliceblue"])
         
     | 
| 
      
 25 
     | 
    
         
            +
                  assert_equal(Color::RGB::AliceBlue, Color::CSS[:AliceBlue])
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
    
        data/tests/test_gimp.rb
    ADDED
    
    | 
         @@ -0,0 +1,79 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # $Id: test_gimp.rb,v 1.1 2005/08/08 02:44:17 austin Exp $
         
     | 
| 
      
 11 
     | 
    
         
            +
            #++
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'test/unit' unless defined? $ZENTEST and $ZENTEST
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'color'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'color/palette/gimp'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            module TestColor
         
     | 
| 
      
 19 
     | 
    
         
            +
              module TestPalette
         
     | 
| 
      
 20 
     | 
    
         
            +
                class TestGimp < Test::Unit::TestCase
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def setup
         
     | 
| 
      
 22 
     | 
    
         
            +
                    wsc = <<-EOS
         
     | 
| 
      
 23 
     | 
    
         
            +
            GIMP Palette
         
     | 
| 
      
 24 
     | 
    
         
            +
            Name: W3C Named Colors
         
     | 
| 
      
 25 
     | 
    
         
            +
            Columns: 2
         
     | 
| 
      
 26 
     | 
    
         
            +
            #
         
     | 
| 
      
 27 
     | 
    
         
            +
            # ColorZilla W3C Named Colors
         
     | 
| 
      
 28 
     | 
    
         
            +
            #
         
     | 
| 
      
 29 
     | 
    
         
            +
            255 255 255 	White
         
     | 
| 
      
 30 
     | 
    
         
            +
            255 255 0 	Yellow	
         
     | 
| 
      
 31 
     | 
    
         
            +
            255 0 255 	Fuchsia
         
     | 
| 
      
 32 
     | 
    
         
            +
            255 0 0		Red
         
     | 
| 
      
 33 
     | 
    
         
            +
            192 192 192	Silver
         
     | 
| 
      
 34 
     | 
    
         
            +
            128 128 128 	Gray
         
     | 
| 
      
 35 
     | 
    
         
            +
            128 128 0	Olive	
         
     | 
| 
      
 36 
     | 
    
         
            +
            128 0 128	Purple
         
     | 
| 
      
 37 
     | 
    
         
            +
            128 0 0		Maroon
         
     | 
| 
      
 38 
     | 
    
         
            +
            0 255 255	Aqua
         
     | 
| 
      
 39 
     | 
    
         
            +
            0 255 0		Lime
         
     | 
| 
      
 40 
     | 
    
         
            +
            0 128 128	Teal
         
     | 
| 
      
 41 
     | 
    
         
            +
            0 128 0		Green
         
     | 
| 
      
 42 
     | 
    
         
            +
            0 0 255		Blue
         
     | 
| 
      
 43 
     | 
    
         
            +
            0 0 128		Navy
         
     | 
| 
      
 44 
     | 
    
         
            +
            0 0 0 		Black 
         
     | 
| 
      
 45 
     | 
    
         
            +
                    EOS
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @gimp = Color::Palette::Gimp.new(wsc)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  def test_each
         
     | 
| 
      
 50 
     | 
    
         
            +
                    assert_equal(16, @gimp.instance_variable_get(:@colors).size)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    @gimp.each { |el| assert_kind_of(Color::RGB, el) }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  def test_each_name
         
     | 
| 
      
 55 
     | 
    
         
            +
                    assert_equal(16, @gimp.instance_variable_get(:@names).size)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    
         
     | 
| 
      
 57 
     | 
    
         
            +
                    @gimp.each_name { |color_name, color_set|
         
     | 
| 
      
 58 
     | 
    
         
            +
                      assert_kind_of(Array, color_set)
         
     | 
| 
      
 59 
     | 
    
         
            +
                      color_set.each { |el|
         
     | 
| 
      
 60 
     | 
    
         
            +
                        assert_kind_of(Color::RGB, el)
         
     | 
| 
      
 61 
     | 
    
         
            +
                      }
         
     | 
| 
      
 62 
     | 
    
         
            +
                    }
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                  def test_index
         
     | 
| 
      
 66 
     | 
    
         
            +
                    assert_equal(Color::RGB::White, @gimp[0])
         
     | 
| 
      
 67 
     | 
    
         
            +
                    assert_equal(Color::RGB::White, @gimp["White"][0])
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  def test_valid_eh
         
     | 
| 
      
 71 
     | 
    
         
            +
                    assert(@gimp.valid?)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                  def test_name
         
     | 
| 
      
 75 
     | 
    
         
            +
                    assert_equal("W3C Named Colors", @gimp.name)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,87 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Colour management with Ruby.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright 2005 Austin Ziegler
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   http://rubyforge.org/ruby-pdf/
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   Licensed under a MIT-style licence.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # $Id: test_grayscale.rb,v 1.1 2005/08/08 02:44:17 austin Exp $
         
     | 
| 
      
 11 
     | 
    
         
            +
            #++
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'test/unit' unless defined? $ZENTEST and $ZENTEST
         
     | 
| 
      
 15 
     | 
    
         
            +
            require 'color'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            module TestColor
         
     | 
| 
      
 18 
     | 
    
         
            +
              class TestGrayScale < Test::Unit::TestCase
         
     | 
| 
      
 19 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @gs = Color::GrayScale.new(33)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def test_brightness
         
     | 
| 
      
 24 
     | 
    
         
            +
                  assert_in_delta(0.33, @gs.brightness, 1e-4)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def test_darken_by
         
     | 
| 
      
 28 
     | 
    
         
            +
                  assert_in_delta(0.297, @gs.darken_by(10).g, 1e-4)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def test_g
         
     | 
| 
      
 32 
     | 
    
         
            +
                  assert_in_delta(0.33, @gs.g, 1e-4)
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def test_g_equals
         
     | 
| 
      
 36 
     | 
    
         
            +
                  assert_in_delta(0.33, @gs.g, 1e-4)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  assert_nothing_raised { @gs.g = 0.4 }
         
     | 
| 
      
 38 
     | 
    
         
            +
                  assert_in_delta(0.4, @gs.g, 1e-4)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  assert_nothing_raised { @gs.g = 2.0 }
         
     | 
| 
      
 40 
     | 
    
         
            +
                  assert_in_delta(1.0, @gs.g, 1e-4)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  assert_nothing_raised { @gs.g = -2.0 }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  assert_in_delta(0.0, @gs.g, 1e-4)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def test_html
         
     | 
| 
      
 46 
     | 
    
         
            +
                  assert_equal("#545454", @gs.html)
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def test_lighten_by
         
     | 
| 
      
 50 
     | 
    
         
            +
                  assert_in_delta(0.363, @gs.lighten_by(10).g, 1e-4)
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                def test_pdf_fill
         
     | 
| 
      
 54 
     | 
    
         
            +
                  assert_equal("0.330 g", @gs.pdf_fill)
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def test_pdf_stroke
         
     | 
| 
      
 58 
     | 
    
         
            +
                  assert_equal("0.330 G", @gs.pdf_stroke)
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                def test_to_cmyk
         
     | 
| 
      
 62 
     | 
    
         
            +
                  assert_kind_of(Color::CMYK, @gs.to_cmyk)
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                def test_to_grayscale
         
     | 
| 
      
 66 
     | 
    
         
            +
                  assert_equal(@gs, @gs.to_grayscale)
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                def test_to_greyscale
         
     | 
| 
      
 70 
     | 
    
         
            +
                  assert_equal(@gs, @gs.to_greyscale)
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                def test_to_hsl
         
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_kind_of(Color::HSL, @gs.to_hsl)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                def test_to_rgb
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert_kind_of(Color::RGB, @gs.to_rgb)
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                def test_to_yiq
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_kind_of(Color::YIQ, @gs.to_yiq)
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
            end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            # Number of errors detected: 2
         
     |