@@ -113,5 +113,26 @@ module Squib
|
||||
end
|
||||
end
|
||||
|
||||
# Draw a curve using the given coordinates
|
||||
#
|
||||
# @option opts range [Enumerable, :all] (:all) the range of cards over which this will be rendered. See {file:README.md#Specifying_Ranges Specifying Ranges}
|
||||
# @option opts x1 [Integer] (0) the x-coordinate to place. Supports Unit Conversion, see {file:README.md#Units Units}.
|
||||
# @option opts y1 [Integer] (0) the y-coordinate to place. Supports Unit Conversion, see {file:README.md#Units Units}.
|
||||
# @option opts x2 [Integer] (50) the x-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_width [Decimal] (2.0) the width of the outside stroke. Supports Unit Conversion, see {file:README.md#Units Units}.
|
||||
# @return [nil] intended to be void
|
||||
# @api public
|
||||
def curve(opts = {})
|
||||
opts = needs(opts, [:range, :x1, :y1, :dx1, :dy1, :x2, :y2, :dx2, :dy2,
|
||||
:layout, :fill_color, :stroke_color, :stroke_width])
|
||||
opts[:range].each do |i|
|
||||
@cards[i].curve(opts[:x1][i], opts[:y1][i], opts[:dx1][i], opts[:dy1][i],
|
||||
opts[:x2][i], opts[:y2][i], opts[:dx2][i], opts[:dy2][i],
|
||||
opts[:fill_color][i], opts[:stroke_color][i], opts[:stroke_width][i])
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,6 +12,10 @@ module Squib
|
||||
:count_format => '%02d',
|
||||
:default_font => 'Arial 36',
|
||||
:dir => '_output',
|
||||
:dx1 => 0,
|
||||
:dx2 => 0,
|
||||
:dy1 => 0,
|
||||
:dy2 => 0,
|
||||
:ellipsize => :end,
|
||||
:face => :left,
|
||||
:fill_color => '#0000',
|
||||
@@ -97,6 +101,10 @@ module Squib
|
||||
:blend => :blend,
|
||||
:circle_radius => :radius,
|
||||
:color => :color,
|
||||
:dx1 => :dx1,
|
||||
:dx2 => :dx2,
|
||||
:dy1 => :dy1,
|
||||
:dy2 => :dy2,
|
||||
:ellipsize => :ellipsize,
|
||||
:files => :file,
|
||||
:fill_color => :fill_color,
|
||||
|
||||
@@ -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=
|
||||
:antialias=, :curve_to
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
|
||||
@@ -58,5 +58,21 @@ module Squib
|
||||
end
|
||||
end
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def curve(x1, y1, dx1, dy1, x2, y2, dx2, dy2, fill_color, stroke_color, stroke_width)
|
||||
use_cairo do |cc|
|
||||
cc.move_to(x1, y1)
|
||||
cc.curve_to(dx1, dy1, dx2, dy2, x2, y2)
|
||||
cc.set_line_width(stroke_width)
|
||||
cc.set_source_squibcolor(stroke_color)
|
||||
cc.stroke
|
||||
cc.move_to(x1, y1)
|
||||
cc.curve_to(dx1, dy1, dx2, dy2, x2, y2)
|
||||
cc.set_source_squibcolor(fill_color)
|
||||
cc.fill
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user