squib 0.2.0 → 0.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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +10 -0
- data/README.md +44 -21
- data/Rakefile +74 -1
- data/benchmarks/shiny-purse.png +0 -0
- data/benchmarks/spanner.svg +91 -0
- data/benchmarks/tons_of_png.rb +6 -0
- data/benchmarks/tons_of_svg.rb +7 -0
- data/benchmarks/tons_of_text.rb +8 -0
- data/lib/squib/api/background.rb +1 -1
- data/lib/squib/api/image.rb +6 -4
- data/lib/squib/api/save.rb +4 -3
- data/lib/squib/api/shapes.rb +7 -7
- data/lib/squib/api/text.rb +1 -1
- data/lib/squib/args/unit_conversion.rb +21 -0
- data/lib/squib/card.rb +2 -1
- data/lib/squib/constants.rb +8 -0
- data/lib/squib/deck.rb +14 -12
- data/lib/squib/graphics/background.rb +1 -1
- data/lib/squib/graphics/cairo_context_wrapper.rb +42 -0
- data/lib/squib/graphics/gradient_regex.rb +46 -0
- data/lib/squib/graphics/image.rb +17 -7
- data/lib/squib/graphics/save_doc.rb +16 -13
- data/lib/squib/graphics/save_images.rb +4 -4
- data/lib/squib/graphics/shapes.rb +7 -7
- data/lib/squib/graphics/text.rb +1 -1
- data/lib/squib/input_helpers.rb +8 -8
- data/lib/squib/version.rb +1 -1
- data/samples/colors.rb +22 -1
- data/samples/glass-heart.svg +52 -0
- data/samples/gradients.rb +34 -0
- data/samples/load_images.rb +14 -0
- data/samples/saves.rb +5 -0
- data/spec/api/api_image_spec.rb +2 -2
- data/spec/args/unit_conversion_spec.rb +22 -0
- data/spec/data/samples/autoscale_font.rb.txt +9 -9
- data/spec/data/samples/basic.rb.txt +24 -24
- data/spec/data/samples/cairo_access.rb.txt +4 -4
- data/spec/data/samples/csv_import.rb.txt +10 -10
- data/spec/data/samples/custom_config.rb.txt +3 -3
- data/spec/data/samples/draw_shapes.rb.txt +8 -8
- data/spec/data/samples/excel.rb.txt +15 -15
- data/spec/data/samples/gradients.rb.txt +65 -0
- data/spec/data/samples/hello_world.rb.txt +4 -4
- data/spec/data/samples/load_images.rb.txt +30 -4
- data/spec/data/samples/portrait-landscape.rb.txt +6 -6
- data/spec/data/samples/ranges.rb.txt +30 -30
- data/spec/data/samples/saves.rb.txt +74 -70
- data/spec/data/samples/showcase.rb.txt +20 -20
- data/spec/data/samples/text_options.rb.txt +63 -63
- data/spec/data/samples/tgc_proofs.rb.txt +8 -8
- data/spec/data/samples/units.rb.txt +8 -8
- data/spec/deck_spec.rb +6 -0
- data/spec/graphics/cairo_context_wrapper_spec.rb +75 -0
- data/spec/graphics/graphics_images_spec.rb +5 -6
- data/spec/input_helpers_spec.rb +11 -9
- data/spec/samples/samples_regression_spec.rb +3 -1
- data/spec/spec_helper.rb +1 -0
- metadata +20 -5
- data/spec/data/samples/colors.rb.txt +0 -124
| @@ -1,27 +1,27 @@ | |
| 1 1 | 
             
            cairo: save([])
         | 
