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