Browse Source

Employing the new args refactoring on all shapes

dev
Andy Meneely 11 years ago
parent
commit
c5e00f1877
  1. 1
      CHANGELOG.md
  2. 99
      lib/squib/api/shapes.rb
  3. 2
      lib/squib/args/arg_loader.rb
  4. 28
      lib/squib/args/bezier.rb
  5. 28
      lib/squib/args/card_range.rb
  6. 26
      lib/squib/args/polygon.rb
  7. 25
      lib/squib/args/transform.rb
  8. 27
      lib/squib/args/tri.rb
  9. 22
      lib/squib/graphics/cairo_context_wrapper.rb
  10. 60
      lib/squib/graphics/shapes.rb
  11. 9
      spec/args/box_spec.rb
  12. 36
      spec/args/range_spec.rb
  13. 18
      spec/data/samples/basic.rb.txt
  14. 29
      spec/data/samples/draw_shapes.rb.txt
  15. 3
      spec/data/samples/embed_text.rb.txt
  16. 17
      spec/data/samples/gradients.rb.txt
  17. 48
      spec/data/samples/hand.rb.txt
  18. 3
      spec/data/samples/load_images.rb.txt
  19. 48
      spec/data/samples/saves.rb.txt
  20. 12
      spec/data/samples/showcase.rb.txt
  21. 27
      spec/data/samples/text_options.rb.txt
  22. 6
      spec/data/samples/tgc_proofs.rb.txt
  23. 9
      spec/data/samples/units.rb.txt
  24. 86
      spec/graphics/graphics_shapes_spec.rb
  25. 2
      spec/spec_helper.rb
  26. 3
      squib.sublime-project

1
CHANGELOG.md

