module Prawn::Graphics::Transparency
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([x, y], 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([x, y], 25) end
Public Instance Methods
transparent(opacity, stroke_opacity = opacity) { || ... }
click to toggle source
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([x, y], 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([x, y], 25) end
# File lib/prawn/graphics/transparency.rb, line 52 def transparent(opacity, stroke_opacity = opacity) renderer.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 renderer.add_content( "/#{opacity_dictionary_name(opacity, stroke_opacity)} gs" ) yield restore_graphics_state end
Private Instance Methods
next_opacity_dictionary_id()
click to toggle source
# File lib/prawn/graphics/transparency.rb, line 72 def next_opacity_dictionary_id opacity_dictionary_registry.length + 1 end
opacity_dictionary_name(opacity, stroke_opacity)
click to toggle source
# File lib/prawn/graphics/transparency.rb, line 76 def opacity_dictionary_name(opacity, stroke_opacity) key = "#{opacity}_#{stroke_opacity}" if opacity_dictionary_registry[key] dictionary = opacity_dictionary_registry[key][:obj] dictionary_name = opacity_dictionary_registry[key][:name] else dictionary = ref!( Type: :ExtGState, CA: stroke_opacity, ca: opacity ) dictionary_name = "Tr#{next_opacity_dictionary_id}" opacity_dictionary_registry[key] = { name: dictionary_name, obj: dictionary } end page.ext_gstates[dictionary_name] = dictionary dictionary_name end
opacity_dictionary_registry()
click to toggle source
# File lib/prawn/graphics/transparency.rb, line 68 def opacity_dictionary_registry @opacity_dictionary_registry ||= {} end