| sent-pdf-e3b86c2.diff - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| sent-pdf-e3b86c2.diff (3295B) | |
| --- | |
| 1 From e3b86c2910111f7bb004833c8036122d5256ba3c Mon Sep 17 00:00:00 2001 | |
| 2 From: Bryce Vandegrift <[email protected]> | |
| 3 Date: Sun, 23 Apr 2023 14:03:40 -0400 | |
| 4 Subject: [PATCH] Use default filename if reading stdin | |
| 5 | |
| 6 --- | |
| 7 config.def.h | 1 + | |
| 8 config.mk | 7 +++++-- | |
| 9 sent.c | 45 +++++++++++++++++++++++++++++++++++++++++---- | |
| 10 3 files changed, 47 insertions(+), 6 deletions(-) | |
| 11 | |
| 12 diff --git a/config.def.h b/config.def.h | |
| 13 index 60eb376..26c01b4 100644 | |
| 14 --- a/config.def.h | |
| 15 +++ b/config.def.h | |
| 16 @@ -47,6 +47,7 @@ static Shortcut shortcuts[] = { | |
| 17 { XK_n, advance, {.i = +1} }, | |
| 18 { XK_p, advance, {.i = -1} }, | |
| 19 { XK_r, reload, {0} }, | |
| 20 + { XK_g, pdf, {0} }, | |
| 21 }; | |
| 22 | |
| 23 static Filter filters[] = { | |
| 24 diff --git a/config.mk b/config.mk | |
| 25 index d61c554..9174687 100644 | |
| 26 --- a/config.mk | |
| 27 +++ b/config.mk | |
| 28 @@ -7,14 +7,17 @@ VERSION = 1 | |
| 29 PREFIX = /usr/local | |
| 30 MANPREFIX = ${PREFIX}/share/man | |
| 31 | |
| 32 +PKG_CONFIG = pkg-config | |
| 33 + | |
| 34 X11INC = /usr/X11R6/include | |
| 35 X11LIB = /usr/X11R6/lib | |
| 36 | |
| 37 # includes and libs | |
| 38 INCS = -I. -I/usr/include -I/usr/include/freetype2 -I${X11INC} | |
| 39 -LIBS = -L/usr/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11 | |
| 40 +LIBS = -L/usr/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11 -lcairo | |
| 41 # OpenBSD (uncomment) | |
| 42 -#INCS = -I. -I${X11INC} -I${X11INC}/freetype2 | |
| 43 +INCS = -I. -I${X11INC} -I${X11INC}/freetype2 `${PKG_CONFIG} --cflags ca… | |
| 44 +LIBS += -L/usr/local/lib | |
| 45 # FreeBSD (uncomment) | |
| 46 #INCS = -I. -I/usr/local/include -I/usr/local/include/freetype2 -I${X11… | |
| 47 #LIBS = -L/usr/local/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11 | |
| 48 diff --git a/sent.c b/sent.c | |
| 49 index dfadd3a..a935554 100644 | |
| 50 --- a/sent.c | |
| 51 +++ b/sent.c | |
| 52 @@ -19,6 +19,10 @@ | |
| 53 #include <X11/Xutil.h> | |
| 54 #include <X11/Xft/Xft.h> | |
| 55 | |
| 56 +#include <cairo/cairo.h> | |
| 57 +#include <cairo/cairo-xlib.h> | |
| 58 +#include <cairo/cairo-pdf.h> | |
| 59 + | |
| 60 #include "arg.h" | |
| 61 #include "util.h" | |
| 62 #include "drw.h" | |
| 63 @@ -97,6 +101,7 @@ static void cleanup(int slidesonly); | |
| 64 static void reload(const Arg *arg); | |
| 65 static void load(FILE *fp); | |
| 66 static void advance(const Arg *arg); | |
| 67 +static void pdf(); | |
| 68 static void quit(const Arg *arg); | |
| 69 static void resize(int width, int height); | |
| 70 static void run(void); | |
| 71 @@ -430,10 +435,6 @@ load(FILE *fp) | |
| 72 maxlines = 0; | |
| 73 memset((s = &slides[slidecount]), 0, sizeof(Slide)); | |
| 74 do { | |
| 75 - /* if there's a leading null, we can't do blen-… | |
| 76 - if (buf[0] == '\0') | |
| 77 - continue; | |
| 78 - | |
| 79 if (buf[0] == '#') | |
| 80 continue; | |
| 81 | |
| 82 @@ -481,6 +482,42 @@ advance(const Arg *arg) | |
| 83 } | |
| 84 } | |
| 85 | |
| 86 +void | |
| 87 +pdf() | |
| 88 +{ | |
| 89 + const Arg next = { .i = 1 }; | |
| 90 + Arg first; | |
| 91 + cairo_surface_t *cs; | |
| 92 + | |
| 93 + if (!fname) | |
| 94 + fname = "slides"; | |
| 95 + | |
| 96 + char filename[strlen(fname) + 5]; | |
| 97 + sprintf(filename, "%s.pdf", fname); | |
| 98 + cairo_surface_t *pdf = cairo_pdf_surface_create(filename, xw.w,… | |
| 99 + | |
| 100 + cairo_t *cr = cairo_create(pdf); | |
| 101 + | |
| 102 + first.i = -idx; | |
| 103 + advance(&first); | |
| 104 + | |
| 105 + cs = cairo_xlib_surface_create(xw.dpy, xw.win, xw.vis, xw.w, xw… | |
| 106 + cairo_set_source_surface(cr, cs, 0.0, 0.0); | |
| 107 + for (int i = 0; i < slidecount; ++i) { | |
| 108 + cairo_paint(cr); | |
| 109 + cairo_show_page(cr); | |
| 110 + cairo_surface_flush(cs); | |
| 111 + advance(&next); | |
| 112 + cairo_surface_mark_dirty(cs); | |
| 113 + } | |
| 114 + cairo_surface_destroy(cs); | |
| 115 + | |
| 116 + cairo_destroy(cr); | |
| 117 + cairo_surface_destroy(pdf); | |
| 118 + first.i = -(slidecount-1); | |
| 119 + advance(&first); | |
| 120 +} | |
| 121 + | |
| 122 void | |
| 123 quit(const Arg *arg) | |
| 124 { | |
| 125 -- | |
| 126 2.40.0 | |
| 127 |