data.c 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*
  2. * This file is part of the UCB release of Plan 9. It is subject to the license
  3. * terms in the LICENSE file found in the top-level directory of this
  4. * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
  5. * part of the UCB release of Plan 9, including this file, may be copied,
  6. * modified, propagated, or distributed except according to the terms contained
  7. * in the LICENSE file.
  8. */
  9. #include <u.h>
  10. #include <libc.h>
  11. #include <draw.h>
  12. #include <thread.h>
  13. #include <cursor.h>
  14. #include <mouse.h>
  15. #include <keyboard.h>
  16. #include <frame.h>
  17. #include <fcall.h>
  18. #include "dat.h"
  19. #include "fns.h"
  20. Cursor crosscursor = {
  21. {-7, -7},
  22. {0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
  23. 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
  24. 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0,
  25. 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, },
  26. {0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
  27. 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x7F, 0xFE,
  28. 0x7F, 0xFE, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
  29. 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, }
  30. };
  31. Cursor boxcursor = {
  32. {-7, -7},
  33. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  34. 0xFF, 0xFF, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F,
  35. 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFF, 0xFF,
  36. 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, },
  37. {0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE,
  38. 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E,
  39. 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E,
  40. 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x00, }
  41. };
  42. Cursor sightcursor = {
  43. {-7, -7},
  44. {0x1F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE, 0xFB, 0xDF,
  45. 0xF3, 0xCF, 0xE3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF,
  46. 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC7, 0xF3, 0xCF,
  47. 0x7B, 0xDF, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, },
  48. {0x00, 0x00, 0x0F, 0xF0, 0x31, 0x8C, 0x21, 0x84,
  49. 0x41, 0x82, 0x41, 0x82, 0x41, 0x82, 0x7F, 0xFE,
  50. 0x7F, 0xFE, 0x41, 0x82, 0x41, 0x82, 0x41, 0x82,
  51. 0x21, 0x84, 0x31, 0x8C, 0x0F, 0xF0, 0x00, 0x00, }
  52. };
  53. Cursor whitearrow = {
  54. {0, 0},
  55. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
  56. 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC,
  57. 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
  58. 0xF3, 0xF8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, },
  59. {0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0xC0, 0x1C,
  60. 0xC0, 0x30, 0xC0, 0x30, 0xC0, 0x38, 0xC0, 0x1C,
  61. 0xC0, 0x0E, 0xC0, 0x07, 0xCE, 0x0E, 0xDF, 0x1C,
  62. 0xD3, 0xB8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, }
  63. };
  64. Cursor query = {
  65. {-7,-7},
  66. {0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe,
  67. 0x7c, 0x7e, 0x78, 0x7e, 0x00, 0xfc, 0x01, 0xf8,
  68. 0x03, 0xf0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0xc0,
  69. 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, },
  70. {0x00, 0x00, 0x0f, 0xf0, 0x1f, 0xf8, 0x3c, 0x3c,
  71. 0x38, 0x1c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0xf0,
  72. 0x01, 0xe0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80,
  73. 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, }
  74. };
  75. Cursor tl = {
  76. {-4, -4},
  77. {0xfe, 0x00, 0x82, 0x00, 0x8c, 0x00, 0x87, 0xff,
  78. 0xa0, 0x01, 0xb0, 0x01, 0xd0, 0x01, 0x11, 0xff,
  79. 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
  80. 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1f, 0x00, },
  81. {0x00, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x78, 0x00,
  82. 0x5f, 0xfe, 0x4f, 0xfe, 0x0f, 0xfe, 0x0e, 0x00,
  83. 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
  84. 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, }
  85. };
  86. Cursor t = {
  87. {-7, -8},
  88. {0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0xc0,
  89. 0x1c, 0x70, 0x10, 0x10, 0x0c, 0x60, 0xfc, 0x7f,
  90. 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xff, 0xff,
  91. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
  92. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
  93. 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80, 0x03, 0x80,
  94. 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00,
  95. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
  96. };
  97. Cursor tr = {
  98. {-11, -4},
  99. {0x00, 0x7f, 0x00, 0x41, 0x00, 0x31, 0xff, 0xe1,
  100. 0x80, 0x05, 0x80, 0x0d, 0x80, 0x0b, 0xff, 0x88,
  101. 0x00, 0x88, 0x0, 0x88, 0x00, 0x88, 0x00, 0x88,
  102. 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, },
  103. {0x00, 0x00, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0x1e,
  104. 0x7f, 0xfa, 0x7f, 0xf2, 0x7f, 0xf0, 0x00, 0x70,
  105. 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
  106. 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, }
  107. };
  108. Cursor r = {
  109. {-8, -7},
  110. {0x07, 0xc0, 0x04, 0x40, 0x04, 0x40, 0x04, 0x58,
  111. 0x04, 0x68, 0x04, 0x6c, 0x04, 0x06, 0x04, 0x02,
  112. 0x04, 0x06, 0x04, 0x6c, 0x04, 0x68, 0x04, 0x58,
  113. 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x07, 0xc0, },
  114. {0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80,
  115. 0x03, 0x90, 0x03, 0x90, 0x03, 0xf8, 0x03, 0xfc,
  116. 0x03, 0xf8, 0x03, 0x90, 0x03, 0x90, 0x03, 0x80,
  117. 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, }
  118. };
  119. Cursor br = {
  120. {-11, -11},
  121. {0x00, 0xf8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88,
  122. 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88,
  123. 0xff, 0x88, 0x80, 0x0b, 0x80, 0x0d, 0x80, 0x05,
  124. 0xff, 0xe1, 0x00, 0x31, 0x00, 0x41, 0x00, 0x7f, },
  125. {0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
  126. 0x0, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70,
  127. 0x00, 0x70, 0x7f, 0xf0, 0x7f, 0xf2, 0x7f, 0xfa,
  128. 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x00, }
  129. };
  130. Cursor b = {
  131. {-7, -7},
  132. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  133. 0xff, 0xff, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
  134. 0xfc, 0x7f, 0x0c, 0x60, 0x10, 0x10, 0x1c, 0x70,
  135. 0x06, 0xc0, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, },
  136. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  137. 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe,
  138. 0x03, 0x80, 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80,
  139. 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
  140. };
  141. Cursor bl = {
  142. {-4, -11},
  143. {0x1f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
  144. 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00,
  145. 0x11, 0xff, 0xd0, 0x01, 0xb0, 0x01, 0xa0, 0x01,
  146. 0x87, 0xff, 0x8c, 0x00, 0x82, 0x00, 0xfe, 0x00, },
  147. {0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
  148. 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00,
  149. 0x0e, 0x00, 0x0f, 0xfe, 0x4f, 0xfe, 0x5f, 0xfe,
  150. 0x78, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x00, 0x0, }
  151. };
  152. Cursor l = {
  153. {-7, -7},
  154. {0x03, 0xe0, 0x02, 0x20, 0x02, 0x20, 0x1a, 0x20,
  155. 0x16, 0x20, 0x36, 0x20, 0x60, 0x20, 0x40, 0x20,
  156. 0x60, 0x20, 0x36, 0x20, 0x16, 0x20, 0x1a, 0x20,
  157. 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x03, 0xe0, },
  158. {0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0,
  159. 0x09, 0xc0, 0x09, 0xc0, 0x1f, 0xc0, 0x3f, 0xc0,
  160. 0x1f, 0xc0, 0x09, 0xc0, 0x09, 0xc0, 0x01, 0xc0,
  161. 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, }
  162. };
  163. Cursor *corners[9] = {
  164. &tl, &t, &tr,
  165. &l, nil, &r,
  166. &bl, &b, &br,
  167. };
  168. void
  169. iconinit(void)
  170. {
  171. background = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0x777777FF);
  172. red = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0xDD0000FF);
  173. }