@ -13,6 +13,7 @@ Compatibility:
Chores: Chores:
* Refactoring to make internal drawing code more DRY (#75, and much more). This is a big re-design that will help ease future features that involve manipulating arguments. * Refactoring to make internal drawing code more DRY (#75, and much more). This is a big re-design that will help ease future features that involve manipulating arguments.
* Better testing and general flexibility around the `range` option.
## v0.6.0 / 2015-05-26 ## v0.6.0 / 2015-05-26

99
lib/squib/api/shapes.rb

@ -1,5 +1,10 @@
require 'squib/args/box' require 'squib/args/box'
require 'squib/args/draw' require 'squib/args/draw'
require 'squib/args/card_range'
require 'squib/args/tri'
require 'squib/args/bezier'
require 'squib/args/polygon'
require 'squib/args/transform'
module Squib module Squib
class Deck class Deck
@ -28,13 +33,10 @@ module Squib
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def rect(opts = {}) def rect(opts = {})
opts = needs(opts, [:range, :rect_radius, :x_radius, :y_radius, range = Args::CardRange.new(opts[:range], deck_size: size)
:fill_color, :stroke_color, :stroke_width, :layout])
box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| range.each { |i| @cards[i].rect(box[i], draw[i]) }
@cards[i].rect(box[i], draw[i])
end
end end
# Draw a circle centered at the given coordinates # Draw a circle centered at the given coordinates
@ -51,17 +53,16 @@ module Squib
# @option opts fill_color [String] ('#0000') the color with which to fill the rectangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}. # @option opts fill_color [String] ('#0000') the color with which to fill the rectangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}.
# @option opts stroke_color [String] (:black) the color with which to stroke the outside of the rectangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}. # @option opts stroke_color [String] (:black) the color with which to stroke the outside of the rectangle. See {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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def circle(opts = {}) def circle(opts = {})
range = Args::CardRange.new(opts[:range], deck_size: size)
opts = {radius: 100}.merge(opts) # overriding the non-system default opts = {radius: 100}.merge(opts) # overriding the non-system default
opts = needs(opts, [:range, :x, :y, :circle_radius, :layout, box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
:fill_color, :stroke_color, :stroke_width]) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| range.each { |i| @cards[i].circle(box[i], draw[i]) }
@cards[i].circle(opts[:x][i], opts[:y][i], opts[:radius][i],
opts[:fill_color][i], opts[:stroke_color][i], opts[:stroke_width][i])
end
end end
# Draw an ellipse # Draw an ellipse
@ -79,17 +80,15 @@ module Squib
# @option opts fill_color [String] ('#0000') the color with which to fill the rectangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts fill_color [String] ('#0000') the color with which to fill the rectangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}
# @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_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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def ellipse(opts = {}) def ellipse(opts = {})
opts = needs(opts, [:range, :x, :y, :width, :height, range = Args::CardRange.new(opts[:range], deck_size: size)
:fill_color, :stroke_color, :stroke_width, :layout]) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].ellipse(opts[:x][i], opts[:y][i], opts[:width][i], opts[:height][i], range.each { |i| @cards[i].ellipse(box[i], draw[i]) }
opts[:fill_color][i], opts[:stroke_color][i],
opts[:stroke_width][i])
end
end end
# Draw a triangle using the given coordinates # Draw a triangle using the given coordinates
@ -109,19 +108,15 @@ module Squib
# @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}
# @option opts stroke_color [String] (:black) the color with which to stroke the outside of the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts stroke_color [String] (:black) the color with which to stroke the outside of the triangle. See {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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def triangle(opts = {}) def triangle(opts = {})
opts = needs(opts, [:range, :x1, :y1, :x2, :y2, :x3, :y3, :layout, range = Args::CardRange.new(opts[:range], deck_size: size)
:fill_color, :stroke_color, :stroke_width]) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| tri = Args::Tri.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].triangle(opts[:x1][i], opts[:y1][i], range.each { |i| @cards[i].triangle(tri[i], draw[i]) }
opts[:x2][i], opts[:y2][i],
opts[:x3][i], opts[:y3][i],
opts[:fill_color][i], opts[:stroke_color][i],
opts[:stroke_width][i])
end
end end
# Draw a line using the given coordinates # Draw a line using the given coordinates
@ -136,16 +131,16 @@ module Squib
# @option opts y2 [Integer] (50) the y-coordinate to place. Supports Unit Conversion, see {file:README.md#Units Units}. # @option opts y2 [Integer] (50) the y-coordinate to place. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts stroke_color [String] (:black) the color with which to stroke the line. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}. # @option opts stroke_color [String] (:black) the color with which to stroke the line. See {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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts cap [String] ('butt') how the end of the line is drawn. Options are "square", "butt", and "round"
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def line(opts = {}) def line(opts = {})
opts = needs(opts, [:range, :x1, :y1, :x2, :y2, :layout, range = Args::CardRange.new(opts[:range], deck_size: size)
:stroke_color, :stroke_width]) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| bezier = Args::Bezier.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].line(opts[:x1][i], opts[:y1][i], opts[:x2][i], opts[:y2][i], range.each { |i| @cards[i].line(bezier[i], draw[i]) }
opts[:stroke_color][i], opts[:stroke_width][i])
end
end end
# Draw a curve using the given coordinates # Draw a curve using the given coordinates
@ -163,18 +158,15 @@ module Squib
# @option opts stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}. # @option opts stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}
# @option opts cap [String] ('butt') how the end of the line is drawn. Options are "square", "butt", and "round" # @option opts cap [String] ('butt') how the end of the line is drawn. Options are "square", "butt", and "round"
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def curve(opts = {}) def curve(opts = {})
opts = needs(opts, [:range, :x1, :y1, :cx1, :cy1, :x2, :y2, :cx2, :cy2, range = Args::CardRange.new(opts[:range], deck_size: size)
:layout, :fill_color, :stroke_color, :stroke_width])
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| bezier = Args::Bezier.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].curve(opts[:x1][i], opts[:y1][i], opts[:cx1][i], opts[:cy1][i], range.each { |i| @cards[i].curve(bezier[i], draw[i]) }
opts[:x2][i], opts[:y2][i], opts[:cx2][i], opts[:cy2][i],
draw[i])
end
end end
# Draw a star at the given x,y # Draw a star at the given x,y
@ -191,18 +183,16 @@ module Squib
# @option opts stroke_color [String] (:black) the color with which to stroke the line. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}. # @option opts stroke_color [String] (:black) the color with which to stroke the line. See {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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def star(opts = {}) def star(opts = {})
opts = needs(opts, [:range, :x, :y, :n, :angle, :inner_radius, :outer_radius, range = Args::CardRange.new(opts[:range], deck_size: size)
:layout, :fill_color, :stroke_color, :stroke_width]) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:range].each do |i| poly = Args::Polygon.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].star(opts[:x][i], opts[:y][i], opts[:n][i], opts[:angle][i], trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:inner_radius][i], opts[:outer_radius][i], range.each { |i| @cards[i].star(poly[i], trans[i], draw[i]) }
opts[:fill_color][i], opts[:stroke_color][i],
opts[:stroke_width][i])
end
end end
# Draw a regular polygon at the given x,y # Draw a regular polygon at the given x,y
@ -215,19 +205,20 @@ module Squib
# @option opts y [Fixnum] (0) the y-coordinate of the center. Supports Unit Conversion, see {file:README.md#Units Units}. # @option opts y [Fixnum] (0) the y-coordinate of the center. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts n [Integer] (5) the number of points on the star # @option opts n [Integer] (5) the number of points on the star
# @option opts angle [Fixnum] (0) the angle at which to rotate # @option opts angle [Fixnum] (0) the angle at which to rotate
# @option opts radius [Fixnum] (0) the radius from center to corner. Supports Unit conversion.
# @option opts stroke_color [String] (:black) the color with which to stroke the line. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}. # @option opts stroke_color [String] (:black) the color with which to stroke the line. See {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 stroke_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
# @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients} # @option opts fill_color [String] ('#0000') the color with which to fill the triangle. See {file:README.md#Specifying_Colors___Gradients Specifying Colors & Gradients}
# @option opts dash [String] ('') define a dash pattern for the stroke. Provide a string with space-separated numbers that define the pattern of on-and-off alternating strokes, measured in pixels by defautl. Supports Unit Conversion, see {file:README.md#Units Units} (e.g. `'0.02in 0.02in'`).
# @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts} # @option opts layout [String, Symbol] (nil) entry in the layout to use as defaults for this command. See {file:README.md#Custom_Layouts Custom Layouts}
# @return [nil] intended to be void # @return [nil] intended to be void
# @api public # @api public
def polygon(opts = {}) def polygon(opts = {})
opts = needs(opts, [:range, :x, :y, :n, :circle_radius, :angle, :layout, :fill_color, :stroke_color, :stroke_width]) range = Args::CardRange.new(opts[:range], deck_size: size)
opts[:range].each do |i| draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
@cards[i].polygon(opts[:x][i], opts[:y][i], opts[:n][i], opts[:angle][i], opts[:radius][i], poly = Args::Polygon.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:fill_color][i], opts[:stroke_color][i], trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
opts[:stroke_width][i]) range.each { |i| @cards[i].polygon(poly[i], trans[i], draw[i]) }
end
end end
end end

