xref: /plan9/sys/src/games/music/jukebox/colors.c (revision 57ea29230156334add5f192279098aead66e5fca)
1 #include <u.h>
2 #include <libc.h>
3 #include <thread.h>
4 #include <draw.h>
5 #include <keyboard.h>
6 #include <mouse.h>
7 #include <control.h>
8 #include "colors.h"
9 
10 Font *boldfont;
11 Font *romanfont;
12 
13 Image		*background;
14 Image		*bordercolor;
15 Image		*black;
16 Image		*blue;
17 Image		*darkblue;
18 Image		*darkgrey;
19 Image		*darkgreen;
20 Image		*darkmagenta;
21 Image		*green;
22 Image		*grey;
23 Image		*high;
24 Image		*land;
25 Image		*lightblue;
26 Image		*lightgreen;
27 Image		*lightgrey;
28 Image		*lightmagenta;
29 Image		*low;
30 Image		*magenta;
31 Image		*oceanblue;
32 Image		*pale;
33 Image		*paleblue;
34 Image		*paleyellow;
35 Image		*red;
36 Image		*sea;
37 Image		*white;
38 Image		*yellow;
39 
40 static ulong
rgba(ulong rgba)41 rgba(ulong rgba)
42 {
43 	uchar r, g, b, a;
44 
45 	a = rgba & 0xff;
46 	b = (rgba >>= 8) & 0xff;
47 	g = (rgba >>= 8) & 0xff;
48 	r = (rgba >> 8) & 0xff;
49 	rgba = ((r * a / 0xff) & 0xff);
50 	rgba = ((g * a / 0xff) & 0xff) | (rgba << 8);
51 	rgba = ((b * a / 0xff) & 0xff) | (rgba << 8);
52 	rgba = (a & 0xff) | (rgba << 8);
53 	return rgba;
54 }
55 
56 void
colorinit(char * roman,char * bold)57 colorinit(char *roman, char *bold)
58 {
59 	Rectangle r = Rect(0, 0, 1, 1);
60 
61 	white =			display->white;
62 	black =			display->black;
63 	blue =			allocimage(display, r, screen->chan, 1, rgba(0x0000ffff));
64 	darkblue =		allocimage(display, r, screen->chan, 1, rgba(0x0000ccff));
65 	darkgrey =		allocimage(display, r, screen->chan, 1, rgba(0x444444ff));
66 	darkgreen =		allocimage(display, r, screen->chan, 1, rgba(0x008800ff));
67 	darkmagenta =		allocimage(display, r, screen->chan, 1, rgba(0x770077ff));
68 	green =			allocimage(display, r, screen->chan, 1, rgba(0x00ff00ff));
69 	grey =			allocimage(display, r, screen->chan, 1, rgba(0x888888ff));
70 	high =			allocimage(display, r, screen->chan, 1, rgba(0x00ccccff));
71 	land =			allocimage(display, r, screen->chan, 1, rgba(0xe0ffe0ff));
72 	lightblue =		allocimage(display, r, screen->chan, 1, rgba(0x88ccccff));
73 	lightgreen =		allocimage(display, r, screen->chan, 1, rgba(0xaaffaaff));
74 	lightgrey =		allocimage(display, r, screen->chan, 1, rgba(0xddddddff));
75 	lightmagenta =		allocimage(display, r, screen->chan, 1, rgba(0xff88ffff));
76 	low =			allocimage(display, r, screen->chan, 1, rgba(0xddddddff));
77 	magenta =		allocimage(display, r, screen->chan, 1, rgba(0xbb00bbff));
78 	oceanblue =		allocimage(display, r, screen->chan, 1, rgba(0x93ddddff));
79 	pale =			allocimage(display, r, screen->chan, 1, rgba(0xffffaaff));
80 	paleblue =		allocimage(display, r, screen->chan, 1, rgba(0xddffffff));
81 	paleyellow =		allocimage(display, r, screen->chan, 1, rgba(0xeeee9eff));
82 	red =			allocimage(display, r, screen->chan, 1, rgba(0xff0000ff));
83 	sea =			allocimage(display, r, screen->chan, 1, rgba(0xe0e0ffff));
84 	yellow =			allocimage(display, r, screen->chan, 1, rgba(0xffff00ff));
85 	background = sea;
86 	bordercolor = darkgreen;
87 
88 	namectlimage(background, "background");
89 	namectlimage(bordercolor, "border");
90 	namectlimage(black, "black");
91 	namectlimage(blue, "blue");
92 	namectlimage(darkblue, "darkblue");
93 	namectlimage(darkgreen, "darkgreen");
94 	namectlimage(darkmagenta, "darkmagenta");
95 	namectlimage(green, "green");
96 	namectlimage(grey, "grey");
97 	namectlimage(high, "high");
98 	namectlimage(land, "land");
99 	namectlimage(lightblue, "lightblue");
100 	namectlimage(lightgreen, "lightgreen");
101 	namectlimage(lightgrey, "lightgrey");
102 	namectlimage(lightmagenta, "lightmagenta");
103 	namectlimage(low, "low");
104 	namectlimage(magenta, "magenta");
105 	namectlimage(oceanblue, "oceanblue");
106 	namectlimage(pale, "pale");
107 	namectlimage(paleblue, "paleblue");
108 	namectlimage(paleyellow, "paleyellow");
109 	namectlimage(red, "red");
110 	namectlimage(sea, "sea");
111 	namectlimage(white, "white");
112 	namectlimage(yellow, "yellow");
113 
114 	if ((romanfont = openfont(display, roman)) == nil)
115 		sysfatal("openfont %s: %r", roman);
116 	namectlfont(romanfont, "romanfont");
117 	if ((boldfont = openfont(display, bold)) == nil)
118 		sysfatal("openfont %s: %r", bold);
119 	namectlfont(boldfont, "boldfont");
120 }
121