Module: Prawn::Graphics::Transparency

Included in:
Prawn::Graphics
Defined in:
lib/prawn/graphics/transparency.rb

Overview

The Prawn::Transparency module is used to place transparent content on the page. It has the capacity for separate transparency values for stroked content and all other content.

Example:

# both the fill and stroke will be at 50% opacity
pdf.transparent(0.5) do
  pdf.text("hello world")
  pdf.fill_and_stroke_circle_at([x, y], :radius => 25)
end

# the fill will be at 50% opacity, but the stroke will
# be at 75% opacity
pdf.transparent(0.5, 0.75) do
  pdf.text("hello world")
  pdf.fill_and_stroke_circle_at([x, y], :radius => 25)
end

Instance Method Summary collapse

Instance Method Details

#transparent(opacity, stroke_opacity = opacity, &block) ⇒ Object

Sets the opacity and stroke_opacity for all the content within the block If stroke_opacity is not provided, then it takes on the same value as opacity

Valid ranges for both paramters are 0.0 to 1.0

Example:

# both the fill and stroke will be at 50% opacity
pdf.transparent(0.5) do
  pdf.text("hello world")
  pdf.fill_and_stroke_circle_at([x, y], :radius => 25)
end

# the fill will be at 50% opacity, but the stroke will
# be at 75% opacity
pdf.transparent(0.5, 0.75) do
  pdf.text("hello world")
  pdf.fill_and_stroke_circle_at([x, y], :radius => 25)
end


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/prawn/graphics/transparency.rb', line 54

def transparent(opacity, stroke_opacity=opacity, &block)
  min_version(1.4)

  opacity        = [[opacity, 0.0].max, 1.0].min
  stroke_opacity = [[stroke_opacity, 0.0].max, 1.0].min

  save_graphics_state
  add_content "/#{opacity_dictionary_name(opacity, stroke_opacity)} gs"
  yield if block_given?
  restore_graphics_state
end