2
lib/squib/args/arg_loader.rb

@ -65,7 +65,7 @@ module Squib
val = instance_variable_get(attribute) val = instance_variable_get(attribute)
if val.respond_to? :each if val.respond_to? :each
new_val = val.map.with_index do |v, i| new_val = val.map.with_index do |v, i|
v ||= layout[layout_args[i]][param] unless layout_args[i].nil? v ||= layout[layout_args[i].to_s][param] unless layout_args[i].nil?
v ||= default v ||= default
end end
instance_variable_set(attribute, new_val) instance_variable_set(attribute, new_val)

28
lib/squib/args/bezier.rb

@ -0,0 +1,28 @@
require 'squib/args/arg_loader'
module Squib
# @api private
module Args
class Bezier
include ArgLoader
def self.parameters
{ x1: 100, y1: 100,
cx1: 0 , cy1: 0,
x2: 150, y2: 150,
cx2: 0 , cy2: 0}
end
def self.expanding_parameters
parameters.keys # all of them
end
def self.params_with_units
parameters.keys # all of them
end
end
end
end

28
lib/squib/args/card_range.rb

@ -0,0 +1,28 @@
module Squib
# @api private
module Args
class CardRange
include Enumerable
def initialize(input, deck_size: 1)
@range = validate(input, deck_size)
end
# Hook into enumerable by delegating to @range
def each(&block)
@range.each { |i| block.call(i) }
end
private
def validate(input, deck_size)
input ||= :all # default
input = 0..(deck_size - 1) if input == :all
input = (input.to_i)..(input.to_i) if input.respond_to? :to_i
raise ArgumentError.new("#{input} must be Enumerable (i.e. respond_to :each).") unless input.respond_to? :each
raise ArgumentError.new("#{input} is outside of deck range of 0..#{deck_size-1}") if input.max > (deck_size - 1)
input
end
end
end
end

