2 Acess OS Window Manager
\r
13 int giConsoleFP = -1;
\r
14 int giScreenFP = -1;
\r
15 int giScreenMode = 1;
\r
16 int giScreenWidth = SCREEN_WIDTH;
\r
17 int giScreenHeight = SCREEN_HEIGHT;
\r
18 int giScreenDepth = 32;
\r
19 int giScreenSize = SCREEN_WIDTH*SCREEN_HEIGHT*32/8;
\r
20 Uint32 *gScreenBuffer;
\r
23 Uint32 gCursorBMP[sizeof(bmpCursor)*2] = {0};
\r
24 int mouseX=0, mouseY=0;
\r
29 extern void Desktop_Init();
\r
30 extern void heap_init();
\r
31 void UpdateScreen();
\r
37 void memsetd(void *to, long val, int count);
\r
44 giConsoleFP = open("/Devices/vterm/1", OPENFLAG_WRITE);
\r
46 printf("AcessOS GUI version 1\n");
\r
47 printf("Opening and Initialising Video and Mouse...");
\r
50 giMouseFP = open("/Devices/ps2mouse", OPENFLAG_READ);
\r
53 tmp = giScreenWidth; ioctl(giConsoleFP, 4, &tmp); // Width
\r
54 tmp = giScreenHeight; ioctl(giConsoleFP, 5, &tmp); // Height
\r
55 tmp = 1; ioctl(giConsoleFP, 6, &tmp); // Buffer Mode
\r
57 giScreenSize = giScreenWidth*giScreenHeight*giScreenDepth/8;
\r
60 ioctl(giMouseFP, 2, &giScreenWidth); //Set Max X
\r
61 ioctl(giMouseFP, 3, &giScreenHeight); //Set Max Y
\r
65 // Allocate Screen Buffer
\r
66 gScreenBuffer = malloc(giScreenSize);
\r
67 if(gScreenBuffer == NULL)
\r
68 printf("Unable to allocate double buffer (gScreenBuffer)\n");
\r
73 BuildCursor(); //Create Cursor
\r
77 memset(gScreenBuffer, 0x6666FF, giScreenSize); // Set Background Colour
\r
89 /* Copy from the buffer to the screen
\r
93 printf("Updating Framebuffer.\n");
\r
94 seek(giScreenFP, 0, 1); //SEEK SET
\r
95 write(giScreenFP, giScreenSize, gScreenBuffer);
\r
105 //k_printf("Updating Mouse State...");
\r
107 seek(giMouseFP, 0, 1);
\r
108 read(giMouseFP, sizeof(data), &data);
\r
110 mouseX = data.x; mouseY = data.y;
\r
112 if(data.buttons & ~buttonState) {
\r
113 //wmMessageButtonDown();
\r
116 if(~data.buttons & buttonState) {
\r
117 //wmMessageButtonUp();
\r
120 buttonState = data.buttons; //Update Button State
\r
121 //k_printf("Done.\n");
\r
129 buf = gScreenBuffer + mouseY*giScreenWidth + mouseX;
\r
136 buf[j] = *bi&0xFFFFFF;
\r
140 buf += giScreenWidth;
\r
151 for(i=0;i<sizeof(bmpCursor)/8;i++)
\r
155 px = (*bi & (0xF << ((7-j)*4) )) >> ((7-j)*4);
\r
158 if(px & 8) *buf = 0xFF000000; //Black (100% Alpha)
\r
159 else *buf = 0xFFFFFFFF; //White (100% Alpha)
\r
162 *buf = 0; // 0% Alpha
\r
168 px = (*bi & (0xF << ((7-j)*4) )) >> ((7-j)*4);
\r
171 if(px & 8) *buf = 0xFF000000; // Black (100% Alpha)
\r
172 else *buf = 0xFFFFFFFF; // White (100% Alpha)
\r
176 *buf = 0; // 0% Alpha
\r