From 5cc8b60c6f8d311bc5de9140f1057cb359b89753 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Sat, 16 Mar 2024 23:00:42 +0300 Subject: [PATCH] feat(packages): Add watermark package and trigger from build variable Closes #154 --- packages/watermark.lua | 49 ++++++++++++++++++++++++++++++++++++++++++ rules/rules.mk | 5 +++++ 2 files changed, 54 insertions(+) create mode 100644 packages/watermark.lua diff --git a/packages/watermark.lua b/packages/watermark.lua new file mode 100644 index 00000000..2a9b618a --- /dev/null +++ b/packages/watermark.lua @@ -0,0 +1,49 @@ +local base = require("packages.base") + +local package = pl.class(base) +package._name = "watermark" + +local text = os.getenv("CASILE_WATERMARK") or "DRAFT" + +function package:_init(options) + if options.text then text = options.text end + base._init(self, options) + self:loadPackage("rotate") + self.class:registerHook("newpage", self.addWatermark) + self:addWatermark() +end + +function package:addWatermark () + local page = SILE.getFrame("page") + local frame = SILE.newFrame({ + id = "watermark", + left = "left(page)+20", + right = "right(page)-20", + top = "top(page)+20", + bottom = "bottom(page)-20" + }) + SILE.documentState.thisPageTemplate.frames.watermark = frame + SILE.typesetNaturally(frame, SILE.Commands["watermark:content"]) +end + +function package:registerCommands () + + SILE.registerCommand("watermark:content", function (_, _) + SILE.call("hbox") + SILE.call("skip", { height = "20%fh" }) + SILE.call("center", {}, function () + SILE.call("color", { color = "#fafafa" }, function () + SILE.call("rotate", { angle = -35 }, function () + SILE.call("font", { family = "TeX Gyre Heros", weight = 900, size = "8%fw" }, { text }) + end) + SILE.call("skip", { height = "20%fh" }) + SILE.call("rotate", { angle = -35 }, function () + SILE.call("font", { family = "TeX Gyre Heros", weight = 900, size = "8%fw" }, { text }) + end) + end) + end) + end) + +end + +return package diff --git a/rules/rules.mk b/rules/rules.mk index 2f81b73f..23a2062f 100644 --- a/rules/rules.mk +++ b/rules/rules.mk @@ -430,6 +430,11 @@ $(FULLPDFS): %.pdf: $(BUILDDIR)/%.sil $$(call coverpreq,$$@) $$(call onpaperlibs rm $*.tmp.pdf fi +ifneq ($(WATERMARK),) +export CASILE_WATERMARK = $(WATERMARK) +$(FULLPDFS): SILEFLAGS += --use packages.watermark +endif + DISTFILES += $(FULLPDFS) PANDOCTEMPLATE ?= $(CASILEDIR)/template.sil