26
lib/squib/args/polygon.rb

@ -0,0 +1,26 @@
require 'squib/args/arg_loader'
module Squib
# @api private
module Args
class Polygon
include ArgLoader
def self.parameters
{ x: 0, y: 0, n: 5,
radius: 100, inner_radius: 50, outer_radius: 100}
end
def self.expanding_parameters
parameters.keys # all of them
end
def self.params_with_units
parameters.keys # all of them
end
end
end
end

25
lib/squib/args/transform.rb

@ -0,0 +1,25 @@
require 'squib/args/arg_loader'
module Squib
# @api private
module Args
class Transform
include ArgLoader
def self.parameters
{ angle: 0 }
end
def self.expanding_parameters
parameters.keys # all of them
end
def self.params_with_units
parameters.keys # all of them
end
end
end
end

27
lib/squib/args/tri.rb

@ -0,0 +1,27 @@
require 'squib/args/arg_loader'
module Squib
# @api private
module Args
class Tri
include ArgLoader
def self.parameters
{ x1: 100, y1: 100,
x2: 150, y2: 150,
x3: 100, y3: 150 }
end
def self.expanding_parameters
parameters.keys # all of them
end
def self.params_with_units
parameters.keys # all of them
end
end
end
end

22
lib/squib/graphics/cairo_context_wrapper.rb

@ -52,19 +52,23 @@ module Squib
# Convenience method for a common task # Convenience method for a common task
# @api private # @api private
def fill_n_stroke(fill_color, stroke_color, stroke_width, def fill_n_stroke(draw)
line_join = 0, line_cap = Cairo::LINE_CAP_BUTT, set_source_squibcolor draw.fill_color
dash = [])
set_source_squibcolor(fill_color)
fill_preserve fill_preserve
set_source_squibcolor(stroke_color) set_source_squibcolor draw.stroke_color
set_line_width(stroke_width) set_line_width draw.stroke_width
set_line_join(line_join) set_line_join draw.join
set_line_cap(line_cap) set_line_cap draw.cap
set_dash(dash) set_dash draw.dash
stroke stroke
end end
def rotate_about(x, y, angle)
translate(x, y)
rotate(angle)
translate(-x, -y)
end
end end
end end
end end

60
lib/squib/graphics/shapes.rb

