diff --git a/lib/squib/card.rb b/lib/squib/card.rb index 5fa112b..24836a2 100644 --- a/lib/squib/card.rb +++ b/lib/squib/card.rb @@ -51,6 +51,10 @@ module Squib @cairo_context.restore end + def finish! + @cairo_surface.finish + end + ######################## ### BACKEND GRAPHICS ### ######################## diff --git a/lib/squib/deck.rb b/lib/squib/deck.rb index 3dcd36a..cb7948b 100644 --- a/lib/squib/deck.rb +++ b/lib/squib/deck.rb @@ -73,6 +73,7 @@ module Squib if block_given? instance_eval(&block) # here we go. wheeeee! end + @cards.each { |c| c.finish! } end # Directly accesses the array of cards in the deck diff --git a/spec/data/samples/autoscale_font/_autoscale_font.rb.txt b/spec/data/samples/autoscale_font/_autoscale_font.rb.txt index 8e0bc25..12986fb 100644 --- a/spec/data/samples/autoscale_font/_autoscale_font.rb.txt +++ b/spec/data/samples/autoscale_font/_autoscale_font.rb.txt @@ -128,3 +128,6 @@ cairo: paint([]) cairo: set_source([MockDouble, 200, 0]) cairo: paint([]) surface: write_to_png(["./card_00.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/basic.rb.txt b/spec/data/samples/basic.rb.txt index 4a96aa6..5c1495d 100644 --- a/spec/data/samples/basic.rb.txt +++ b/spec/data/samples/basic.rb.txt @@ -243,3 +243,6 @@ cairo: restore([]) surface: write_to_png(["_output/basic_00.png"]) surface: write_to_png(["_output/basic_01.png"]) surface: write_to_png(["_output/basic_02.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/cairo_access.rb.txt b/spec/data/samples/cairo_access.rb.txt index 1750b64..43076de 100644 --- a/spec/data/samples/cairo_access.rb.txt +++ b/spec/data/samples/cairo_access.rb.txt @@ -55,3 +55,5 @@ cairo: stroke([]) cairo: restore([]) surface: write_to_png(["_output/cairo_access_00.png"]) surface: write_to_png(["_output/cairo_access_01.png"]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/colors/_gradients.rb.txt b/spec/data/samples/colors/_gradients.rb.txt index 969abf1..61e56fe 100644 --- a/spec/data/samples/colors/_gradients.rb.txt +++ b/spec/data/samples/colors/_gradients.rb.txt @@ -81,3 +81,4 @@ cairo: show_pango_layout([MockDouble]) pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/gradient_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/config_text_markup.rb.txt b/spec/data/samples/config_text_markup.rb.txt index d72662f..1ee5258 100644 --- a/spec/data/samples/config_text_markup.rb.txt +++ b/spec/data/samples/config_text_markup.rb.txt @@ -45,6 +45,7 @@ cairo: show_pango_layout([MockDouble]) pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/config_text_00.png"]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: save([]) cairo: set_source_color(["black"]) @@ -70,3 +71,4 @@ cairo: stroke([]) pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/config_disable_text_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/custom_config.rb.txt b/spec/data/samples/custom_config.rb.txt index 0cc07a6..a2f6deb 100644 --- a/spec/data/samples/custom_config.rb.txt +++ b/spec/data/samples/custom_config.rb.txt @@ -56,3 +56,4 @@ cairo: paint([]) cairo: reset_clip([]) cairo: translate([-75, -75]) surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/data/_csv.rb.txt b/spec/data/samples/data/_csv.rb.txt index b50a12f..e7ec4ec 100644 --- a/spec/data/samples/data/_csv.rb.txt +++ b/spec/data/samples/data/_csv.rb.txt @@ -74,6 +74,8 @@ pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/sample_csv_00.png"]) surface: write_to_png(["_output/sample_csv_01.png"]) +surface: finish([]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) @@ -223,3 +225,7 @@ cairo: paint([]) cairo: set_source([MockDouble, 300, 0]) cairo: paint([]) surface: write_to_png(["_output/sample_csv_qty_00.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/data/_excel.rb.txt b/spec/data/samples/data/_excel.rb.txt index bc63bd0..0b220b2 100644 --- a/spec/data/samples/data/_excel.rb.txt +++ b/spec/data/samples/data/_excel.rb.txt @@ -160,6 +160,9 @@ cairo: restore([]) surface: write_to_png(["_output/sample_excel_00.png"]) surface: write_to_png(["_output/sample_excel_01.png"]) surface: write_to_png(["_output/sample_excel_02.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) @@ -309,6 +312,10 @@ cairo: paint([]) cairo: set_source([MockDouble, 300, 0]) cairo: paint([]) surface: write_to_png(["_output/sample_xlsx_qty_00.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) @@ -689,3 +696,9 @@ surface: write_to_png(["_output/sample_excel_resources_00.png"]) cairo: set_source([MockDouble, 0, 0]) cairo: paint([]) surface: write_to_png(["_output/sample_excel_resources_01.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/embed_text.rb.txt b/spec/data/samples/embed_text.rb.txt index 3412676..60c93ee 100644 --- a/spec/data/samples/embed_text.rb.txt +++ b/spec/data/samples/embed_text.rb.txt @@ -340,6 +340,7 @@ cairo: stroke([]) pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/embed_00.png"]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) @@ -425,3 +426,6 @@ cairo: paint([]) cairo: set_source([MockDouble, 200, 0]) cairo: paint([]) surface: write_to_png(["_output/embed_multisheet_00.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/hello_world.rb.txt b/spec/data/samples/hello_world.rb.txt index 82aa65f..e5f2e1b 100644 --- a/spec/data/samples/hello_world.rb.txt +++ b/spec/data/samples/hello_world.rb.txt @@ -34,3 +34,5 @@ pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/card_00.png"]) surface: write_to_png(["_output/card_01.png"]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/images/_more_load_images.rb.txt b/spec/data/samples/images/_more_load_images.rb.txt index 1390ba0..f753db2 100644 --- a/spec/data/samples/images/_more_load_images.rb.txt +++ b/spec/data/samples/images/_more_load_images.rb.txt @@ -332,3 +332,4 @@ cairo: translate([0, 0]) cairo: render_rsvg_handle([RSVG::Handle, "#"]) cairo: restore([]) surface: write_to_png(["_output/load_images_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/ranges/_ranges.rb.txt b/spec/data/samples/ranges/_ranges.rb.txt index abc1374..055af27 100644 --- a/spec/data/samples/ranges/_ranges.rb.txt +++ b/spec/data/samples/ranges/_ranges.rb.txt @@ -479,3 +479,6 @@ cairo: paint([]) cairo: set_source([MockDouble, 200, 0]) cairo: paint([]) surface: write_to_png(["_output/ranges_00.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/saves/_hand.rb.txt b/spec/data/samples/saves/_hand.rb.txt index b956c16..882ad6e 100644 --- a/spec/data/samples/saves/_hand.rb.txt +++ b/spec/data/samples/saves/_hand.rb.txt @@ -584,3 +584,11 @@ cairo: translate([75, 75]) cairo: set_source([MockDouble]) cairo: paint([]) surface: write_to_png(["_output/hand_pretty.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/saves/_portrait_landscape.rb.txt b/spec/data/samples/saves/_portrait_landscape.rb.txt index ee8a9ca..7bf045c 100644 --- a/spec/data/samples/saves/_portrait_landscape.rb.txt +++ b/spec/data/samples/saves/_portrait_landscape.rb.txt @@ -24,6 +24,7 @@ cairo: clip([]) cairo: set_source([MockDouble, -10, -10]) cairo: paint([]) surface: write_to_png(["_output/portrait_00.png"]) +surface: finish([]) cairo: antialias=(["subpixel"]) cairo: save([]) cairo: set_source_color(["#aaa"]) @@ -53,3 +54,4 @@ cairo: clip([]) cairo: set_source([MockDouble, -25, -25]) cairo: paint([]) surface: write_to_png(["_output/landscape_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/saves/_save_pdf.rb.txt b/spec/data/samples/saves/_save_pdf.rb.txt index 969b0d2..6d194e5 100644 --- a/spec/data/samples/saves/_save_pdf.rb.txt +++ b/spec/data/samples/saves/_save_pdf.rb.txt @@ -1591,3 +1591,11 @@ cairo: set_dash([[5.0, 5.0]]) cairo: set_line_width([4.0]) cairo: stroke([]) surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/saves/_saves.rb.txt b/spec/data/samples/saves/_saves.rb.txt index 42ead2b..d0c7ef7 100644 --- a/spec/data/samples/saves/_saves.rb.txt +++ b/spec/data/samples/saves/_saves.rb.txt @@ -855,3 +855,19 @@ cairo: paint([]) cairo: set_source([MockDouble, 180, 75]) cairo: paint([]) surface: write_to_png(["_output/save_sheet_range_01.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/saves/_showcase.rb.txt b/spec/data/samples/saves/_showcase.rb.txt index 8364a36..7b99265 100644 --- a/spec/data/samples/saves/_showcase.rb.txt +++ b/spec/data/samples/saves/_showcase.rb.txt @@ -5936,3 +5936,7 @@ surface: write_to_png(["_output/showcase_individual_00.png"]) surface: write_to_png(["_output/showcase_individual_01.png"]) surface: write_to_png(["_output/showcase_individual_02.png"]) surface: write_to_png(["_output/showcase_individual_03.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/shapes/_draw_shapes.rb.txt b/spec/data/samples/shapes/_draw_shapes.rb.txt index 630986e..1a55b36 100644 --- a/spec/data/samples/shapes/_draw_shapes.rb.txt +++ b/spec/data/samples/shapes/_draw_shapes.rb.txt @@ -754,3 +754,4 @@ cairo: set_dash([[]]) cairo: stroke([]) cairo: restore([]) surface: write_to_png(["_output/shape_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/text_options.rb.txt b/spec/data/samples/text_options.rb.txt index 998697e..a887f79 100644 --- a/spec/data/samples/text_options.rb.txt +++ b/spec/data/samples/text_options.rb.txt @@ -1153,3 +1153,6 @@ cairo: restore([]) surface: write_to_png(["_output/text_00.png"]) surface: write_to_png(["_output/text_01.png"]) surface: write_to_png(["_output/text_02.png"]) +surface: finish([]) +surface: finish([]) +surface: finish([]) diff --git a/spec/data/samples/tgc_proofs.rb.txt b/spec/data/samples/tgc_proofs.rb.txt index f6bc695..8290ee4 100644 --- a/spec/data/samples/tgc_proofs.rb.txt +++ b/spec/data/samples/tgc_proofs.rb.txt @@ -99,3 +99,4 @@ cairo: set_source([ImageSurface, 0, 0]) cairo: paint([0.5]) cairo: restore([]) surface: write_to_png(["_output/tgc_sample_00.png"]) +surface: finish([]) diff --git a/spec/data/samples/units/_units.rb.txt b/spec/data/samples/units/_units.rb.txt index 16b9869..d280864 100644 --- a/spec/data/samples/units/_units.rb.txt +++ b/spec/data/samples/units/_units.rb.txt @@ -50,3 +50,4 @@ cairo: show_pango_layout([MockDouble]) pango: ellipsized?([]) cairo: restore([]) surface: write_to_png(["_output/units_00.png"]) +surface: finish([]) diff --git a/spec/deck_spec.rb b/spec/deck_spec.rb index 41c6d9c..c6f493f 100644 --- a/spec/deck_spec.rb +++ b/spec/deck_spec.rb @@ -22,6 +22,8 @@ describe Squib::Deck do card2 = instance_double(Squib::Card) expect(card1).to receive(:text).once expect(card2).to receive(:text).once + expect(card1).to receive(:finish!).once + expect(card2).to receive(:finish!).once Squib::Deck.new do @cards = [card1, card2] text str: 'blah' @@ -31,7 +33,9 @@ describe Squib::Deck do it 'calls text on some cards with an integer' do card1 = instance_double(Squib::Card) card2 = instance_double(Squib::Card) + expect(card1).to receive(:finish!).once expect(card2).to receive(:text).once + expect(card2).to receive(:finish!).once Squib::Deck.new do @cards = [card1, card2] text range: 1, str: 'blah' @@ -43,7 +47,10 @@ describe Squib::Deck do card2 = instance_double(Squib::Card) card3 = instance_double(Squib::Card) expect(card1).to receive(:text).once + expect(card1).to receive(:finish!).once expect(card2).to receive(:text).once + expect(card2).to receive(:finish!).once + expect(card3).to receive(:finish!).once Squib::Deck.new do @cards = [card1, card2, card3] text range: 0..1, str: 'blah'