|
1
|
1 |
|
require_relative "image_link" |
|
2
|
|
|
|
|
3
|
1 |
|
module Resume |
|
4
|
1 |
|
module PDF |
|
5
|
1 |
|
module SocialMediaLogoSet |
|
6
|
1 |
|
module_function |
|
7
|
|
|
|
|
8
|
1 |
|
def generate(pdf, logo_set) |
|
9
|
1 |
|
top_padding, horizontal_rule_colour = |
|
10
|
|
|
logo_set.values_at(:top_padding, :horizontal_rule_colour) |
|
11
|
1 |
|
pdf.move_down(top_padding) |
|
12
|
1 |
|
generate_logos(pdf, logo_set) |
|
13
|
1 |
|
pdf.stroke_horizontal_rule { color(horizontal_rule_colour) } |
|
14
|
|
|
end |
|
15
|
|
|
|
|
16
|
1 |
|
def generate_logos(pdf, logo_set) |
|
17
|
1 |
|
logos = entire_logo_properties(logo_set) |
|
18
|
1 |
|
generate_logo_for(logos.first, pdf, logo_set) |
|
19
|
1 |
|
generate_logos_for(logos[1..-1], pdf, logo_set) |
|
20
|
1 |
|
pdf.move_down(logo_set[:bottom_padding]) |
|
21
|
|
|
end |
|
22
|
1 |
|
private_class_method :generate_logos |
|
23
|
|
|
|
|
24
|
1 |
|
def entire_logo_properties(logo_set) |
|
25
|
1 |
|
logo_set[:logos].values.map do |values| |
|
26
|
12 |
|
values.merge(logo_set[:logo_properties]) |
|
27
|
|
|
end |
|
28
|
|
|
end |
|
29
|
1 |
|
private_class_method :entire_logo_properties |
|
30
|
|
|
|
|
31
|
1 |
|
def generate_logo_for(logo, pdf, logo_set) |
|
32
|
12 |
|
x_position = logo_set[:x_position] |
|
33
|
12 |
|
pdf.bounding_box([x_position, pdf.cursor], width: logo[:width]) do |
|
34
|
12 |
|
ImageLink.generate(pdf, logo) |
|
35
|
|
|
end |
|
36
|
|
|
# Slightly cheating by keeping state in the logo set hash |
|
37
|
12 |
|
logo_set[:x_position] = x_position + logo_set[:padded_logo_width] |
|
38
|
|
|
end |
|
39
|
1 |
|
private_class_method :generate_logo_for |
|
40
|
|
|
|
|
41
|
1 |
|
def generate_logos_for(logos, pdf, logo_set) |
|
42
|
1 |
|
logos.each do |logo| |
|
43
|
11 |
|
pdf.move_up(logo_set[:padded_logo_height]) |
|
44
|
11 |
|
generate_logo_for(logo, pdf, logo_set) |
|
45
|
|
|
end |
|
46
|
|
|
end |
|
47
|
1 |
|
private_class_method :generate_logos |
|
48
|
|
|
end |
|
49
|
|
|
end |
|
50
|
|
|
end |
|
51
|
|
|
|