@ -7,17 +7,18 @@ module Squib
def rect(box, draw) def rect(box, draw)
use_cairo do |cc| use_cairo do |cc|
cc.rounded_rectangle(box.x, box.y, box.width, box.height, box.x_radius, box.y_radius) cc.rounded_rectangle(box.x, box.y, box.width, box.height, box.x_radius, box.y_radius)
cc.fill_n_stroke(draw.fill_color, draw.stroke_color, draw.stroke_width, draw.join, draw.cap, draw.dash) cc.fill_n_stroke(draw)
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def circle(x, y, radius, fill_color, stroke_color, stroke_width) def circle(box, draw)
x, y, r = box.x, box.y, box.radius
use_cairo do |cc| use_cairo do |cc|
cc.move_to(x + radius, y) cc.move_to(x + r, y)
cc.circle(x, y, radius) cc.circle(x, y, r)
cc.fill_n_stroke(fill_color, stroke_color, stroke_width) cc.fill_n_stroke(draw)
end end
end end
@ -26,7 +27,8 @@ module Squib
# of the rectangle. Control points are at 1/4 and 3/4 of the side. # of the rectangle. Control points are at 1/4 and 3/4 of the side.
# :nodoc: # :nodoc:
# @api private # @api private
def ellipse(x, y, w, h, fill_color, stroke_color, stroke_width) def ellipse(box, draw)
x, y, w, h = box.x, box.y, box.width, box.height
use_cairo do |cc| use_cairo do |cc|
cc.move_to(x, y + 0.5*h) # start west cc.move_to(x, y + 0.5*h) # start west
cc.curve_to(x, y + 0.25*h, # west to north cc.curve_to(x, y + 0.25*h, # west to north
@ -41,48 +43,49 @@ module Squib
cc.curve_to(x + 0.25*w, y + h, # south to west cc.curve_to(x + 0.25*w, y + h, # south to west
x, y + 0.75*h, x, y + 0.75*h,
x, y + 0.5*h) x, y + 0.5*h)
cc.fill_n_stroke(fill_color, stroke_color, stroke_width) cc.fill_n_stroke(draw)
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def triangle(x1, y1, x2, y2, x3, y3, fill_color, stroke_color, stroke_width) def triangle(tri, draw)
use_cairo do |cc| use_cairo do |cc|
cc.triangle(x1, y1, x2, y2, x3, y3) cc.triangle(tri.x1, tri.y1, tri.x2, tri.y2, tri.x3, tri.y3)
cc.fill_n_stroke(fill_color, stroke_color, stroke_width) cc.fill_n_stroke(draw)
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def line(x1, y1, x2, y2, stroke_color, stroke_width) def line(coord, draw)
use_cairo do |cc| use_cairo do |cc|
cc.move_to(x1, y1) cc.move_to(coord.x1, coord.y1)
cc.line_to(x2, y2) cc.line_to(coord.x2, coord.y2)
cc.set_source_squibcolor(stroke_color) cc.fill_n_stroke(draw)
cc.set_line_width(stroke_width)
cc.stroke
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def curve(x1, y1, cx1, cy1, x2, y2, cx2, cy2, draw) def curve(bez, draw)
x1, y1, cx1, cy1 = bez.x1, bez.y1, bez.cx1, bez.cy1
cx2, cy2, x2, y2 = bez.cx2, bez.cy2, bez.x2, bez.y2
use_cairo do |cc| use_cairo do |cc|
cc.move_to(x1, y1) cc.move_to(x1, y1)
cc.curve_to(cx1, cy1, cx2, cy2, x2, y2) cc.curve_to(cx1, cy1, cx2, cy2, x2, y2)
cc.fill_n_stroke(draw.fill_color, draw.stroke_color, draw.stroke_width, draw.join, draw.cap) cc.fill_n_stroke(draw)
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def star(x, y, n, angle, inner_radius, outer_radius, fill_color, stroke_color, stroke_width) def star(poly, trans, draw)
x, y, n = poly.x, poly.y, poly.n
inner_radius, outer_radius = poly.inner_radius, poly.outer_radius
use_cairo do |cc| use_cairo do |cc|
cc.translate(x, y) poly.instance_eval do
cc.rotate(angle) cc.rotate_about(x, y, trans.angle)
cc.translate(-x, -y)
cc.move_to(x + outer_radius, y) #i = 0, so cos(0)=1 and sin(0)=0 cc.move_to(x + outer_radius, y) #i = 0, so cos(0)=1 and sin(0)=0
theta = Math::PI / n.to_f # i.e. (2*pi) / (2*n) theta = Math::PI / n.to_f # i.e. (2*pi) / (2*n)
0.upto(2 * n) do |i| 0.upto(2 * n) do |i|
@ -90,18 +93,18 @@ module Squib
cc.line_to(x + radius * Math::cos(i * theta), cc.line_to(x + radius * Math::cos(i * theta),
y + radius * Math::sin(i * theta)) y + radius * Math::sin(i * theta))
end end
end
cc.close_path cc.close_path
cc.fill_n_stroke(fill_color, stroke_color, stroke_width) cc.fill_n_stroke(draw)
end end
end end
# :nodoc: # :nodoc:
# @api private # @api private
def polygon(x, y, n, angle, radius, fill_color, stroke_color, stroke_width) def polygon(poly, trans, draw)
x, y, n, radius = poly.x, poly.y, poly.n, poly.radius
use_cairo do |cc| use_cairo do |cc|
cc.translate(x, y) cc.rotate_about(x, y, trans.angle)
cc.rotate(angle)
cc.translate(-x, -y)
cc.move_to(x + radius, y) # i = 0, so cos(0)=1 and sin(0)=0 cc.move_to(x + radius, y) # i = 0, so cos(0)=1 and sin(0)=0
theta = (2 * Math::PI) / n.to_f theta = (2 * Math::PI) / n.to_f
0.upto(n) do |i| 0.upto(n) do |i|
@ -109,9 +112,10 @@ module Squib
y + radius * Math::sin(i * theta)) y + radius * Math::sin(i * theta))
end end
cc.close_path cc.close_path
cc.fill_n_stroke(fill_color, stroke_color, stroke_width) cc.fill_n_stroke(draw)
end end
end end
end end
end end

