bool CGUIManager::Init(cLua *pContext) { m_LuaState = pContext; // init the glue functions required for the GUI for(int i=0; GUIGlue[i].name; i++) { pContext->AddFunction(GUIGlue[i].name, GUIGlue[i].func); } // create the startup GUI, this has all the global script // values defined for other lua scripts. It needs to be run. StartGUI("StartGUI.lua"); return true; }
static void game_loop() { u64b_t ticks = 0; u64b_t t1,t2,sleep; // Set a path for enemies ... State->path = load_path_file("data/bmp/path.bmp"); // Load tower positions from file.. load_towers_file("data/bmp/towers.bmp"); // Add some stuff ... start_wave(); add_some_gems(); // Start the GUI StartGUI("v0.0.1",((gstate_t*)State)); UpdateGuiState(((gstate_t*)State)); while( (State->time = ++ticks) ) { // Progress the game one time step t1 = get_time(); tick(); t2 = get_time(); // Update the gui UpdateGuiState(((gstate_t*)State)); // Sleep for the remainder of the tick cycle if( (t1 < t2) && ((t2-t1) < 5000) ) { sleep = 5000 - (t2-t1); if( sleep > 0 ) { usleep( sleep ); } } } }
void demo_init_gui(void) { init_font(); root1 = gui_create_control(GUI_CTRL_FORM, 6, 6, 1012, 756, 3, 0, 0, FORM_STYLE_XP_BORDER); if(!root1)return; gui_form_init_private(root1, 32); gui_form_set_caption(root1, "Root1"); root2 = gui_create_control(GUI_CTRL_FORM, 400, 360, 560, 345, 8, 64, 0, 0); if(!root2)return; gui_form_init_private(root2, 32); gui_form_set_caption(root2, "Root2"); form1 = gui_create_control(GUI_CTRL_FORM, 180, 50, 320, 82, 5, 0, 0, FORM_STYLE_XP_BORDER); if(!form1)return; gui_form_init_private(form1, 32); gui_form_set_caption(form1, "Form1"); label1 = gui_create_control(GUI_CTRL_LABEL, 50, 50, 100, 32, 4, 0, 0, LABEL_STYLE_BORDER); if(!label1)return; gui_label_init_private(label1, 32); gui_label_set_text(label1, "标签"); edit1 = gui_create_control(GUI_CTRL_EDIT, 50, 100, 100, 32, 9, 0, 0, 0); gui_edit_init_private(edit1, 32); gui_edit_set_text(edit1, "this is a edit!"); if(!edit1)return; button1 = gui_create_control(GUI_CTRL_BUTTON, 3, 3, 314, 32, 9, 0, 0, 0); if(!button1)return; progress1 = gui_create_control(GUI_CTRL_PROGRESS, 50, 150, 420, 32, 1, 0, 0, 0); if(!progress1)return; gui_set_control_associated(progress1, &assoc1, 0); gui_progress_init_private(progress1); my_control = gui_create_control(my_ctrl_id, 0, 0, 0, 0, 0, 0, 0, 0); if(!my_control)return; about_system_root = gui_create_control(GUI_CTRL_FORM, 6, 6, 1012, 756, 3, 0, 0, FORM_STYLE_XP_BORDER); if(!about_system_root)return; gui_form_init_private(about_system_root, 32); gui_form_set_caption(about_system_root, "about_system_root"); sys_monitor = gui_create_control(GUI_CTRL_SYS_MNTR, 16, 16, 1, 1, 0, 0, 0, SYS_MNTR_STYLE_STATIC_BDR|SYS_MNTR_STYLE_NO_BORDER); if(!sys_monitor)return; gui_sys_mntr_init_private(sys_monitor); pic1 = gui_create_control(GUI_CTRL_PICTURE, 50, 200, 150, 100, 0, 0, 0, 0); gui_picture_init_private(pic1); if(1){ InitBMPINFO(&info[0]); LoadBmp(&info[0], "demo.bmp"); InitBMPINFO(&info[1]); LoadBmp(&info[1], "demo1.bmp"); InitBMPINFO(&info[2]); LoadBmp(&info[2], "demo2.bmp"); InitBMPINFO(&info[3]); LoadBmp(&info[3], "demo3.bmp"); InitBMPINFO(&info[4]); LoadBmp(&info[4], "demo4.bmp"); InitBMPINFO(&info[5]); LoadBmp(&info[5], "demo5.bmp"); gui_picture_set_picture(pic1, &info); } gui_control_link(NULL, root1); gui_control_link(NULL, root2); gui_control_link(about_system_root, sys_monitor); gui_control_link(root2, form1); gui_control_link(root2, my_control); gui_control_link(root2, label1); gui_control_link(root2, edit1); gui_control_link(form1, button1); gui_control_link(root2, progress1); gui_control_link(root2, pic1); RegisterKeyHook(gui_keyhook); init_welcome_screen(); StartGUI(); return; }
void demo_init_gui(void) { InitBMPINFO(&icon); LoadBmp(&icon, "icon.bmp"); load_fonts(); gui_desktop_enable(); gui_desktop_set_color(CLRSCR_COLOR2); form = gui_create_widget(GUI_WIDGET_FORM, 180, 120, 632, 500, 0, 0, 0, FORM_STYLE_XP_BORDER|FORM_STYLE_TITLE); if(!form) goto err; gui_form_init_private(form, 128); gui_form_set_caption(form, "控件演示"); gui_form_set_icon(form, &icon); edit = gui_create_widget(GUI_WIDGET_EDIT, 80, 270, 460, 48, color, bkcolor, 0, style); if(!edit) goto err; gui_edit_init_private(edit, 128); gui_edit_set_text(edit, "这是一个文本框"); button = gui_create_widget(GUI_WIDGET_BUTTON, 235+156, 142+100, 236, 32, COLOR_YELLOW, 64, font16, 0); /*BUTTON_STYLE_CLIENT_BDR*/ if(!edit) goto err; gui_button_init_private(button, 128); gui_button_set_caption(button, "将那个Label盖住"); test = gui_create_widget(GUI_WIDGET_EDIT, 80, 330, 460, 32, 0, 0, 0, 0); if(!test) goto err; gui_edit_init_private(test, 128); gui_edit_set_text(test, ""); label = gui_create_widget(GUI_WIDGET_LABEL, 80, 380, 460, 64, COLOR_WHITE, 66, font48, LABEL_STYLE_SUBSIDE); if(!edit) goto err; gui_label_init_private(label, 128); gui_label_set_text(label, "Startting..."); view = gui_create_widget(GUI_WIDGET_VIEW, 80, 48, 460, 200, 0, 0, 0, VIEW_STYLE_NONE_FIRST|VIEW_STYLE_FIELDS_TITLE|VIEW_STYLE_STATISTIC_BAR); if(!view) goto err; init_view(view); progress1 = gui_create_widget(GUI_WIDGET_PROGRESS, 80, 251, 460, 14, 0, 0, 0, PROGRESS_STYLE_BORDER); if(!progress1) goto err; gui_progress_init_private(progress1, 100); dialog = input_dialog_initialize(&abcde); if(!dialog) goto err; gui_widget_link(NULL, form); gui_widget_link(form, view); gui_widget_link(form, edit); gui_widget_link(form, label); gui_widget_link(form, progress1); gui_widget_link(form, test); gui_widget_link(NULL, dialog); gui_widget_link(NULL, button); window1 = gui_create_window(form); gui_show_window(window1); window2 = gui_create_window(dialog); gui_show_window(window2); window3 = gui_create_window(button); gui_show_window(window3); gui_form_set_caption(form, os_get_description()); StartGUI(); err: return; }
void demo_init_gui(void) { demo_init_font(); my_ctrl_id=gui_register_usr_ctrl(&my_control_type); sys_monitor_id = gui_register_usr_ctrl(&sys_monitor_type); root1 = gui_create_control(GUI_CTRL_FORM, 60, 100, 800, 500, 3, 0, 0, 0); if(!root1)return; root2 = gui_create_control(GUI_CTRL_FORM, 100, 200, 800, 368, 5, 0, 0, 0); if(!root2)return; form1 = gui_create_control(GUI_CTRL_FORM, 180, 50, 320, 82, 5, 0, 0, FORM_STYLE_XP_BORDER); if(!form1)return; label1 = gui_create_control(GUI_CTRL_LABEL, 50, 50, 100, 32, 7, 0, 0, LABEL_STYLE_BORDER); if(!label1)return; gui_label_init_private(label1, 32); gui_label_set_text(label1, "this is a label!"); edit1 = gui_create_control(GUI_CTRL_EDIT, 50, 100, 100, 32, 9, 0, 0, 0); gui_edit_init_private(edit1, 32); gui_edit_set_text(edit1, "this is a edit!"); if(!edit1)return; button1 = gui_create_control(GUI_CTRL_BUTTON, 3, 3, 314, 32, 9, 0, 0, 0); if(!button1)return; progress1 = gui_create_control(GUI_CTRL_PROGRESS, 50, 150, 700, 32, 0, 0, 0, 0); if(!progress1)return; gui_set_control_associated(progress1, &assoc1, 0); gui_progress_init_private(progress1); my_control = gui_create_control(my_ctrl_id, 0, 0, 0, 0, 0, 0, 0, 0); if(!my_control)return; sys_monitor = gui_create_control(sys_monitor_id, 30, 6, 10, 10, 0, 0, 0, 0); if(!sys_monitor)return; pic1 = gui_create_control(GUI_CTRL_PICTURE, 50, 200, 150, 100, 0, 0, 0, 0); gui_picture_init_private(pic1); if(1){ InitBMPINFO(&info[0]); LoadBmp(&info[0], "demo.bmp"); InitBMPINFO(&info[1]); LoadBmp(&info[1], "demo1.bmp"); InitBMPINFO(&info[2]); LoadBmp(&info[2], "demo2.bmp"); InitBMPINFO(&info[3]); LoadBmp(&info[3], "demo3.bmp"); InitBMPINFO(&info[4]); LoadBmp(&info[4], "demo4.bmp"); InitBMPINFO(&info[5]); LoadBmp(&info[5], "demo5.bmp"); gui_picture_set_picture(pic1, &info); } gui_control_link(NULL, root1); gui_control_link(NULL, root2); gui_control_link(root1, sys_monitor); gui_control_link(root2, form1); gui_control_link(root2, my_control); gui_control_link(root2, label1); gui_control_link(root2, edit1); gui_control_link(form1, button1); gui_control_link(root2, progress1); gui_control_link(root2, pic1); RegisterKeyHook(gui_keyhook); #if 0 printf("root1-1: %d, %d, %d, %d, %d\n", root1->rect.x, root1->rect.y, root1->rect.width, root1->rect.height, root1->color); printf("root1-2: %d, %d, %d, %d, %d\n", root1->real_rect.x, root1->real_rect.y, root1->real_rect.width, root1->real_rect.height, root1->color); printf("root2-1: %d, %d, %d, %d, %d\n", root2->rect.x, root2->rect.y, root2->rect.width, root2->rect.height, root2->color); printf("root2-2: %d, %d, %d, %d, %d\n", root2->real_rect.x, root2->real_rect.y, root2->real_rect.width, root2->real_rect.height, root2->color); printf("label1-1: %d, %d, %d, %d, %d\n", label1->rect.x, label1->rect.y, label1->rect.width, label1->rect.height, label1->color); printf("label1-2: %d, %d, %d, %d, %d\n", label1->real_rect.x, label1->real_rect.y, label1->real_rect.width, label1->real_rect.height, label1->color); getch(); #endif StartGUI(); gui_set_root_control(root1); return; }
void video_test(void) { extern BMPInfo_t bmp_start; textColor(LIGHT_BLUE); printf(" >>>>> Press 's' to skip video test or any key to continue <<<<<\n\n"); textColor(TEXT); if (getch() == 's') { return; } video_install(); list_t* modelist = list_create(); video_createModeList(modelist); textColor(TABLE_HEADING); printf("\nID\tDriver\tResolution\tColor depth\tType\n"); puts("----------------------------------------------------------------------"); textColor(TEXT); size_t id = 0; for (dlelement_t* e = modelist->head; e != 0; e = e->next, id++) { videoMode_t* mode = e->data; printf("\n%u\t%s\t", id, mode->device->driver->driverName); if (printf("%ux%u\t", mode->xRes, mode->yRes) <= 8) putch('\t'); switch (mode->colorMode) { case CM_2COL: puts("2 colors"); break; case CM_16COL: puts("16 colors"); break; case CM_256COL: puts("256 colors"); break; case CM_15BIT: puts("15 bit\t"); break; case CM_16BIT: puts("16 bit\t"); break; case CM_24BIT: puts("24 bit\t"); break; case CM_32BIT: puts("32 bit\t"); break; } printf("\t%s", mode->type==VMT_GRAPHIC?"Graphic":"Text"); if (id % 40 == 0 && id != 0) waitForKeyStroke(); // Slow down } textColor(TABLE_HEADING); puts("\n----------------------------------------------------------------------\n\n"); textColor(TEXT); videoMode_t* mode = 0; while (true) { textColor(YELLOW); printf("Type in the ID of the mode: "); textColor(TEXT); char temp[20]; gets(temp); if (strcmp(temp, "exit") == 0) return; uint16_t modenumber = atoi(temp); dlelement_t* e = list_getElement(modelist, modenumber); if (e != 0) { mode = e->data; break; } } printf("\n1. Start Graphical Tests\n"); printf("2. Start GUI\n"); printf("3. Start VBE-Shell\n\n"); uint16_t whatToStart = 0; while (whatToStart == 0) { textColor(YELLOW); printf("Type in the number: "); textColor(TEXT); char num[3]; gets(num); whatToStart = atoi(num); } video_setMode(mode); if (whatToStart == 1) { uint16_t width = video_currentMode->xRes; uint16_t height = video_currentMode->yRes; uint16_t radius = min(width, height)/2; for (uint16_t i = 0; i < radius; i++) { BGRA_t color = {i*64/radius, i*256/radius, 128-(i*128/radius), 0}; // Create gradient video_drawCartesianCircle(video_currentMode->device, width/2, height/2, radius-i, color); // FPU sleepMilliSeconds(5); } BGRA_t bright_blue = {255, 75, 75, 0}; video_drawLine(video_currentMode->device, 0, height/2, width, height/2, bright_blue); video_drawLine(video_currentMode->device, 0, height/2 + 1, width, height/2 + 1, bright_blue); video_drawLine(video_currentMode->device, width/2, 0, width/2, height, bright_blue); video_drawLine(video_currentMode->device, width/2+1, 0, width/2+1, height, bright_blue); video_drawCartesianCircle(video_currentMode->device, width/2, height/2, height/2, bright_blue); // FPU video_drawCartesianCircle(video_currentMode->device, width/2, height/2, height/2-1, bright_blue); // FPU waitForKeyStroke(); video_drawBitmap(video_currentMode->device, 0, 0, &bmp_start); waitForKeyStroke(); video_printPalette(video_currentMode->device); video_drawString(video_currentMode->device, "PrettyOS started in March 2009.\nThis hobby OS tries to be a possible access for beginners in this area.", 0, 400); waitForKeyStroke(); video_drawScaledBitmap(video_currentMode->device, width, height, &bmp_start); waitForKeyStroke(); video_clearScreen(video_currentMode->device, black); waitForKeyStroke(); } else if (whatToStart == 2) { StartGUI(); } else if (whatToStart == 3) { startVBEShell(); } video_setMode(0); // Return to 80x50 text mode video_freeModeList(modelist); for (dlelement_t* e = basicVideoDevices->head; e != 0; e = e->next) { video_freeDevice(e->data); } list_free(basicVideoDevices); basicVideoDevices = 0; }