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 |