Module: Prawn::Document::GraphicsState

Included in:
Prawn::Document
Defined in:
lib/prawn/document/graphics_state.rb

Instance Method Summary collapse

Instance Method Details

#close_graphics_stateObject



101
102
103
# File 'lib/prawn/document/graphics_state.rb', line 101

def close_graphics_state
  add_content "Q"
end

#graphic_stackObject



125
126
127
# File 'lib/prawn/document/graphics_state.rb', line 125

def graphic_stack
  state.page.stack
end

#graphic_stateObject



129
130
131
132
# File 'lib/prawn/document/graphics_state.rb', line 129

def graphic_state
  save_graphics_state unless graphic_stack.current_state
  graphic_stack.current_state 
end

#open_graphics_stateObject

Pushes the current graphics state on to the graphics state stack so we can restore it when finished with a change we want to isolate (such as modifying the transformation matrix). Used in pairs with restore_graphics_state or passed a block

Example without a block:

save_graphics_state
rotate 30
text "rotated text"
restore_graphics_state

Example with a block:

save_graphics_state do
  rotate 30
  text "rotated text"
end


97
98
99
# File 'lib/prawn/document/graphics_state.rb', line 97

def open_graphics_state
  add_content "q"
end

#restore_graphics_stateObject

Pops the last saved graphics state off the graphics state stack and restores the state to those values



116
117
118
119
120
121
122
123
# File 'lib/prawn/document/graphics_state.rb', line 116

def restore_graphics_state
  if graphic_stack.empty?
    raise Prawn::Errors::EmptyGraphicStateStack, 
      "\n You have reached the end of the graphic state stack" 
  end
  close_graphics_state 
  graphic_stack.restore_graphic_state
end

#save_graphics_state(graphic_state = nil) ⇒ Object



105
106
107
108
109
110
111
112
# File 'lib/prawn/document/graphics_state.rb', line 105

def save_graphics_state(graphic_state = nil)
  graphic_stack.save_graphic_state(graphic_state)
  open_graphics_state
  if block_given?
    yield
    restore_graphics_state
  end
end