9
spec/args/box_spec.rb

@ -70,6 +70,15 @@ describe Squib::Args::Box do
y: [0, 0], # Box default y: [0, 0], # Box default
) )
end end
it 'handles symbols' do
args = { layout: :attack }
box.load!(args, expand_by: 2, layout: layout)
expect(box).to have_attributes(
x: [50, 50], # set by layout
y: [0, 0], # Box default
)
end
end end
context 'unit conversion' do context 'unit conversion' do

36
spec/args/range_spec.rb

@ -0,0 +1,36 @@
require 'spec_helper'
require 'squib/args/card_range'
describe Squib::Args::CardRange do
it 'must be within the card size range' do
expect {Squib::Args::CardRange.new(2..3, deck_size: 2)}
.to raise_error(ArgumentError, '2..3 is outside of deck range of 0..1')
end
it 'defaults to range of all cards if :all' do
range = Squib::Args::CardRange.new(:all, deck_size: 5)
expect(range.to_a).to eq([0, 1, 2, 3, 4])
end
it 'creates a range of cards for singleton' do
range = Squib::Args::CardRange.new(3, deck_size: 5)
expect(range.to_a).to eq([3])
end
it 'lets arrays pass through unchanged' do
range = Squib::Args::CardRange.new([0, 2], deck_size: 5)
expect(range.to_a).to eq([0, 2])
end
it 'raises an error on everything else' do
expect { Squib::Args::CardRange.new(:foo, deck_size: 5) }
.to raise_error(ArgumentError, 'foo must be Enumerable (i.e. respond_to :each).')
end
it 'allows anything with :to_i' do
range = Squib::Args::CardRange.new(0.9, deck_size: 5)
expect(range.to_a).to eq([0])
end
end

18
spec/data/samples/basic.rb.txt

@ -19,6 +19,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -27,6 +30,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -35,6 +41,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -43,6 +52,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -51,6 +63,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -59,6 +74,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

29
spec/data/samples/draw_shapes.rb.txt

@ -9,6 +9,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[4.0, 2.0]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -17,6 +20,9 @@ cairo: set_source_color([:blue])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:red]) cairo: set_source_color([:red])
cairo: set_line_width([50.0]) cairo: set_line_width([50.0])
cairo: set_line_join([2])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -26,6 +32,9 @@ cairo: set_source_color([:gray])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:green]) cairo: set_source_color([:green])
cairo: set_line_width([8.0]) cairo: set_line_width([8.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -34,13 +43,21 @@ cairo: set_source_color([:gray])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:green]) cairo: set_source_color([:green])
cairo: set_line_width([3.0]) cairo: set_line_width([3.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
cairo: move_to([50, 550]) cairo: move_to([50, 550])
cairo: line_to([150, 650]) cairo: line_to([150, 650])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([25.0]) cairo: set_line_width([25.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -50,6 +67,9 @@ cairo: set_source_color([:burgundy])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:cyan]) cairo: set_source_color([:cyan])
cairo: set_line_width([12.0]) cairo: set_line_width([12.0])
cairo: set_line_join([0])
cairo: set_line_cap([1])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -62,6 +82,9 @@ cairo: set_source_color([:burgundy])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:cyan]) cairo: set_source_color([:cyan])
cairo: set_line_width([5.0]) cairo: set_line_width([5.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -85,6 +108,9 @@ cairo: set_source_color([:cyan])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:burgundy]) cairo: set_source_color([:burgundy])
cairo: set_line_width([3]) cairo: set_line_width([3])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -103,6 +129,9 @@ cairo: set_source_color([:cyan])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:burgundy]) cairo: set_source_color([:burgundy])
cairo: set_line_width([2]) cairo: set_line_width([2])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
surface: write_to_png(["_output/shape_00.png"]) surface: write_to_png(["_output/shape_00.png"])

