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_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
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_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
# File lib/prawn/graphics/transparency.rb, line 53 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
Private Instance Methods
next_opacity_dictionary_id()
click to toggle source
# File lib/prawn/graphics/transparency.rb, line 71 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 75 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.merge!(dictionary_name => dictionary) dictionary_name end
opacity_dictionary_registry()
click to toggle source
# File lib/prawn/graphics/transparency.rb, line 67 def opacity_dictionary_registry @opacity_dictionary_registry ||= {} end