# frozen_string_literal: true

require 'prawn/manual_builder'

Prawn::ManualBuilder::Chapter.new do
  title 'Transparency'

  text do
    prose <<~TEXT
      Although the name of the method is <code>transparency</code>, what we are
      actually setting is the opacity for fill and stroke. So <code>0</code>
      means completely transparent and <code>1.0</code> means completely
      opaque.

      You may call it providing one or two values. The first value sets fill
      opacity and the second value sets stroke opacity. If the second value is
      omitted fill and stroke will have the same opacity.
    TEXT
  end

  example do
    self.line_width = 5
    fill_color 'ff0000'
    fill_rectangle [0, 100], 500, 100

    fill_color '000000'
    stroke_color 'ffffff'

    base_x = 100
    [[0.5, 1], 0.5, [1, 0.5]].each do |args|
      transparent(*args) do
        fill_circle [base_x, 100], 50
        stroke_rectangle [base_x - 20, 100], 40, 80
      end

      base_x += 150
    end
  end
end
