This adds a slide number to the bottom (left, right or middle) of the
slide. It uses the index in the fontlist to specify the font size for
the slide number. 

known issue: number is not shown on image slides. future work.

cheers
--s
>From 7faec195d93d0dce7f494c24ebb4a7b563df4729 Mon Sep 17 00:00:00 2001
From: ssd <s...@mailless.org>
Date: Sat, 2 Sep 2017 02:55:55 +0200
Subject: [sent] add slide numbers (configure position + font size)
To: hackers@suckless.org

---
 config.def.h |  4 ++++
 sent.c       | 12 ++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/config.def.h b/config.def.h
index f66d121..d82fb27 100644
--- a/config.def.h
+++ b/config.def.h
@@ -15,6 +15,10 @@ static const char *colors[] = {
 
 static const float linespacing = 1.4;
 
+/* slide numbers: fonts[numfontidx] will be used to display them */
+static const int numfontidx = 1;
+static const int numpos = 1; /* -1: left, 0: middle, 1: right, any: none*/
+
 /* how much screen estate is to be used at max for the content */
 static const float usablewidth = 0.75;
 static const float usableheight = 0.75;
diff --git a/sent.c b/sent.c
index 6cf53ff..1f84f83 100644
--- a/sent.c
+++ b/sent.c
@@ -483,10 +483,13 @@ xdraw()
 {
 	unsigned int height, width, i;
 	Image *im = slides[idx].img;
+	char idxstr[16];
 
 	getfontsize(&slides[idx], &width, &height);
 	XClearWindow(xw.dpy, xw.win);
 
+	snprintf(idxstr, 16, "%d", idx);
+
 	if (!im) {
 		drw_rect(d, 0, 0, xw.w, xw.h, 1, 1);
 		for (i = 0; i < slides[idx].linecount; i++)
@@ -498,6 +501,15 @@ xdraw()
 			         0,
 			         slides[idx].lines[i],
 			         0);
+		drw_setfontset(d, fonts[numfontidx]);
+		drw_text(d,
+			xw.w / 2 + numpos * (xw.w / 2 - 3 * fonts[numfontidx]->h),
+			xw.h - 3 * fonts[numfontidx]->h,
+			4 * d->fonts->h,
+			d->fonts->h,
+			1,
+			idxstr,
+			0);
 		drw_map(d, xw.win, 0, 0, xw.w, xw.h);
 	} else {
 		if (!(im->state & SCALED))
-- 
2.13.2

Reply via email to