From 7c69cad50643ff27185c116caf1d885afbd8f258 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Tue, 28 Apr 2015 22:27:26 -0400 Subject: [PATCH] Text: outline a string with a color or gradient Fill color is still the same with 'color' (i.e. can be overridden by markup still), but now there's a stroke_width and a stroke_color option that, when stroke_width > 0, will draw an outline below the text. Since this isn't a Pango feature, we can't do markup for outlines. (Maybe make that a feature request to Pango if you want it.) Implements #51 --- lib/squib/api/text.rb | 8 +- lib/squib/graphics/cairo_context_wrapper.rb | 2 +- lib/squib/graphics/text.rb | 15 +- samples/text_options.rb | 4 + spec/data/samples/autoscale_font.rb.txt | 6 +- spec/data/samples/basic.rb.txt | 12 +- spec/data/samples/config_text_markup.rb.txt | 6 +- spec/data/samples/csv_import.rb.txt | 12 +- spec/data/samples/custom_config.rb.txt | 2 +- spec/data/samples/embed_text.rb.txt | 22 +-- spec/data/samples/excel.rb.txt | 18 +-- spec/data/samples/gradients.rb.txt | 2 +- spec/data/samples/hello_world.rb.txt | 4 +- spec/data/samples/portrait-landscape.rb.txt | 4 +- spec/data/samples/ranges.rb.txt | 48 +++--- spec/data/samples/saves.rb.txt | 32 ++-- spec/data/samples/showcase.rb.txt | 8 +- spec/data/samples/text_options.rb.txt | 153 ++++++++++++++------ spec/data/samples/tgc_proofs.rb.txt | 4 +- spec/graphics/graphics_text_spec.rb | 31 ++-- spec/spec_helper.rb | 2 +- 21 files changed, 247 insertions(+), 148 deletions(-) diff --git a/lib/squib/api/text.rb b/lib/squib/api/text.rb index 925db77..fc6c895 100644 --- a/lib/squib/api/text.rb +++ b/lib/squib/api/text.rb @@ -37,13 +37,16 @@ module Squib # @option opts valign [:top, :middle, :bottom] (:top) When width and height are set, align text vertically according to the ink extents of the text. # @option opts ellipsize [:none, :start, :middle, :end, true, false] (:end) When width and height are set, determines the behavior of overflowing text. Also: `true` maps to `:end` and `false` maps to `:none`. Default `:end` # @option opts angle [FixNum] (0) Rotation of the text in radians. Note that this rotates around the upper-left corner of the text box, making the placement of x-y coordinates slightly tricky. + # @option opts stroke_color [String] (:black) the color with which to stroke the outside of the rectangle. {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} + # @option opts stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}. # @option opts hint [String] (:nil) draw a rectangle around the text with the given color. Overrides global hints (see {Deck#hint}). # @return [Array] Returns an Array of hashes keyed by :width and :height that mark the ink extents of the text rendered. # @api public def text(opts = {}) + opts = { stroke_width: 0 }.merge(opts) opts = needs(opts, [:range, :str, :font, :font_size, :x, :y, :width, :height, :color, :wrap, :align, :justify, :spacing, :valign, :markup, :ellipsize, :hint, :layout, - :angle, :quotes]) + :angle, :quotes, :stroke_color, :stroke_width]) embed = TextEmbed.new yield(embed) if block_given? #store the opts for later use extents = Array.new(@cards.size) @@ -53,7 +56,8 @@ module Squib opts[:x][i], opts[:y][i], opts[:width][i], opts[:height][i], opts[:markup][i], opts[:justify][i], opts[:wrap][i], opts[:ellipsize][i], opts[:spacing][i], opts[:align][i], - opts[:valign][i], opts[:hint][i], opts[:angle][i]) + opts[:valign][i], opts[:hint][i], opts[:angle][i], + opts[:stroke_color][i], opts[:stroke_width][i] ) end return extents end diff --git a/lib/squib/graphics/cairo_context_wrapper.rb b/lib/squib/graphics/cairo_context_wrapper.rb index 843569e..939a9d0 100644 --- a/lib/squib/graphics/cairo_context_wrapper.rb +++ b/lib/squib/graphics/cairo_context_wrapper.rb @@ -22,7 +22,7 @@ module Squib :show_pango_layout, :rounded_rectangle, :set_line_width, :stroke, :fill, :set_source, :scale, :render_rsvg_handle, :circle, :triangle, :line_to, :operator=, :show_page, :clip, :transform, :mask, :create_pango_layout, - :antialias=, :curve_to, :matrix, :matrix=, :identity_matrix + :antialias=, :curve_to, :matrix, :matrix=, :identity_matrix, :pango_layout_path # :nodoc: # @api private diff --git a/lib/squib/graphics/text.rb b/lib/squib/graphics/text.rb index df54491..ea1ae74 100644 --- a/lib/squib/graphics/text.rb +++ b/lib/squib/graphics/text.rb @@ -143,17 +143,26 @@ module Squib return draw_calls end + def stroke_outline!(cc, layout, stroke_width, stroke_color) + if stroke_width > 0 + cc.set_source_squibcolor(stroke_color) + cc.set_line_width(stroke_width) + cc.pango_layout_path(layout) + cc.stroke + end + end + # :nodoc: # @api private def text(embed,str, font, font_size, color, x, y, width, height, markup, justify, wrap, ellipsize, - spacing, align, valign, hint, angle) + spacing, align, valign, hint, angle, + stroke_color, stroke_width) Squib.logger.debug {"Placing '#{str}'' with font '#{font}' @ #{x}, #{y}, color: #{color}, angle: #{angle} etc."} extents = nil str = str.to_s use_cairo do |cc| - cc.set_source_squibcolor(color) cc.translate(x,y) cc.rotate(angle) cc.move_to(0, 0) @@ -184,6 +193,8 @@ module Squib cc.move_to(0, vertical_start) cc.update_pango_layout(layout) + stroke_outline!(cc, layout, stroke_width, stroke_color) + cc.set_source_squibcolor(color) cc.show_pango_layout(layout) begin embed_draws.each { |ed| ed[:draw].call(self, ed[:x], ed[:y] + vertical_start) } diff --git a/samples/text_options.rb b/samples/text_options.rb index 3c31b76..f42278d 100644 --- a/samples/text_options.rb +++ b/samples/text_options.rb @@ -78,6 +78,10 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do embed.svg key: ':health:', width: 28, height: 28, file: 'glass-heart.svg' end + text str: "Stroke n fill", + color: :green, stroke_width: 3.0, stroke_color: :blue, + x: '1.8in', y: '3in', width: '0.85in', font: 'Sans Bold 26', markup: true + text str: "Markup is quite 'easy' awesome. Can't beat those \"smart\" 'quotes', now with 10--20% more en-dashes --- and em-dashes --- with explicit ellipses too...", markup: true, x: 50, y: 1000, diff --git a/spec/data/samples/autoscale_font.rb.txt b/spec/data/samples/autoscale_font.rb.txt index a71140d..b9a1b7d 100644 --- a/spec/data/samples/autoscale_font.rb.txt +++ b/spec/data/samples/autoscale_font.rb.txt @@ -14,7 +14,6 @@ cairo: set_source_color([:white]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -30,6 +29,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -37,7 +37,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -53,6 +52,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -60,7 +60,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -76,6 +75,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) diff --git a/spec/data/samples/basic.rb.txt b/spec/data/samples/basic.rb.txt index c741939..cf48f42 100644 --- a/spec/data/samples/basic.rb.txt +++ b/spec/data/samples/basic.rb.txt @@ -68,7 +68,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -82,10 +81,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -99,10 +98,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -116,10 +115,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([75, 85]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -134,10 +133,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([75, 85]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -152,10 +151,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([75, 85]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -170,6 +169,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) diff --git a/spec/data/samples/config_text_markup.rb.txt b/spec/data/samples/config_text_markup.rb.txt index 7168141..7c5fc0c 100644 --- a/spec/data/samples/config_text_markup.rb.txt +++ b/spec/data/samples/config_text_markup.rb.txt @@ -4,7 +4,6 @@ cairo: set_source_color([:white]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([10, 10]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -21,6 +20,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -28,7 +28,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([320, 10]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -44,12 +43,12 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/config_text_00.png"]) cairo: antialias=(["subpixel"]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([10, 10]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -66,6 +65,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) diff --git a/spec/data/samples/csv_import.rb.txt b/spec/data/samples/csv_import.rb.txt index 53bb41c..53996f8 100644 --- a/spec/data/samples/csv_import.rb.txt +++ b/spec/data/samples/csv_import.rb.txt @@ -9,7 +9,6 @@ cairo: set_source_color([:white]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -23,10 +22,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -40,10 +39,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 65]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -57,10 +56,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 65]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -74,10 +73,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 600]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -91,10 +90,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 600]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -108,6 +107,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/sample_csv_00.png"]) diff --git a/spec/data/samples/custom_config.rb.txt b/spec/data/samples/custom_config.rb.txt index 96b9270..11354fe 100644 --- a/spec/data/samples/custom_config.rb.txt +++ b/spec/data/samples/custom_config.rb.txt @@ -4,7 +4,6 @@ cairo: set_source_color(["#ccc"]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -19,6 +18,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color(["#FF0000"]) diff --git a/spec/data/samples/embed_text.rb.txt b/spec/data/samples/embed_text.rb.txt index 65df637..f21c700 100644 --- a/spec/data/samples/embed_text.rb.txt +++ b/spec/data/samples/embed_text.rb.txt @@ -13,7 +13,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -29,6 +28,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Take 11 :tool: and gain 2 :health:. Take 2 :tool: and gain 3 :purse: if level 2."]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -36,7 +36,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([200, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -53,6 +52,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Middle align: Take 1 :tool: and gain 2 :health:. Take 2 :tool: and gain 3 :purse:"]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -60,7 +60,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([400, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -77,6 +76,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["This :tool: aligns on the bottom properly. :purse:"]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:green]) @@ -84,7 +84,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([600, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -101,6 +100,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Wrapping multiples: These are 1 :tool::tool::tool: and these are multiple :tool::tool: :tool::tool:"]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -108,7 +108,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 320]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -125,6 +124,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=([":tool:Justify will :tool: work too, and :purse: with more words just for fun"]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:magenta]) @@ -132,7 +132,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([200, 320]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -149,6 +148,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Right-aligned works :tool: with :health: and :purse:"]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:magenta]) @@ -156,7 +156,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([400, 320]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -173,6 +172,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=([":tool:Center-aligned works :tool: with :health: and :purse:"]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:magenta]) @@ -180,7 +180,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([600, 320]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -198,6 +197,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["foo"]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:magenta]) @@ -209,7 +209,6 @@ cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -227,6 +226,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Take 1 :tool: and gain 2 :health:."]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -234,7 +234,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -252,6 +251,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Take 1 :tool: and gain 2 :health:."]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -259,7 +259,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -277,6 +276,7 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Take 1 :tool: and gain 2 :health:."]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) diff --git a/spec/data/samples/excel.rb.txt b/spec/data/samples/excel.rb.txt index 5ff4b75..0f7f280 100644 --- a/spec/data/samples/excel.rb.txt +++ b/spec/data/samples/excel.rb.txt @@ -14,7 +14,6 @@ cairo: set_source_color([:white]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -28,10 +27,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -45,10 +44,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -62,10 +61,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 65]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -79,10 +78,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 65]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -96,10 +95,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 65]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -113,10 +112,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 600]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -130,10 +129,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 600]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -147,10 +146,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 600]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -164,6 +163,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/sample_excel_00.png"]) diff --git a/spec/data/samples/gradients.rb.txt b/spec/data/samples/gradients.rb.txt index 6b7c222..08e4e03 100644 --- a/spec/data/samples/gradients.rb.txt +++ b/spec/data/samples/gradients.rb.txt @@ -48,7 +48,6 @@ cairo: set_source([LinearPattern]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source([LinearPattern]) cairo: translate([75, 700]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -62,6 +61,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source([LinearPattern]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/gradient_00.png"]) diff --git a/spec/data/samples/hello_world.rb.txt b/spec/data/samples/hello_world.rb.txt index 41169a0..2f90111 100644 --- a/spec/data/samples/hello_world.rb.txt +++ b/spec/data/samples/hello_world.rb.txt @@ -1,7 +1,6 @@ cairo: antialias=(["subpixel"]) cairo: antialias=(["subpixel"]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -15,10 +14,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -32,6 +31,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/card_00.png"]) diff --git a/spec/data/samples/portrait-landscape.rb.txt b/spec/data/samples/portrait-landscape.rb.txt index 901f11e..01e265f 100644 --- a/spec/data/samples/portrait-landscape.rb.txt +++ b/spec/data/samples/portrait-landscape.rb.txt @@ -4,7 +4,6 @@ cairo: set_source_color(["#aaa"]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -18,6 +17,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/portrait_00.png"]) @@ -27,7 +27,6 @@ cairo: set_source_color(["#aaa"]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([0, 0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -41,6 +40,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: translate([412.5, 562.5]) diff --git a/spec/data/samples/ranges.rb.txt b/spec/data/samples/ranges.rb.txt index 851cc56..1aeb037 100644 --- a/spec/data/samples/ranges.rb.txt +++ b/spec/data/samples/ranges.rb.txt @@ -14,7 +14,6 @@ cairo: set_source_color([:white]) cairo: paint([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -28,10 +27,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -45,10 +44,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -62,10 +61,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -79,10 +78,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -96,10 +95,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -113,10 +112,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([40, 128]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -131,10 +130,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([40, 128]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -149,10 +148,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([40, 128]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -167,10 +166,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 200]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -184,10 +183,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 200]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -201,10 +200,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 250]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -218,10 +217,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 250]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -235,10 +234,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 650]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -252,10 +251,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 650]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -269,10 +268,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 300]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -286,10 +285,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 300]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -303,10 +302,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:red]) cairo: translate([40, 700]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -320,10 +319,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:red]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:green]) cairo: translate([80, 750]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -337,10 +336,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:green]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:blue]) cairo: translate([120, 800]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -354,10 +353,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:blue]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -371,10 +370,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -388,10 +387,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 500]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -405,10 +404,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([25, 500]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -422,6 +421,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) surface: write_to_png(["_output/ranges_00.png"]) diff --git a/spec/data/samples/saves.rb.txt b/spec/data/samples/saves.rb.txt index 2f57334..566879d 100644 --- a/spec/data/samples/saves.rb.txt +++ b/spec/data/samples/saves.rb.txt @@ -223,7 +223,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -237,10 +236,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -254,10 +253,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -271,10 +270,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -288,10 +287,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -305,10 +304,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -322,10 +321,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -339,10 +338,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -356,10 +355,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -373,10 +372,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -390,10 +389,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -407,10 +406,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -424,10 +423,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -441,10 +440,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -458,10 +457,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -475,10 +474,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -492,6 +491,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: scale([0.24, 0.24]) diff --git a/spec/data/samples/showcase.rb.txt b/spec/data/samples/showcase.rb.txt index 4b7aa99..df22302 100644 --- a/spec/data/samples/showcase.rb.txt +++ b/spec/data/samples/showcase.rb.txt @@ -55,7 +55,6 @@ cairo: set_source_color(["#DED4B9"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([78, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -70,10 +69,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([78, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -88,10 +87,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([78, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -106,10 +105,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([78, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -124,6 +123,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) diff --git a/spec/data/samples/text_options.rb.txt b/spec/data/samples/text_options.rb.txt index 006bd8e..5598a19 100644 --- a/spec/data/samples/text_options.rb.txt +++ b/spec/data/samples/text_options.rb.txt @@ -68,7 +68,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -82,10 +81,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -99,10 +98,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([250, 55]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -116,10 +115,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:burnt_orange]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -133,10 +132,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:burnt_orange]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:burnt_orange]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -150,10 +149,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:burnt_orange]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:burnt_orange]) cairo: translate([65, 40]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -167,10 +166,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:burnt_orange]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 200]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -184,10 +183,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 200]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -201,10 +200,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 200]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -218,10 +217,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 300]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -235,10 +234,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 300]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -252,10 +251,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 300]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -269,10 +268,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 350]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -287,10 +286,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 350]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -305,10 +304,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 350]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -323,10 +322,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -342,6 +341,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -349,7 +349,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -365,6 +364,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -372,7 +372,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -388,6 +387,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -395,7 +395,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 550]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -410,10 +409,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 550]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -428,10 +427,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 550]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -446,6 +445,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) @@ -476,7 +476,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([450, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -492,6 +491,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:green]) @@ -499,7 +499,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([450, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -515,6 +514,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:green]) @@ -522,7 +522,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([450, 400]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -538,6 +537,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:green]) @@ -545,7 +545,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -559,6 +558,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -566,7 +566,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -580,6 +579,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -587,7 +587,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -601,6 +600,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -608,7 +608,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -622,10 +621,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -639,10 +638,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 625]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -656,10 +655,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 675]) cairo: rotate([0.2]) cairo: move_to([0, 0]) @@ -673,6 +672,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -680,7 +680,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 675]) cairo: rotate([0.2]) cairo: move_to([0, 0]) @@ -694,6 +693,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -701,7 +701,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([565, 675]) cairo: rotate([0.2]) cairo: move_to([0, 0]) @@ -715,6 +714,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:red]) @@ -722,7 +722,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 700]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -738,10 +737,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 700]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -757,10 +756,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([65, 700]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -776,10 +775,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([540.0, 750.0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -795,10 +794,10 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Embedded icons! Take 1 :tool: and gain 2:health:. If Level 2, take 2 :tool:"]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([540.0, 750.0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -814,10 +813,10 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Embedded icons! Take 1 :tool: and gain 2:health:. If Level 2, take 2 :tool:"]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([540.0, 750.0]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -833,10 +832,79 @@ cairo: update_pango_layout([MockDouble]) pango: markup=(["Embedded icons! Take 1 :tool: and gain 2:health:. If Level 2, take 2 :tool:"]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) +cairo: show_pango_layout([MockDouble]) +cairo: restore([]) +cairo: save([]) +cairo: translate([540.0, 900.0]) +cairo: rotate([0]) +cairo: move_to([0, 0]) +pango: font_description=([MockDouble]) +pango: text=(["Stroke n fill"]) +pango: markup=(["foo"]) +pango: width=([261120.0]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([MockDouble]) +cairo: move_to([0, 0]) +cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:blue]) +cairo: set_line_width([3.0]) +cairo: pango_layout_path([MockDouble]) +cairo: stroke([]) +cairo: set_source_color([:green]) +cairo: show_pango_layout([MockDouble]) +cairo: restore([]) +cairo: save([]) +cairo: translate([540.0, 900.0]) +cairo: rotate([0]) +cairo: move_to([0, 0]) +pango: font_description=([MockDouble]) +pango: text=(["Stroke n fill"]) +pango: markup=(["foo"]) +pango: width=([261120.0]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([MockDouble]) +cairo: move_to([0, 0]) +cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:blue]) +cairo: set_line_width([3.0]) +cairo: pango_layout_path([MockDouble]) +cairo: stroke([]) +cairo: set_source_color([:green]) +cairo: show_pango_layout([MockDouble]) +cairo: restore([]) +cairo: save([]) +cairo: translate([540.0, 900.0]) +cairo: rotate([0]) +cairo: move_to([0, 0]) +pango: font_description=([MockDouble]) +pango: text=(["Stroke n fill"]) +pango: markup=(["foo"]) +pango: width=([261120.0]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([MockDouble]) +cairo: move_to([0, 0]) +cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:blue]) +cairo: set_line_width([3.0]) +cairo: pango_layout_path([MockDouble]) +cairo: stroke([]) +cairo: set_source_color([:green]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([50, 1000]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -853,6 +921,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -860,7 +929,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([50, 1000]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -877,6 +945,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) @@ -884,7 +953,6 @@ cairo: set_line_width([2.0]) cairo: stroke([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([50, 1000]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -901,6 +969,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0.0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: rounded_rectangle([0, 0, 0, 0, 0, 0]) cairo: set_source_color([:cyan]) diff --git a/spec/data/samples/tgc_proofs.rb.txt b/spec/data/samples/tgc_proofs.rb.txt index d16876a..3d3d512 100644 --- a/spec/data/samples/tgc_proofs.rb.txt +++ b/spec/data/samples/tgc_proofs.rb.txt @@ -22,7 +22,6 @@ cairo: set_source_color(["#0000"]) cairo: fill([]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([220, 78]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -36,10 +35,10 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) -cairo: set_source_color([:black]) cairo: translate([75, 85]) cairo: rotate([0]) cairo: move_to([0, 0]) @@ -54,6 +53,7 @@ pango: spacing=([0]) cairo: update_pango_layout([MockDouble]) cairo: move_to([0, 0]) cairo: update_pango_layout([MockDouble]) +cairo: set_source_color([:black]) cairo: show_pango_layout([MockDouble]) cairo: restore([]) cairo: save([]) diff --git a/spec/graphics/graphics_text_spec.rb b/spec/graphics/graphics_text_spec.rb index 6bb7231..13744a4 100644 --- a/spec/graphics/graphics_text_spec.rb +++ b/spec/graphics/graphics_text_spec.rb @@ -52,11 +52,12 @@ describe Squib::Card, '#text' do # text(str, font, font_size, color, # x, y, width, height, # markup, justify, wrap, ellipsize, - # spacing, align, valign, hint, angle) + # spacing, align, valign, hint, angle, + # stroke_width, stroke_color) ret = card.text(Squib::TextEmbed.new,'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 25, nil, false, false, false, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) expect(ret).to eq({width: 0, height: 0}) end end @@ -83,7 +84,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, false, false, - 1.0, 'right', :top, nil, 0.0) + 1.0, 'right', :top, nil, 0.0, '#fff', 0) end it 'aligns center with strings' do @@ -92,7 +93,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, false, false, - 1.0, 'center', :top, nil, 0.0) + 1.0, 'center', :top, nil, 0.0, '#fff', 0) end it 'sets wrap to char with string char' do @@ -101,7 +102,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, 'char', false, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) end it 'sets wrap to word with word string' do @@ -110,7 +111,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, 'word', false, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) end it 'sets wrap to word_char with symbol word_char' do @@ -119,7 +120,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, :word_char, false, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) end it 'sets wrap to word_char with true' do @@ -128,7 +129,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, true, false, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) end it 'sets ellipsize to start properly' do @@ -137,7 +138,7 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, true, :start, - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) end it 'sets ellipsize to middle properly' do @@ -146,7 +147,17 @@ describe Squib::Card, '#text' do card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', 10, 15, 20, 50, nil, false, true, 'middle', - 1.0, :left, :top, nil, 0.0) + 1.0, :left, :top, nil, 0.0, '#fff', 0) + end + + it 'implements stroke and fill when asked to' do + card = Squib::Card.new(deck, 100, 150) + expect(context).to receive(:set_line_width).with(3.0).once + expect(context).to receive(:pango_layout_path).once + card.text(Squib::TextEmbed.new, 'foo', 'Sans 12', nil, '#abc', + 10, 15, 20, 50, + nil, false, true, 'middle', + 1.0, :left, :top, nil, 0.0, '#f00', 3.0) end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index db702c4..d390ac1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -102,7 +102,7 @@ def mock_cairo(strio) update_pango_layout width height show_pango_layout rounded_rectangle set_line_width stroke fill set_source scale render_rsvg_handle circle triangle line_to operator= show_page clip transform mask rectangle - reset_clip antialias= curve_to matrix=).each do |m| + reset_clip antialias= curve_to matrix= pango_layout_path).each do |m| allow(cxt).to receive(m) { |*args| strio << scrub_hex("cairo: #{m}(#{args})\n") } end