Sha256: 9828eb488ac83676c78058e1531b7d9ce6b46329adf302e12b2a1b407a3b8191
Contents?: true
Size: 1.94 KB
Versions: 16
Compression:
Stored size: 1.94 KB
Contents
# encoding: utf-8 # dash.rb : Implements stroke dashing # # Contributed by Daniel Nelson. October, 2009 # # This is free software. Please see the LICENSE and COPYING files for details. # module Prawn module Graphics module Dash # Sets the dash pattern for stroked lines and curves # # length is the length of the dash. If options is not present, # or options[:space] is nil, then length is also the length of # the space between dashes # # options may contain :space and :phase # :space is the space between the dashes # :phase is where in the cycle to begin dashing. For # example, a phase of 0 starts at the beginning of # the dash; whereas, if the phase is equal to the # length of the dash, then stroking will begin at # the beginning of the space. Default is 0 # # integers or floats may be used for length and the options # # dash units are in PDF points ( 1/72 in ) # def dash(length=nil, options={}) return @dash || undash_hash if length.nil? @dash = { :dash => length, :space => options[:space] || length, :phase => options[:phase] || 0 } write_stroke_dash end alias_method :dash=, :dash # Stops dashing, restoring solid stroked lines and curves # def undash @dash = undash_hash write_stroke_dash end # Returns when stroke is dashed, false otherwise # def dashed? dash != undash_hash end private def undash_hash { :dash => nil, :space => nil, :phase => 0 } end def write_stroke_dash if @dash[:dash].nil? add_content "[] 0 d" return end add_content "[#{@dash[:dash]} #{@dash[:space]}] #{@dash[:phase]} d" end end end end
Version data entries
16 entries across 16 versions & 7 rubygems