| 2 | 
            -
            cairo: set_source_color([ | 
| 2 | 
            +
            cairo: set_source_color([:white])
         | 
| 3 3 | 
             
            cairo: paint([])
         | 
| 4 4 | 
             
            cairo: restore([])
         | 
| 5 5 | 
             
            cairo: save([])
         | 
| 6 6 | 
             
            cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
         | 
| 7 | 
            -
            cairo: set_source_color([ | 
| 7 | 
            +
            cairo: set_source_color([:black])
         | 
| 8 8 | 
             
            cairo: set_line_width([2.0])
         | 
| 9 9 | 
             
            cairo: stroke([])
         | 
| 10 10 | 
             
            cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
         | 
| 11 | 
            -
            cairo: set_source_color([ | 
| 11 | 
            +
            cairo: set_source_color(["#0000"])
         | 
| 12 12 | 
             
            cairo: fill([])
         | 
| 13 13 | 
             
            cairo: restore([])
         | 
| 14 14 | 
             
            cairo: save([])
         | 
| 15 15 | 
             
            cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
         | 
| 16 | 
            -
            cairo: set_source_color([ | 
| 16 | 
            +
            cairo: set_source_color([:black])
         | 
| 17 17 | 
             
            cairo: set_line_width([2.0])
         | 
| 18 18 | 
             
            cairo: stroke([])
         | 
| 19 19 | 
             
            cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
         | 
| 20 | 
            -
            cairo: set_source_color([ | 
| 20 | 
            +
            cairo: set_source_color(["#0000"])
         | 
| 21 21 | 
             
            cairo: fill([])
         | 
| 22 22 | 
             
            cairo: restore([])
         | 
| 23 23 | 
             
            cairo: save([])
         | 
| 24 | 
            -
            cairo: set_source_color([ | 
| 24 | 
            +
            cairo: set_source_color([:black])
         | 
| 25 25 | 
             
            cairo: translate([220, 78])
         | 
| 26 26 | 
             
            cairo: rotate([0])
         | 
| 27 27 | 
             
            cairo: translate([-220, -78])
         | 
| @@ -38,7 +38,7 @@ cairo: update_pango_layout([MockDouble]) | |
| 38 38 | 
             
            cairo: show_pango_layout([MockDouble])
         | 
| 39 39 | 
             
            cairo: restore([])
         | 
| 40 40 | 
             
            cairo: save([])
         | 
| 41 | 
            -
            cairo: set_source_color([ | 
| 41 | 
            +
            cairo: set_source_color([:black])
         | 
| 42 42 | 
             
            cairo: translate([75, 85])
         | 
| 43 43 | 
             
            cairo: rotate([0])
         | 
| 44 44 | 
             
            cairo: translate([-75, -85])
         | 
| @@ -78,4 +78,4 @@ cairo: translate([0, 0]) | |
| 78 78 | 
             
            cairo: set_source([ImageSurface, 0, 0])
         | 
| 79 79 | 
             
            cairo: paint([0.5])
         | 
| 80 80 | 
             
            cairo: restore([])
         | 
| 81 | 
            -
            surface: write_to_png(["_output/ | 
| 81 | 
            +
            surface: write_to_png(["_output/tgc_sample_00.png"])
         | 
| @@ -1,32 +1,32 @@ | |
| 1 1 | 
             
            cairo: save([])
         | 
| 2 | 
            -
            cairo: set_source_color([ | 
| 2 | 
            +
            cairo: set_source_color(["#ddd"])
         | 
| 3 3 | 
             
            cairo: paint([])
         | 
| 4 4 | 
             
            cairo: restore([])
         | 
| 5 5 | 
             
            cairo: save([])
         | 
| 6 6 | 
             
            cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
         | 
| 7 | 
            -
            cairo: set_source_color([ | 
| 7 | 
            +
            cairo: set_source_color([:black])
         | 
| 8 8 | 
             
            cairo: set_line_width([2.0])
         | 
| 9 9 | 
             
            cairo: stroke([])
         | 
| 10 10 | 
             
            cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
         | 
| 11 | 
            -
            cairo: set_source_color([ | 
| 11 | 
            +
            cairo: set_source_color(["#0000"])
         | 
| 12 12 | 
             
            cairo: fill([])
         | 
| 13 13 | 
             
            cairo: restore([])
         | 
| 14 14 | 
             
            cairo: save([])
         | 
| 15 15 | 
             
            cairo: rounded_rectangle([75.0, 75.0, 675.0, 975.0, 25, 25])
         | 
| 16 | 
            -
            cairo: set_source_color([ | 
| 16 | 
            +
            cairo: set_source_color([:black])
         | 
| 17 17 | 
             
            cairo: set_line_width([2.0])
         | 
| 18 18 | 
             
            cairo: stroke([])
         | 
| 19 19 | 
             
            cairo: rounded_rectangle([75.0, 75.0, 675.0, 975.0, 25, 25])
         | 
| 20 | 
            -
            cairo: set_source_color([ | 
| 20 | 
            +
            cairo: set_source_color(["#0000"])
         | 
| 21 21 | 
             
            cairo: fill([])
         | 
| 22 22 | 
             
            cairo: restore([])
         | 
| 23 23 | 
             
            cairo: save([])
         | 
| 24 24 | 
             
            cairo: rounded_rectangle([472.4409444, 472.4409444, 100, 100, 0, 0])
         | 
| 25 | 
            -
            cairo: set_source_color([ | 
| 25 | 
            +
            cairo: set_source_color([:black])
         | 
| 26 26 | 
             
            cairo: set_line_width([2.0])
         | 
| 27 27 | 
             
            cairo: stroke([])
         | 
| 28 28 | 
             
            cairo: rounded_rectangle([472.4409444, 472.4409444, 100, 100, 0, 0])
         | 
| 29 | 
            -
            cairo: set_source_color([ | 
| 29 | 
            +
            cairo: set_source_color(["#0000"])
         | 
| 30 30 | 
             
            cairo: fill([])
         | 
| 31 31 | 
             
            cairo: restore([])
         | 
| 32 | 
            -
            surface: write_to_png(["_output/ | 
| 32 | 
            +
            surface: write_to_png(["_output/units_00.png"])
         | 
    
        data/spec/deck_spec.rb
    CHANGED
    
    | @@ -10,6 +10,12 @@ describe Squib::Deck do | |
| 10 10 | 
             
                expect(d.cards.size).to eq(1)
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            +
              it 'can be built with unit conversion' do
         | 
| 14 | 
            +
                d = Squib::Deck.new(width: '1in', height: '2in')
         | 
| 15 | 
            +
                expect(d.width).to eq(300)
         | 
| 16 | 
            +
                expect(d.height).to eq(600)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 13 19 | 
             
              context 'in dealing with ranges' do
         | 
| 14 20 | 
             
                it 'calls text on all cards by default' do
         | 
| 15 21 | 
             
                  card1 = instance_double(Squib::Card)
         | 
| @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'squib/graphics/cairo_context_wrapper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Squib::Graphics::CairoContextWrapper do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              let(:cairo) { double(Cairo::Context) }
         | 
| 7 | 
            +
              subject     { Squib::Graphics::CairoContextWrapper.new(cairo) }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              it 'passes on colors as normal' do
         | 
| 10 | 
            +
                expect(cairo).to receive(:set_source_color).with('blue')
         | 
| 11 | 
            +
                subject.set_source_squibcolor('blue')
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it 'passes on color symbols as normal' do
         | 
| 15 | 
            +
                expect(cairo).to receive(:set_source_color).with(:blue)
         | 
| 16 | 
            +
                subject.set_source_squibcolor(:blue)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it 'passes on color hashes' do
         | 
| 20 | 
            +
                expect(cairo).to receive(:set_source_color)
         | 
| 21 | 
            +
                  .with('#aabbccdd')
         | 
| 22 | 
            +
                subject.set_source_squibcolor('#aabbccdd')
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              context 'regex variations for linear gradients' do
         | 
| 26 | 
            +
                before(:each) do
         | 
| 27 | 
            +
                  dbl = double(Cairo::LinearPattern)
         | 
| 28 | 
            +
                  expect(Cairo::LinearPattern).to receive(:new).with(1,2,3,4).and_return(dbl)
         | 
| 29 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(0.0, 'blue')
         | 
| 30 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(1.0, 'red')
         | 
| 31 | 
            +
                  expect(cairo).to receive(:set_source).with(dbl)
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                it('handles no decimals'  ) { subject.set_source_squibcolor('(1,2) (3,4) blue@0 red@1') }
         | 
| 35 | 
            +
                it('handles decimals'     ) { subject.set_source_squibcolor('(1.0,2.0) (3.0,4.0) blue@0 red@1') }
         | 
| 36 | 
            +
                it('handles no whitespace') { subject.set_source_squibcolor('(1,2)(3,4)blue@0red@1') }
         | 
| 37 | 
            +
                it('handles whitespace'   ) { subject.set_source_squibcolor('  (  1  ,  2  )  ( 3  ,  4  )  blue@0   red@1   ') }
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              context 'regex variations for radial gradients' do
         | 
| 41 | 
            +
                before(:each) do
         | 
| 42 | 
            +
                  dbl = double(Cairo::RadialPattern)
         | 
| 43 | 
            +
                  expect(Cairo::RadialPattern).to receive(:new).with(1,2,5,3,4,6).and_return(dbl)
         | 
| 44 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(0.0, 'blue')
         | 
| 45 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(1.0, 'red')
         | 
| 46 | 
            +
                  expect(cairo).to receive(:set_source).with(dbl)
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                it('handles no decimals'  ) { subject.set_source_squibcolor('(1,2,5) (3,4,6) blue@0 red@1') }
         | 
| 50 | 
            +
                it('handles decimals'     ) { subject.set_source_squibcolor('(1.0,2.0,5.0) (3.0,4.0,6.0) blue@0 red@1') }
         | 
| 51 | 
            +
                it('handles no whitespace') { subject.set_source_squibcolor('(1,2,5)(3,4,6)blue@0red@1') }
         | 
| 52 | 
            +
                it('handles whitespace'   ) { subject.set_source_squibcolor('  (  1  ,  2  , 5 )  ( 3  ,  4 , 6 )  blue@0   red@1   ') }
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              context 'regex handles hash notation' do
         | 
| 56 | 
            +
                it 'on radial patterns' do
         | 
| 57 | 
            +
                  dbl = double(Cairo::RadialPattern)
         | 
| 58 | 
            +
                  expect(Cairo::RadialPattern).to receive(:new).with(1,2,5,3,4,6).and_return(dbl)
         | 
| 59 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(0.0, '#def')
         | 
| 60 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(1.0, '#112233')
         | 
| 61 | 
            +
                  expect(cairo).to receive(:set_source).with(dbl)
         | 
| 62 | 
            +
                  subject.set_source_squibcolor('(1,2,5) (3,4,6) #def@0 #112233@1')
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                it 'on linear patterns' do
         | 
| 66 | 
            +
                  dbl = double(Cairo::LinearPattern)
         | 
| 67 | 
            +
                  expect(Cairo::LinearPattern).to receive(:new).with(1,2,3,4).and_return(dbl)
         | 
| 68 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(0.0, '#def')
         | 
| 69 | 
            +
                  expect(dbl).to   receive(:add_color_stop).with(1.0, '#112233')
         | 
| 70 | 
            +
                  expect(cairo).to receive(:set_source).with(dbl)
         | 
| 71 | 
            +
                  subject.set_source_squibcolor('(1,2) (3,4) #def@0 #112233@1')
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            end
         | 
| @@ -26,7 +26,7 @@ describe Squib::Card do | |
| 26 26 |  | 
| 27 27 | 
             
                  card = Squib::Card.new(@deck, 100, 150)
         | 
| 28 28 | 
             
                  # png(file, x, y, alpha, blend, angle)
         | 
| 29 | 
            -
                  card.png('foo.png', 37, 38, :native, :native, 0.9, :none, 0.0)
         | 
| 29 | 
            +
                  card.png('foo.png', 37, 38, :native, :native, 0.9, :none, 0.0, nil)
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                it 'sets blend when needed' do
         | 
| @@ -34,9 +34,8 @@ describe Squib::Card do | |
| 34 34 | 
             
                  expect(@context).to receive(:operator=).with(:overlay).once
         | 
| 35 35 |  | 
| 36 36 | 
             
                  card = Squib::Card.new(@deck, 100, 150)
         | 
| 37 | 
            -
                  card.png('foo.png', 37, 38, :native, :native, 0.9, :overlay, 0.0)
         | 
| 37 | 
            +
                  card.png('foo.png', 37, 38, :native, :native, 0.9, :overlay, 0.0, nil)
         | 
| 38 38 | 
             
                end
         | 
| 39 | 
            -
             | 
| 40 39 | 
             
              end
         | 
| 41 40 |  | 
| 42 41 | 
             
              context '#svg' do
         | 
| @@ -55,7 +54,7 @@ describe Squib::Card do | |
| 55 54 |  | 
| 56 55 | 
             
                  card = Squib::Card.new(@deck, 100, 150)
         | 
| 57 56 | 
             
                  # svg(file, id, x, y, width, height, alpha, blend, angle)
         | 
| 58 | 
            -
                  card.svg('foo.png', 'id', 37, 38, :native, :native, 0.9, :none, 0.0)
         | 
| 57 | 
            +
                  card.svg('foo.png', 'id', 37, 38, :native, :native, 0.9, :none, 0.0, nil)
         | 
| 59 58 | 
             
                end
         | 
| 60 59 |  | 
| 61 60 | 
             
                it 'sets blend when needed' do
         | 
| @@ -64,7 +63,7 @@ describe Squib::Card do | |
| 64 63 | 
             
                  expect(@context).to receive(:operator=).with(:overlay).once
         | 
| 65 64 |  | 
| 66 65 | 
             
                  card = Squib::Card.new(@deck, 100, 150)
         | 
| 67 | 
            -
                  card.svg('foo.png', nil, 37, 38, :native, :native, 0.9, :overlay, 0.0)
         | 
| 66 | 
            +
                  card.svg('foo.png', nil, 37, 38, :native, :native, 0.9, :overlay, 0.0, nil)
         | 
| 68 67 | 
             
                end
         | 
| 69 68 |  | 
| 70 69 | 
             
                it 'sets width & height when needed' do
         | 
| @@ -74,7 +73,7 @@ describe Squib::Card do | |
| 74 73 | 
             
                  expect(@context).to receive(:scale).with(2.0, 3.0).once
         | 
| 75 74 |  | 
| 76 75 | 
             
                  card = Squib::Card.new(@deck, 100, 150)
         | 
| 77 | 
            -
                  card.svg('foo.png', nil, 37, 38, 200, 300, 0.9, :none, 0.0)
         | 
| 76 | 
            +
                  card.svg('foo.png', nil, 37, 38, 200, 300, 0.9, :none, 0.0, nil)
         | 
| 78 77 | 
             
                end
         | 
| 79 78 | 
             
              end
         | 
| 80 79 |  | 
    
        data/spec/input_helpers_spec.rb
    CHANGED
    
    | @@ -99,26 +99,21 @@ describe Squib::InputHelpers do | |
| 99 99 | 
             
              end
         | 
| 100 100 |  | 
| 101 101 | 
             
              context '#colorify' do
         | 
| 102 | 
            -
                it 'should  | 
| 102 | 
            +
                it 'should pass through if nillable' do
         | 
| 103 103 | 
             
                  color = @deck.send(:colorify, {color: ['#fff']}, true)[:color]
         | 
| 104 | 
            -
                  expect(color | 
| 105 | 
            -
                end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                it 'raises and error if the color does not exist' do
         | 
| 108 | 
            -
                  expect{ @deck.send(:colorify, {color: [:nonexist]}, false) }.to \
         | 
| 109 | 
            -
                    raise_error(ArgumentError, 'unknown color name: nonexist')
         | 
| 104 | 
            +
                  expect(color).to eq(['#fff'])
         | 
| 110 105 | 
             
                end
         | 
| 111 106 |  | 
| 112 107 | 
             
                it 'pulls from custom colors in the config' do
         | 
| 113 108 | 
             
                  @deck.custom_colors['foo'] = '#abc'
         | 
| 114 109 | 
             
                  expect(@deck.send(:colorify, {color: [:foo]}, false)[:color][0].to_s).to \
         | 
| 115 | 
            -
                    eq('# | 
| 110 | 
            +
                    eq('#abc')
         | 
| 116 111 | 
             
                end
         | 
| 117 112 |  | 
| 118 113 | 
             
                it 'pulls custom colors even when a string' do
         | 
| 119 114 | 
             
                  @deck.custom_colors['foo'] = '#abc'
         | 
| 120 115 | 
             
                  expect(@deck.send(:colorify, {color: ['foo']}, false)[:color][0].to_s).to \
         | 
| 121 | 
            -
                    eq('# | 
| 116 | 
            +
                    eq('#abc')
         | 
| 122 117 | 
             
                end
         | 
| 123 118 | 
             
              end
         | 
| 124 119 |  | 
| @@ -181,6 +176,13 @@ describe Squib::InputHelpers do | |
| 181 176 | 
             
                  expect(opts).to eq({:x => [236.2204722] }) #assume 300dpi default
         | 
| 182 177 | 
             
                end
         | 
| 183 178 |  | 
| 179 | 
            +
                it 'handles non-expading singletons' do
         | 
| 180 | 
            +
                  args = {margin: '1in', trim: '1in', gap: '1in'}
         | 
| 181 | 
            +
                  needed_params = [:margin, :trim, :gap]
         | 
| 182 | 
            +
                  opts = @deck.send(:convert_units, args, needed_params)
         | 
| 183 | 
            +
                  expect(opts).to eq({margin: 300, trim: 300, gap: 300}) #assume 300dpi default
         | 
| 184 | 
            +
                end
         | 
| 185 | 
            +
             | 
| 184 186 | 
             
              end
         | 
| 185 187 |  | 
| 186 188 | 
             
              context '#rowify' do
         | 
| @@ -44,15 +44,17 @@ describe "Squib samples" do | |
| 44 44 | 
             
              # FOR NOW!! These two I can't get working on Travis, so I'm disabling
         | 
| 45 45 | 
             
              # Has to do with UTF-8 encoding of a special characters
         | 
| 46 46 | 
             
                  # layouts.rb
         | 
| 47 | 
            +
              # These are samples that don't really need a regression log
         | 
| 48 | 
            +
                  # colors.rb
         | 
| 47 49 | 
             
                  # unicode.rb
         | 
| 48 50 | 
             
              %w( autoscale_font.rb
         | 
| 49 51 | 
             
                  basic.rb
         | 
| 50 52 | 
             
                  cairo_access.rb
         | 
| 51 | 
            -
                  colors.rb
         | 
| 52 53 | 
             
                  csv_import.rb
         | 
| 53 54 | 
             
                  custom_config.rb
         | 
| 54 55 | 
             
                  draw_shapes.rb
         | 
| 55 56 | 
             
                  excel.rb
         | 
| 57 | 
            +
                  gradients.rb
         | 
| 56 58 | 
             
                  hello_world.rb
         | 
| 57 59 | 
             
                  load_images.rb
         | 
| 58 60 | 
             
                  portrait-landscape.rb
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -44,6 +44,7 @@ def scrub_hex(str) | |
| 44 44 | 
             
                 .gsub(/#<Pango::FontDescription:.*>/,'')
         | 
| 45 45 | 
             
                 .gsub(/#<Cairo::ImageSurface:.*>/,'ImageSurface')
         | 
| 46 46 | 
             
                 .gsub(/#<Cairo::LinearPattern:.*>/,'LinearPattern')
         | 
| 47 | 
            +
                 .gsub(/#<Cairo::RadialPattern:.*>/,'RadialPattern')
         | 
| 47 48 | 
             
                 .gsub(/#<Cairo::Matrix:.*>/,'Matrix')
         | 
| 48 49 | 
             
                 .gsub(/#<RSVG::Handle.*>/,'RSVG::Handle')
         | 
| 49 50 | 
             
                 .gsub(/#<RSpec::Mocks::Double:.*>/,'MockDouble')
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: squib
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andy Meneely
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-02-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: cairo
         | 
| @@ -221,6 +221,7 @@ extra_rdoc_files: | |
| 221 221 | 
             
            - samples/custom_config.rb
         | 
| 222 222 | 
             
            - samples/draw_shapes.rb
         | 
| 223 223 | 
             
            - samples/excel.rb
         | 
| 224 | 
            +
            - samples/gradients.rb
         | 
| 224 225 | 
             
            - samples/hello_world.rb
         | 
| 225 226 | 
             
            - samples/layouts.rb
         | 
| 226 227 | 
             
            - samples/load_images.rb
         | 
| @@ -242,6 +243,11 @@ files: | |
| 242 243 | 
             
            - README.md
         | 
| 243 244 | 
             
            - RELEASE TODO.md
         | 
| 244 245 | 
             
            - Rakefile
         | 
| 246 | 
            +
            - benchmarks/shiny-purse.png
         | 
| 247 | 
            +
            - benchmarks/spanner.svg
         | 
| 248 | 
            +
            - benchmarks/tons_of_png.rb
         | 
| 249 | 
            +
            - benchmarks/tons_of_svg.rb
         | 
| 250 | 
            +
            - benchmarks/tons_of_text.rb
         | 
| 245 251 | 
             
            - bin/squib
         | 
| 246 252 | 
             
            - lib/squib.rb
         | 
| 247 253 | 
             
            - lib/squib/api/background.rb
         | 
| @@ -252,11 +258,14 @@ files: | |
| 252 258 | 
             
            - lib/squib/api/shapes.rb
         | 
| 253 259 | 
             
            - lib/squib/api/text.rb
         | 
| 254 260 | 
             
            - lib/squib/api/units.rb
         | 
| 261 | 
            +
            - lib/squib/args/unit_conversion.rb
         | 
| 255 262 | 
             
            - lib/squib/card.rb
         | 
| 256 263 | 
             
            - lib/squib/commands/new.rb
         | 
| 257 264 | 
             
            - lib/squib/constants.rb
         | 
| 258 265 | 
             
            - lib/squib/deck.rb
         | 
| 259 266 | 
             
            - lib/squib/graphics/background.rb
         | 
| 267 | 
            +
            - lib/squib/graphics/cairo_context_wrapper.rb
         | 
| 268 | 
            +
            - lib/squib/graphics/gradient_regex.rb
         | 
| 260 269 | 
             
            - lib/squib/graphics/image.rb
         | 
| 261 270 | 
             
            - lib/squib/graphics/save_doc.rb
         | 
| 262 271 | 
             
            - lib/squib/graphics/save_images.rb
         | 
| @@ -293,6 +302,8 @@ files: | |
| 293 302 | 
             
            - samples/customconfig-imgdir/spanner2.svg
         | 
| 294 303 | 
             
            - samples/draw_shapes.rb
         | 
| 295 304 | 
             
            - samples/excel.rb
         | 
| 305 | 
            +
            - samples/glass-heart.svg
         | 
| 306 | 
            +
            - samples/gradients.rb
         | 
| 296 307 | 
             
            - samples/grit.png
         | 
| 297 308 | 
             
            - samples/hello_world.rb
         | 
| 298 309 | 
             
            - samples/layouts.rb
         | 
| @@ -314,6 +325,7 @@ files: | |
| 314 325 | 
             
            - spec/api/api_data_spec.rb
         | 
| 315 326 | 
             
            - spec/api/api_image_spec.rb
         | 
| 316 327 | 
             
            - spec/api/api_text_spec.rb
         | 
| 328 | 
            +
            - spec/args/unit_conversion_spec.rb
         | 
| 317 329 | 
             
            - spec/commands/new_spec.rb
         | 
| 318 330 | 
             
            - spec/data/csv/basic.csv
         | 
| 319 331 | 
             
            - spec/data/csv/dup_cols.csv
         | 
| @@ -337,11 +349,11 @@ files: | |
| 337 349 | 
             
            - spec/data/samples/autoscale_font.rb.txt
         | 
| 338 350 | 
             
            - spec/data/samples/basic.rb.txt
         | 
| 339 351 | 
             
            - spec/data/samples/cairo_access.rb.txt
         | 
| 340 | 
            -
            - spec/data/samples/colors.rb.txt
         | 
| 341 352 | 
             
            - spec/data/samples/csv_import.rb.txt
         | 
| 342 353 | 
             
            - spec/data/samples/custom_config.rb.txt
         | 
| 343 354 | 
             
            - spec/data/samples/draw_shapes.rb.txt
         | 
| 344 355 | 
             
            - spec/data/samples/excel.rb.txt
         | 
| 356 | 
            +
            - spec/data/samples/gradients.rb.txt
         | 
| 345 357 | 
             
            - spec/data/samples/hello_world.rb.txt
         | 
| 346 358 | 
             
            - spec/data/samples/layouts.rb.txt
         | 
| 347 359 | 
             
            - spec/data/samples/load_images.rb.txt
         | 
| @@ -354,6 +366,7 @@ files: | |
| 354 366 | 
             
            - spec/data/samples/tgc_proofs.rb.txt
         | 
| 355 367 | 
             
            - spec/data/samples/units.rb.txt
         | 
| 356 368 | 
             
            - spec/deck_spec.rb
         | 
| 369 | 
            +
            - spec/graphics/cairo_context_wrapper_spec.rb
         | 
| 357 370 | 
             
            - spec/graphics/graphics_images_spec.rb
         | 
| 358 371 | 
             
            - spec/graphics/graphics_save_doc_spec.rb
         | 
| 359 372 | 
             
            - spec/graphics/graphics_shapes_spec.rb
         | 
| @@ -385,7 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 385 398 | 
             
                  version: '0'
         | 
| 386 399 | 
             
            requirements: []
         | 
| 387 400 | 
             
            rubyforge_project: 
         | 
| 388 | 
            -
            rubygems_version: 2. | 
| 401 | 
            +
            rubygems_version: 2.4.5
         | 
| 389 402 | 
             
            signing_key: 
         | 
| 390 403 | 
             
            specification_version: 2
         | 
| 391 404 | 
             
            summary: A Ruby DSL for prototyping card games
         | 
| @@ -393,6 +406,7 @@ test_files: | |
| 393 406 | 
             
            - spec/api/api_data_spec.rb
         | 
| 394 407 | 
             
            - spec/api/api_image_spec.rb
         | 
| 395 408 | 
             
            - spec/api/api_text_spec.rb
         | 
| 409 | 
            +
            - spec/args/unit_conversion_spec.rb
         | 
| 396 410 | 
             
            - spec/commands/new_spec.rb
         | 
| 397 411 | 
             
            - spec/data/csv/basic.csv
         | 
| 398 412 | 
             
            - spec/data/csv/dup_cols.csv
         | 
| @@ -416,11 +430,11 @@ test_files: | |
| 416 430 | 
             
            - spec/data/samples/autoscale_font.rb.txt
         | 
| 417 431 | 
             
            - spec/data/samples/basic.rb.txt
         | 
| 418 432 | 
             
            - spec/data/samples/cairo_access.rb.txt
         | 
| 419 | 
            -
            - spec/data/samples/colors.rb.txt
         | 
| 420 433 | 
             
            - spec/data/samples/csv_import.rb.txt
         | 
| 421 434 | 
             
            - spec/data/samples/custom_config.rb.txt
         | 
| 422 435 | 
             
            - spec/data/samples/draw_shapes.rb.txt
         | 
| 423 436 | 
             
            - spec/data/samples/excel.rb.txt
         | 
| 437 | 
            +
            - spec/data/samples/gradients.rb.txt
         | 
| 424 438 | 
             
            - spec/data/samples/hello_world.rb.txt
         | 
| 425 439 | 
             
            - spec/data/samples/layouts.rb.txt
         | 
| 426 440 | 
             
            - spec/data/samples/load_images.rb.txt
         | 
| @@ -433,6 +447,7 @@ test_files: | |
| 433 447 | 
             
            - spec/data/samples/tgc_proofs.rb.txt
         | 
| 434 448 | 
             
            - spec/data/samples/units.rb.txt
         | 
| 435 449 | 
             
            - spec/deck_spec.rb
         | 
| 450 | 
            +
            - spec/graphics/cairo_context_wrapper_spec.rb
         | 
| 436 451 | 
             
            - spec/graphics/graphics_images_spec.rb
         | 
| 437 452 | 
             
            - spec/graphics/graphics_save_doc_spec.rb
         | 
| 438 453 | 
             
            - spec/graphics/graphics_shapes_spec.rb
         | 
| @@ -1,124 +0,0 @@ | |
| 1 | 
            -
            cairo: save([])
         | 
| 2 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
         | 
| 3 | 
            -
            cairo: paint([])
         | 
| 4 | 
            -
            cairo: restore([])
         | 
| 5 | 
            -
            cairo: save([])
         | 
| 6 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 7 | 
            -
            cairo: translate([50, 50])
         | 
| 8 | 
            -
            cairo: rotate([0])
         | 
| 9 | 
            -
            cairo: translate([-50, -50])
         | 
| 10 | 
            -
            cairo: move_to([50, 50])
         | 
| 11 | 
            -
            pango: font_description=([])
         | 
| 12 | 
            -
            pango: text=(["3-hex"])
         | 
| 13 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 14 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 15 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 16 | 
            -
            pango: justify=([false])
         | 
| 17 | 
            -
            pango: spacing=([0])
         | 
| 18 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 19 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 20 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 21 | 
            -
            cairo: restore([])
         | 
| 22 | 
            -
            cairo: save([])
         | 
| 23 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 24 | 
            -
            cairo: translate([50, 100])
         | 
| 25 | 
            -
            cairo: rotate([0])
         | 
| 26 | 
            -
            cairo: translate([-50, -100])
         | 
| 27 | 
            -
            cairo: move_to([50, 100])
         | 
| 28 | 
            -
            pango: font_description=([])
         | 
| 29 | 
            -
            pango: text=(["3-hex (alpha)"])
         | 
| 30 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 31 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 32 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 33 | 
            -
            pango: justify=([false])
         | 
| 34 | 
            -
            pango: spacing=([0])
         | 
| 35 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 36 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 37 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 38 | 
            -
            cairo: restore([])
         | 
| 39 | 
            -
            cairo: save([])
         | 
| 40 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 41 | 
            -
            cairo: translate([50, 150])
         | 
| 42 | 
            -
            cairo: rotate([0])
         | 
| 43 | 
            -
            cairo: translate([-50, -150])
         | 
| 44 | 
            -
            cairo: move_to([50, 150])
         | 
| 45 | 
            -
            pango: font_description=([])
         | 
| 46 | 
            -
            pango: text=(["6-hex"])
         | 
| 47 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 48 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 49 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 50 | 
            -
            pango: justify=([false])
         | 
| 51 | 
            -
            pango: spacing=([0])
         | 
| 52 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 53 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 54 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 55 | 
            -
            cairo: restore([])
         | 
| 56 | 
            -
            cairo: save([])
         | 
| 57 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=0.6, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 58 | 
            -
            cairo: translate([50, 200])
         | 
| 59 | 
            -
            cairo: rotate([0])
         | 
| 60 | 
            -
            cairo: translate([-50, -200])
         | 
| 61 | 
            -
            cairo: move_to([50, 200])
         | 
| 62 | 
            -
            pango: font_description=([])
         | 
| 63 | 
            -
            pango: text=(["8-hex(alpha) *"])
         | 
| 64 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 65 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 66 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 67 | 
            -
            pango: justify=([false])
         | 
| 68 | 
            -
            pango: spacing=([0])
         | 
| 69 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 70 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 71 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 72 | 
            -
            cairo: restore([])
         | 
| 73 | 
            -
            cairo: save([])
         | 
| 74 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 75 | 
            -
            cairo: translate([50, 250])
         | 
| 76 | 
            -
            cairo: rotate([0])
         | 
| 77 | 
            -
            cairo: translate([-50, -250])
         | 
| 78 | 
            -
            cairo: move_to([50, 250])
         | 
| 79 | 
            -
            pango: font_description=([])
         | 
| 80 | 
            -
            pango: text=(["12-hex"])
         | 
| 81 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 82 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 83 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 84 | 
            -
            pango: justify=([false])
         | 
| 85 | 
            -
            pango: spacing=([0])
         | 
| 86 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 87 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 88 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 89 | 
            -
            cairo: restore([])
         | 
| 90 | 
            -
            cairo: save([])
         | 
| 91 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=0.6, @red=1.0, @green=0.0, @blue=0.0>])
         | 
| 92 | 
            -
            cairo: translate([50, 300])
         | 
| 93 | 
            -
            cairo: rotate([0])
         | 
| 94 | 
            -
            cairo: translate([-50, -300])
         | 
| 95 | 
            -
            cairo: move_to([50, 300])
         | 
| 96 | 
            -
            pango: font_description=([])
         | 
| 97 | 
            -
            pango: text=(["12-hex (alpha)"])
         | 
| 98 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 99 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 100 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 101 | 
            -
            pango: justify=([false])
         | 
| 102 | 
            -
            pango: spacing=([0])
         | 
| 103 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 104 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 105 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 106 | 
            -
            cairo: restore([])
         | 
| 107 | 
            -
            cairo: save([])
         | 
| 108 | 
            -
            cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.8, @green=0.333333333333333, @blue=0.0>])
         | 
| 109 | 
            -
            cairo: translate([50, 350])
         | 
| 110 | 
            -
            cairo: rotate([0])
         | 
| 111 | 
            -
            cairo: translate([-50, -350])
         | 
| 112 | 
            -
            cairo: move_to([50, 350])
         | 
| 113 | 
            -
            pango: font_description=([])
         | 
| 114 | 
            -
            pango: text=(["Symbols of constants too"])
         | 
| 115 | 
            -
            pango: wrap=([#<Pango::Layout::WrapMode word-char>])
         | 
| 116 | 
            -
            pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
         | 
| 117 | 
            -
            pango: alignment=([#<Pango::Layout::Alignment left>])
         | 
| 118 | 
            -
            pango: justify=([false])
         | 
| 119 | 
            -
            pango: spacing=([0])
         | 
| 120 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 121 | 
            -
            cairo: update_pango_layout([MockDouble])
         | 
| 122 | 
            -
            cairo: show_pango_layout([MockDouble])
         | 
| 123 | 
            -
            cairo: restore([])
         | 
| 124 | 
            -
            surface: write_to_png(["_output/colors_0.png"])
         |