3
spec/data/samples/embed_text.rb.txt

@ -9,6 +9,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

17
spec/data/samples/gradients.rb.txt

@ -6,8 +6,13 @@ cairo: restore([])
cairo: save([]) cairo: save([])
cairo: move_to([0, 600]) cairo: move_to([0, 600])
cairo: line_to([825, 600]) cairo: line_to([825, 600])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source([LinearPattern]) cairo: set_source([LinearPattern])
cairo: set_line_width([15]) cairo: set_line_width([15])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -17,6 +22,9 @@ cairo: set_source([RadialPattern])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color(["#0000"]) cairo: set_source_color(["#0000"])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -25,6 +33,9 @@ cairo: set_source([RadialPattern])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color(["#0000"]) cairo: set_source_color(["#0000"])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -33,6 +44,9 @@ cairo: set_source([LinearPattern])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color(["#0000"]) cairo: set_source_color(["#0000"])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -41,6 +55,9 @@ cairo: set_source([LinearPattern])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color(["#0000"]) cairo: set_source_color(["#0000"])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

48
spec/data/samples/hand.rb.txt

@ -44,6 +44,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -52,6 +55,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -60,6 +66,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -68,6 +77,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -76,6 +88,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -84,6 +99,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -92,6 +110,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -100,6 +121,9 @@ cairo: set_source_color([:black])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -108,6 +132,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -116,6 +143,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -124,6 +154,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -132,6 +165,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -140,6 +176,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -148,6 +187,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -156,6 +198,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -164,6 +209,9 @@ cairo: set_source_color([:white])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

3
spec/data/samples/load_images.rb.txt

@ -9,6 +9,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

48
spec/data/samples/saves.rb.txt

@ -84,6 +84,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -92,6 +95,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -100,6 +106,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -108,6 +117,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -116,6 +128,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -124,6 +139,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -132,6 +150,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -140,6 +161,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -148,6 +172,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -156,6 +183,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -164,6 +194,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -172,6 +205,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -180,6 +216,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -188,6 +227,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -196,6 +238,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -204,6 +249,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

12
spec/data/samples/showcase.rb.txt

