File: gradients.rb

package info (click to toggle)
ruby-prawn 2.2.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 4,320 kB
  • sloc: ruby: 15,654; sh: 43; makefile: 20
file content (41 lines) | stat: -rw-r--r-- 1,531 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Note that because of the way PDF renders radial gradients in order to get
# solid fill your start circle must be fully inside your end circle.
# Otherwise you will get triangle fill like illustrated in the example below.

require_relative '../example_helper'

filename = File.basename(__FILE__).gsub('.rb', '.pdf')
Prawn::ManualBuilder::Example.generate(filename) do
  self.line_width = 10

  # Linear Gradients
  fill_gradient [0, 250], [100, 150], 'ff0000', '0000ff'
  fill_rectangle [0, 250], 100, 100

  stroke_gradient [150, 150], [250, 250], '00ffff', 'ffff00'
  stroke_rectangle [150, 250], 100, 100

  fill_gradient [300, 250], [400, 150], 'ff0000', '0000ff'
  stroke_gradient [300, 150], [400, 250], '00ffff', 'ffff00'
  fill_and_stroke_rectangle [300, 250], 100, 100

  rotate 45, origin: [500, 200] do
    stops = { 0 => 'ff0000', 0.6 => '999900', 0.8 => '00cc00', 1 => '4444ff' }
    fill_gradient from: [460, 240], to: [540, 160], stops: stops
    fill_rectangle [460, 240], 80, 80
  end

  # Radial gradients
  fill_gradient [50, 50], 0, [50, 50], 70.71, 'ff0000', '0000ff'
  fill_rectangle [0, 100], 100, 100

  stroke_gradient [200, 50], 45, [200, 50], 70.71, '00ffff', 'ffff00'
  stroke_rectangle [150, 100], 100, 100

  stroke_gradient [350, 50], 45, [350, 50], 70.71, '00ffff', 'ffff00'
  fill_gradient [350, 50], 0, [350, 50], 70.71, 'ff0000', '0000ff'
  fill_and_stroke_rectangle [300, 100], 100, 100

  fill_gradient [500, 100], 50, [500, 0], 0, 'ff0000', '0000ff'
  fill_rectangle [450, 100], 100, 100
end