1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
# frozen_string_literal: true
# join_style.rb : Implements stroke join styling
#
# Contributed by Daniel Nelson. October, 2009
#
# This is free software. Please see the LICENSE and COPYING files for details.
#
module Prawn
module Graphics
module JoinStyle
JOIN_STYLES = { miter: 0, round: 1, bevel: 2 }.freeze
# @group Stable API
# Sets the join style for stroked lines and curves
#
# style is one of :miter, :round, or :bevel
#
# NOTE: if this method is never called, :miter will be used for join style
# throughout the document
#
def join_style(style = nil)
return current_join_style || :miter if style.nil?
self.current_join_style = style
unless JOIN_STYLES.key?(current_join_style)
raise Prawn::Errors::InvalidJoinStyle,
"#{style} is not a recognized join style. Valid styles are " +
JOIN_STYLES.keys.join(', ')
end
write_stroke_join_style
end
alias join_style= join_style
private
def current_join_style
graphic_state.join_style
end
def current_join_style=(style)
graphic_state.join_style = style
end
def write_stroke_join_style
renderer.add_content "#{JOIN_STYLES[current_join_style]} j"
end
end
end
end
|