summarylogtreecommitdiffstats
path: root/mupdf-bgcolor.patch
blob: 396c626992f3d0f63c422c8c30c5ae1f876349c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
diff --git a/platform/x11/x11_main.c b/platform/x11/x11_main.c
index edbb9fa8..5cad8521 100644
--- a/platform/x11/x11_main.c
+++ b/platform/x11/x11_main.c
@@ -100,6 +100,8 @@ static char copyutf8[1024 * 48] = "";
 static Time copytime;
 static char *filename;
 static char message[1024] = "";
+static char *shadecolor = 0;
+static char *papercolor = 0;
 
 static pdfapp_t gapp;
 static int closing = 0;
@@ -133,6 +135,14 @@ static void showmessage(pdfapp_t *app, int timeout, char *msg)
 	}
 }
 
+static int colorasrgb(const char *name, XColor *color) {
+	XColor dummy;
+	if(XAllocNamedColor(xdpy, DefaultColormap(xdpy, xscr), name, color, &dummy))
+		return 1;
+	fprintf(stderr, "mupdf: couldn't allocate color '%s'", name);
+	return 0;
+}
+
 void winerror(pdfapp_t *app, char *msg)
 {
 	fprintf(stderr, "mupdf: error: %s\n", msg);
@@ -222,13 +232,17 @@ static void winopen(void)
 	xcwait = XCreateFontCursor(xdpy, XC_watch);
 	xccaret = XCreateFontCursor(xdpy, XC_xterm);
 
-	xbgcolor.red = 0x7000;
-	xbgcolor.green = 0x7000;
-	xbgcolor.blue = 0x7000;
+	if (!papercolor || !colorasrgb(papercolor, &xbgcolor)) {
+		xbgcolor.red = 0x7000;
+		xbgcolor.green = 0x7000;
+		xbgcolor.blue = 0x7000;
+	}
 
-	xshcolor.red = 0x4000;
-	xshcolor.green = 0x4000;
-	xshcolor.blue = 0x4000;
+	if (!shadecolor || !colorasrgb(shadecolor, &xshcolor)) {
+		xshcolor.red = 0x4000;
+		xshcolor.green = 0x4000;
+		xshcolor.blue = 0x4000;
+	}
 
 	XAllocColor(xdpy, DefaultColormap(xdpy, xscr), &xbgcolor);
 	XAllocColor(xdpy, DefaultColormap(xdpy, xscr), &xshcolor);
@@ -845,6 +859,8 @@ static void usage(void)
 	fprintf(stderr, "\t-S -\tfont size for EPUB layout\n");
 	fprintf(stderr, "\t-U -\tuser style sheet for EPUB layout\n");
 	fprintf(stderr, "\t-X\tdisable document styles for EPUB layout\n");
+	fprintf(stderr, "\t-D -\tshade color\n");
+	fprintf(stderr, "\t-P -\tpaper color\n");
 	exit(1);
 }
 
@@ -876,7 +892,7 @@ int main(int argc, char **argv)
 
 	pdfapp_init(ctx, &gapp);
 
-	while ((c = fz_getopt(argc, argv, "Ip:r:A:C:W:H:S:U:Xb:")) != -1)
+	while ((c = fz_getopt(argc, argv, "Ip:r:A:C:W:H:S:U:Xb:D:P:")) != -1)
 	{
 		switch (c)
 		{
@@ -897,7 +913,9 @@ int main(int argc, char **argv)
 		case 'U': gapp.layout_css = fz_optarg; break;
 		case 'X': gapp.layout_use_doc_css = 0; break;
 		case 'b': bps = (fz_optarg && *fz_optarg) ? fz_atoi(fz_optarg) : 4096; break;
-		default: usage();
+		case 'P': papercolor = fz_optarg; break;
+		case 'D': shadecolor = fz_optarg; break;
+                default: usage();
 		}
 	}