class PDF::Core::GraphicState

NOTE: This class may be a good candidate for a copy-on-write hash.

Attributes

cap_style[RW]
color_space[RW]
dash[RW]
fill_color[RW]
join_style[RW]
line_width[RW]
stroke_color[RW]

Public Class Methods

new(previous_state = nil) click to toggle source
# File lib/pdf/core/graphics_state.rb, line 50
def initialize(previous_state = nil)
  if previous_state
    initialize_copy(previous_state)
  else
    @color_space  = {}
    @fill_color   = "000000"
    @stroke_color = "000000"
    @dash         = { :dash => nil, :space => nil, :phase => 0 }
    @cap_style    = :butt
    @join_style   = :miter
    @line_width   = 1
  end
end

Public Instance Methods

dash_setting() click to toggle source
# File lib/pdf/core/graphics_state.rb, line 64
def dash_setting
  if @dash[:dash].kind_of?(Array)
    "[#{@dash[:dash].join(' ')}] #{@dash[:phase]} d"
  else
    "[#{@dash[:dash]} #{@dash[:space]}] #{@dash[:phase]} d"
  end
end

Private Instance Methods

initialize_copy(other) click to toggle source
# File lib/pdf/core/graphics_state.rb, line 74
def initialize_copy(other)
  # mutable state
  @color_space  = other.color_space.dup
  @fill_color   = other.fill_color.dup
  @stroke_color = other.stroke_color.dup
  @dash         = other.dash.dup

  # immutable state that doesn't need to be duped
  @cap_style    = other.cap_style
  @join_style   = other.join_style
  @line_width   = other.line_width
end