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 49
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 63
def dash_setting
  return '[] 0 d' unless @dash[:dash]

  array =
    if @dash[:dash].is_a?(Array)
      @dash[:dash]
    else
      [@dash[:dash], @dash[:space]]
    end

  "[#{PDF::Core.real_params(array)}] "\
    "#{PDF::Core.real(@dash[:phase])} d"
end

Private Instance Methods

initialize_copy(other) click to toggle source
# File lib/pdf/core/graphics_state.rb, line 79
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