Module | Prawn::Graphics::Transformation
In: | lib/prawn/graphics/transformation.rb

### Methods

rotate scale transformation_matrix translate

### Public Instance methods

rotate(angle, options={}, &block)

Rotate the user space. If a block is not provided, then you must save and restore the graphics state yourself.

## Options

`:origin`: | `[number, number]`. The point around which to rotate. A block must be provided if using the :origin

raises `Prawn::Errors::BlockRequired` if an :origin option is provided, but no block is given

Example without a block:

      save_graphics_state
      rotate 30
      text "rotated text"
      restore_graphics_state

Example with a block: rotating a rectangle around its upper-left corner

      x = 300
      y = 300
      width = 150
      height = 200
      angle = 30
      pdf.rotate(angle, :origin => [x, y]) do
        pdf.stroke_rectangle([x, y], width, height)
      end

scale(factor, options={}, &block)

Scale the user space. If a block is not provided, then you must save and restore the graphics state yourself.

## Options

`:origin`: | `[number, number]`. The point from which to scale. A block must be provided if using the :origin

raises `Prawn::Errors::BlockRequired` if an :origin option is provided, but no block is given

Example without a block:

      save_graphics_state
      scale 1.5
      text "scaled text"
      restore_graphics_state

Example with a block: scale a rectangle from its upper-left corner

      x = 300
      y = 300
      width = 150
      height = 200
      factor = 1.5
      pdf.scale(angle, :origin => [x, y]) do
        pdf.stroke_rectangle([x, y], width, height)
      end

transformation_matrix(a, b, c, d, e, f) {|| ...}

Transform the user space (see notes for rotate regarding graphics state) Generally, one would use the rotate, scale, translate, and skew convenience methods instead of calling transformation_matrix directly

translate(x, y, &block)

Translate the user space. If a block is not provided, then you must save and restore the graphics state yourself.

Example without a block: move the text up and over 10

      save_graphics_state
      translate(10, 10)
      text "scaled text"
      restore_graphics_state

Example with a block: draw a rectangle with its upper-left corner at

                          x + 10, y + 10

      x = 300
      y = 300
      width = 150
      height = 200
      pdf.translate(10, 10) do
        pdf.stroke_rectangle([x, y], width, height)
      end

[Validate]