@ -24,6 +24,9 @@ cairo: set_source_color(["#DED4B9"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -32,6 +35,9 @@ cairo: set_source_color(["#DED4B9"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -40,6 +46,9 @@ cairo: set_source_color(["#DED4B9"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -48,6 +57,9 @@ cairo: set_source_color(["#DED4B9"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

27
spec/data/samples/text_options.rb.txt

@ -19,6 +19,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -27,6 +30,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -35,6 +41,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -43,6 +52,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -51,6 +63,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -59,6 +74,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -448,6 +466,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -456,6 +477,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -464,6 +488,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

6
spec/data/samples/tgc_proofs.rb.txt

@ -9,6 +9,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -17,6 +20,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])

9
spec/data/samples/units.rb.txt

@ -9,6 +9,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -17,6 +20,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
cairo: save([]) cairo: save([])
@ -25,6 +31,9 @@ cairo: set_source_color(["#0000"])
cairo: fill_preserve([]) cairo: fill_preserve([])
cairo: set_source_color([:black]) cairo: set_source_color([:black])
cairo: set_line_width([2.0]) cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([]) cairo: stroke([])
cairo: restore([]) cairo: restore([])
surface: write_to_png(["_output/units_00.png"]) surface: write_to_png(["_output/units_00.png"])

86
spec/graphics/graphics_shapes_spec.rb

@ -1,86 +0,0 @@
require 'spec_helper'
require 'squib'
describe Squib::Card do
let(:deck) { double(Squib::Deck) }
let(:cxt) { double(Cairo::Context) }
def expect_stroke(cxt, fill_color, stroke_color, stroke_width)
expect(cxt).to receive(:set_source_color).with(fill_color).once
expect(cxt).to receive(:fill_preserve).once
expect(cxt).to receive(:set_source_color).with(stroke_color).once
expect(cxt).to receive(:set_line_width).with(stroke_width).once
expect(cxt).to receive(:stroke).once
end
before(:each) do
allow(Cairo::Context).to receive(:new).and_return(cxt)
allow(deck).to receive(:dir).and_return('_output')
allow(deck).to receive(:count_format).and_return('%02d')
allow(deck).to receive(:prefix).and_return('card_')
allow(deck).to receive(:antialias).and_return('subpixel')
allow(deck).to receive(:backend).and_return('memory')
end
context 'rect' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:rounded_rectangle).with(37, 38, 50, 100, 10, 15).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
# rect(Args::Box, x_radius, y_radius, Args::Draw)
box = OpenStruct.new(x: 37, y: 38, width: 50, height: 100, x_radius: 10, y_radius: 15)
draw = OpenStruct.new(fill_color: '#fff', stroke_color: '#f00', stroke_width: 2.0)
card.rect(box, draw)
end
end
context 'circle' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:move_to).with(137, 38)
expect(cxt).to receive(:circle).with(37, 38, 100).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
# circle(x, y, radius,
# fill_color, stroke_color, stroke_width)
card.circle(37, 38, 100, '#fff', '#f00', 2.0)
end
end
context 'triangle' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:triangle).with(1, 2, 3, 4, 5, 6).once
expect_stroke(cxt, '#fff', '#f00', 2.0)
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
card.triangle(1, 2, 3, 4, 5, 6, '#fff', '#f00', 2.0)
end
end
context 'line' do
it 'make all the expected calls on a smoke test' do
expect(cxt).to receive(:antialias=).with('subpixel')
expect(cxt).to receive(:save).once
expect(cxt).to receive(:move_to).with(1, 2).once
expect(cxt).to receive(:line_to).with(3, 4).once
expect(cxt).to receive(:set_source_color).with('#fff').once
expect(cxt).to receive(:set_line_width).with(2.0).once
expect(cxt).to receive(:stroke).once
expect(cxt).to receive(:restore).once
card = Squib::Card.new(deck, 100, 150)
card.line(1, 2, 3, 4, '#fff', 2.0)
end
end
end

2
spec/spec_helper.rb

@ -104,7 +104,7 @@ def mock_cairo(strio)
set_line_width stroke fill set_source scale render_rsvg_handle circle set_line_width stroke fill set_source scale render_rsvg_handle circle
triangle line_to operator= show_page clip transform mask rectangle triangle line_to operator= show_page clip transform mask rectangle
reset_clip antialias= curve_to matrix= pango_layout_path stroke_preserve reset_clip antialias= curve_to matrix= pango_layout_path stroke_preserve
fill_preserve close_path).each do |m| fill_preserve close_path set_dash set_line_cap set_line_join).each do |m|
allow(cxt).to receive(m) { |*args| strio << scrub_hex("cairo: #{m}(#{args})\n") } allow(cxt).to receive(m) { |*args| strio << scrub_hex("cairo: #{m}(#{args})\n") }
end end

3
squib.sublime-project vendored

@ -1,4 +1,6 @@
{ {
"tab_size": 2,
"translate_tabs_to_spaces": true,
"folders": "folders":
[ [
{ {
@ -21,6 +23,7 @@
// {"name": "rake run[csv_import]", "shell_cmd": "rake run[csv_import]",}, // {"name": "rake run[csv_import]", "shell_cmd": "rake run[csv_import]",},
// {"name": "rake run[custom_config]", "shell_cmd": "rake run[custom_config]",}, // {"name": "rake run[custom_config]", "shell_cmd": "rake run[custom_config]",},
{"name": "rake run[draw_shapes]", "shell_cmd": "rake run[draw_shapes]",}, {"name": "rake run[draw_shapes]", "shell_cmd": "rake run[draw_shapes]",},
{"name": "rake run[layouts]", "shell_cmd": "rake run[layouts]",},
// {"name": "rake run[embed_text]", "shell_cmd": "rake run[embed_text]",}, // {"name": "rake run[embed_text]", "shell_cmd": "rake run[embed_text]",},
// {"name": "rake run[load_images]", "shell_cmd": "rake run[load_images]",}, // {"name": "rake run[load_images]", "shell_cmd": "rake run[load_images]",},
// {"name": "rake run[text_options]", "shell_cmd": "rake run[text_options]",}, // {"name": "rake run[text_options]", "shell_cmd": "rake run[text_options]",},

Loading…
Cancel
Save