Add Blueprint template

This commit is contained in:
Sam Liu 2025-10-16 20:51:48 -04:00
parent 53c66c2dee
commit c91b963ae9
No known key found for this signature in database
GPG key ID: 89C23D80BD873572
5 changed files with 83 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

View file

@ -0,0 +1,83 @@
# frozen_string_literal: true
module SnailMail
module Components
module Templates
class BlueprintTemplate < TemplateBase
def self.template_name = "Blueprint"
def self.show_on_single? = true
def view_template
image(
image_path("blueprint/bg.png"),
at: [ -15, 305 ],
width: 465,
)
image(
image_path("blueprint/panda.png"),
at: [ 10, 125 ],
width: 110,
)
self.line_width = 2
stroke { rectangle([ 108, 210 ], 306, 122) }
image(
image_path("blueprint/logo-tilted.png"),
at: [ -10, 255 ],
width: 150,
)
image(
image_path("blueprint/gears.png"),
at: [ 142, 258 ],
width: 70,
)
# Render return address
render_return_address(10, 278, 260, 70, size: 10, font: "f25")
if letter.rubber_stamps.present?
font("f25") do
text_box(
letter.rubber_stamps,
at: [ 140, 70 ],
width: 150,
height: 51,
overflow: :shrink_to_fit,
disable_wrap_by_char: false,
min_size: 0.5,
valign: :top
)
end
end
# Render destination address in speech bubble
render_destination_address(
128,
195,
266,
71,
size: 16, valign: :center, align: :left,
)
# Render IMb barcode
render_imb(128, 118, 266)
# Custom QR code
if options[:include_qr_code]
SnailMail::QRCodeGenerator.generate_qr_code(self, "https://hack.club/#{letter.public_id}", 360, 73, 60)
font("f25") do
text_box("scan this so we know you got it!", at: [ 360 - 60, 73 - 36 ], width: 54, size: 6.4, align: :right)
end
end
render_letter_id(340, 25, 10)
render_postage
end
end
end
end
end