X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin4_src%2FUI%2Fmain.c;h=b00ce261222eab7c2e964d08de563ae7eba64479;hb=cb37616a62753de8a1b8d28e3c4ec3ad9891de1b;hp=54eae0ff1f2f521b3143bf839f81a116f1b62b0b;hpb=10949658e20bd7b35f9ebe1d9354119d993e115b;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin4_src/UI/main.c b/Usermode/Applications/axwin4_src/UI/main.c index 54eae0ff..b00ce261 100644 --- a/Usermode/Applications/axwin4_src/UI/main.c +++ b/Usermode/Applications/axwin4_src/UI/main.c @@ -8,36 +8,74 @@ #include #include +tAxWin4_Window *CreateBGWin(int w, int h); +tAxWin4_Window *CreateTaskbar(int w, int h); + // === CODE === int main(int argc, const char *argv[]) { assert( AxWin4_Connect("ipcpipe:///Devices/ipcpipe/axwin4") ); - tAxWin4_Window *bgwin = AxWin4_CreateWindow("background"); - unsigned int w, h; AxWin4_GetScreenDimensions(0, &w, &h); + + tAxWin4_Window *bgwin = CreateBGWin(w, h); + tAxWin4_Window *menu = CreateTaskbar(w, h); + + _SysDebug("Beginning queue"); + while( AxWin4_WaitEventQueue(0) ) + ; + _SysDebug("Clean exit"); + + return 0; +} +tAxWin4_Window *CreateBGWin(int w, int h) +{ + tAxWin4_Window *bgwin = AxWin4_CreateWindow("background"); AxWin4_MoveWindow(bgwin, 0,0); AxWin4_ResizeWindow(bgwin, w,h); AxWin4_SetWindowFlags(bgwin, AXWIN4_WNDFLAG_NODECORATE|AXWIN4_WNDFLAG_KEEPBELOW); - AxWin4_ShowWindow(bgwin, true); - + // Load background image uint32_t *buf = AxWin4_GetWindowBuffer(bgwin); - _SysDebug("buf = %p", buf); - // Load image - uint32_t *image = malloc(w*h*4); - for(size_t i = 0; i < w*h; i ++ ) - image[i] = i*(0x1000000/w*h); + for( size_t y = 0; y < h; y ++ ) + { + for(size_t x = 0; x < w; x ++ ) + { + uint8_t r = y * 256 / h; + uint8_t g = 0; + uint8_t b = x * 256 / w; + buf[y*w+x] = (r << 16) | (g << 8) | b; + } + } + //AxWin4_DamageRect(bgwin, 0, 0, w, h); + AxWin4_ShowWindow(bgwin, true); - //AxWin4_DrawBitmap(bgwin, 0, 0, w, h, (void*)image); + return bgwin; +} - _SysDebug("Beginning queue"); +tAxWin4_Window *CreateTaskbar(int w, int h) +{ + int winheight = 30; + tAxWin4_Window *win = AxWin4_CreateWindow("taskbar"); + AxWin4_MoveWindow(win, 0, 0); + AxWin4_ResizeWindow(win, w, winheight); - while( AxWin4_WaitEventQueue(0) ) - ; - _SysDebug("Clean exit"); + AxWin4_SetWindowFlags(win, AXWIN4_WNDFLAG_NODECORATE); + Taskbar_Redraw(win); + AxWin4_ShowWindow(win, true); - return 0; + return win; } + +void Taskbar_Redraw(tAxWin4_Window *win) +{ + int w = 640; + int h = 30; + AxWin4_DrawControl(win, 0, 0, w, h, 0x01); // Standard button, suitable for a toolbar + AxWin4_DrawControl(win, 5, 5, h-10, h-10, 0x00); // Standard button + + AxWin4_DamageRect(bgwin, 0, 0, w, h); +} +