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;
}
Exemplo n.º 2
0
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 );
      }
    }
  }

}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}