colors.c 3.7 KB

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