|  | #include <u.h> | 
|  | #include <libc.h> | 
|  | #include <draw.h> | 
|  | #include <thread.h> | 
|  | #include <cursor.h> | 
|  | #include <mouse.h> | 
|  | #include <keyboard.h> | 
|  | #include <frame.h> | 
|  | #include <fcall.h> | 
|  | #include "dat.h" | 
|  | #include "fns.h" | 
|  |  | 
|  | Cursor crosscursor = { | 
|  | {-7, -7}, | 
|  | {0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, | 
|  | 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, | 
|  | 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, | 
|  | 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, }, | 
|  | {0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, | 
|  | 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x7F, 0xFE, | 
|  | 0x7F, 0xFE, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, | 
|  | 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor boxcursor = { | 
|  | {-7, -7}, | 
|  | {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | 
|  | 0xFF, 0xFF, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, | 
|  | 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFF, 0xFF, | 
|  | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }, | 
|  | {0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, | 
|  | 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, | 
|  | 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x0E, | 
|  | 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor sightcursor = { | 
|  | {-7, -7}, | 
|  | {0x1F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE, 0xFB, 0xDF, | 
|  | 0xF3, 0xCF, 0xE3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, | 
|  | 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC7, 0xF3, 0xCF, | 
|  | 0x7B, 0xDF, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, }, | 
|  | {0x00, 0x00, 0x0F, 0xF0, 0x31, 0x8C, 0x21, 0x84, | 
|  | 0x41, 0x82, 0x41, 0x82, 0x41, 0x82, 0x7F, 0xFE, | 
|  | 0x7F, 0xFE, 0x41, 0x82, 0x41, 0x82, 0x41, 0x82, | 
|  | 0x21, 0x84, 0x31, 0x8C, 0x0F, 0xF0, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor whitearrow = { | 
|  | {0, 0}, | 
|  | {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC, | 
|  | 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, | 
|  | 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC, | 
|  | 0xF3, 0xF8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, }, | 
|  | {0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0xC0, 0x1C, | 
|  | 0xC0, 0x30, 0xC0, 0x30, 0xC0, 0x38, 0xC0, 0x1C, | 
|  | 0xC0, 0x0E, 0xC0, 0x07, 0xCE, 0x0E, 0xDF, 0x1C, | 
|  | 0xD3, 0xB8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40, } | 
|  | }; | 
|  |  | 
|  | Cursor query = { | 
|  | {-7,-7}, | 
|  | {0x0f, 0xf0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe, | 
|  | 0x7c, 0x7e, 0x78, 0x7e, 0x00, 0xfc, 0x01, 0xf8, | 
|  | 0x03, 0xf0, 0x07, 0xe0, 0x07, 0xc0, 0x07, 0xc0, | 
|  | 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, }, | 
|  | {0x00, 0x00, 0x0f, 0xf0, 0x1f, 0xf8, 0x3c, 0x3c, | 
|  | 0x38, 0x1c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0xf0, | 
|  | 0x01, 0xe0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80, | 
|  | 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor tl = { | 
|  | {-4, -4}, | 
|  | {0xfe, 0x00, 0x82, 0x00, 0x8c, 0x00, 0x87, 0xff, | 
|  | 0xa0, 0x01, 0xb0, 0x01, 0xd0, 0x01, 0x11, 0xff, | 
|  | 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, | 
|  | 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1f, 0x00, }, | 
|  | {0x00, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x78, 0x00, | 
|  | 0x5f, 0xfe, 0x4f, 0xfe, 0x0f, 0xfe, 0x0e, 0x00, | 
|  | 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, | 
|  | 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor t = { | 
|  | {-7, -8}, | 
|  | {0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0xc0, | 
|  | 0x1c, 0x70, 0x10, 0x10, 0x0c, 0x60, 0xfc, 0x7f, | 
|  | 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xff, 0xff, | 
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, | 
|  | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, | 
|  | 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80, 0x03, 0x80, | 
|  | 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00, | 
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor tr = { | 
|  | {-11, -4}, | 
|  | {0x00, 0x7f, 0x00, 0x41, 0x00, 0x31, 0xff, 0xe1, | 
|  | 0x80, 0x05, 0x80, 0x0d, 0x80, 0x0b, 0xff, 0x88, | 
|  | 0x00, 0x88, 0x0, 0x88, 0x00, 0x88, 0x00, 0x88, | 
|  | 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, }, | 
|  | {0x00, 0x00, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0x1e, | 
|  | 0x7f, 0xfa, 0x7f, 0xf2, 0x7f, 0xf0, 0x00, 0x70, | 
|  | 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, | 
|  | 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor r = { | 
|  | {-8, -7}, | 
|  | {0x07, 0xc0, 0x04, 0x40, 0x04, 0x40, 0x04, 0x58, | 
|  | 0x04, 0x68, 0x04, 0x6c, 0x04, 0x06, 0x04, 0x02, | 
|  | 0x04, 0x06, 0x04, 0x6c, 0x04, 0x68, 0x04, 0x58, | 
|  | 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x07, 0xc0, }, | 
|  | {0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, | 
|  | 0x03, 0x90, 0x03, 0x90, 0x03, 0xf8, 0x03, 0xfc, | 
|  | 0x03, 0xf8, 0x03, 0x90, 0x03, 0x90, 0x03, 0x80, | 
|  | 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor br = { | 
|  | {-11, -11}, | 
|  | {0x00, 0xf8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, | 
|  | 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, | 
|  | 0xff, 0x88, 0x80, 0x0b, 0x80, 0x0d, 0x80, 0x05, | 
|  | 0xff, 0xe1, 0x00, 0x31, 0x00, 0x41, 0x00, 0x7f, }, | 
|  | {0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, | 
|  | 0x0, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, | 
|  | 0x00, 0x70, 0x7f, 0xf0, 0x7f, 0xf2, 0x7f, 0xfa, | 
|  | 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor b = { | 
|  | {-7, -7}, | 
|  | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
|  | 0xff, 0xff, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, | 
|  | 0xfc, 0x7f, 0x0c, 0x60, 0x10, 0x10, 0x1c, 0x70, | 
|  | 0x06, 0xc0, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }, | 
|  | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
|  | 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, | 
|  | 0x03, 0x80, 0x03, 0x80, 0x0f, 0xe0, 0x03, 0x80, | 
|  | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor bl = { | 
|  | {-4, -11}, | 
|  | {0x1f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, | 
|  | 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, | 
|  | 0x11, 0xff, 0xd0, 0x01, 0xb0, 0x01, 0xa0, 0x01, | 
|  | 0x87, 0xff, 0x8c, 0x00, 0x82, 0x00, 0xfe, 0x00, }, | 
|  | {0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, | 
|  | 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, | 
|  | 0x0e, 0x00, 0x0f, 0xfe, 0x4f, 0xfe, 0x5f, 0xfe, | 
|  | 0x78, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x00, 0x0, } | 
|  | }; | 
|  |  | 
|  | Cursor l = { | 
|  | {-7, -7}, | 
|  | {0x03, 0xe0, 0x02, 0x20, 0x02, 0x20, 0x1a, 0x20, | 
|  | 0x16, 0x20, 0x36, 0x20, 0x60, 0x20, 0x40, 0x20, | 
|  | 0x60, 0x20, 0x36, 0x20, 0x16, 0x20, 0x1a, 0x20, | 
|  | 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x03, 0xe0, }, | 
|  | {0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, | 
|  | 0x09, 0xc0, 0x09, 0xc0, 0x1f, 0xc0, 0x3f, 0xc0, | 
|  | 0x1f, 0xc0, 0x09, 0xc0, 0x09, 0xc0, 0x01, 0xc0, | 
|  | 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, } | 
|  | }; | 
|  |  | 
|  | Cursor *corners[9] = { | 
|  | &tl,	&t,	&tr, | 
|  | &l,	nil,	&r, | 
|  | &bl,	&b,	&br | 
|  | }; | 
|  |  | 
|  | void | 
|  | iconinit(void) | 
|  | { | 
|  | background = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0x777777FF); | 
|  | red = allocimage(display, Rect(0,0,1,1), RGB24, 1, 0xDD0000FF); | 
|  | } |