📄 fminigui.c
字号:
} *prev_ptr = &t->succ; render_texture(screen_width, screen_height, t);}static void update_all_textures(int millis){ Texture *cur; Texture **prev_ptr; cur = texture_list; prev_ptr = (Texture **) &texture_list; while (cur != NULL) { update_texture(cur, &prev_ptr, millis); cur = *prev_ptr; }}struct timeval cur_time, prev_time;int gen_millis;static void InitFlyingGUI (void){ /* initialize */ srand(time(NULL)); banner_size(&banner_width, &banner_height); banner_diag = sqrt(banner_width * banner_width + banner_height * banner_height); screen_width = DEFAULT_WIDTH; screen_height = DEFAULT_HEIGHT; gen_time = DEFAULT_GENTIME; speed = -1; max_size = -1; cluster_size = -1; init_textures(); if (speed < 0) { speed = DEFAULT_SPEED; } if (max_size < 0) { max_size = DEFAULT_MAXSIZE; } max_size = (max_size << 16) / 100; if (cluster_size < 0) { cluster_size = DEFAULT_CLUSTERSIZE; } setup_palette(); screen_width = 320; screen_height = 200; screen_diag = sqrt(screen_width * screen_width + screen_height * screen_height); image_size = screen_width * screen_height * 1; image_buf = malloc(image_size); gettimeofday (&prev_time, NULL); gen_millis=0;}#define CMPOPT(x,s,l,n) (((strcmp(x,s)==0) || \ (strcmp(x,l)==0)) && ((i+n) < argc))static void OnPaint (HDC hdc){ int x, y; int millis; x = screen_width/2; y = screen_width/2; /* determine time lapse */ gettimeofday (&cur_time, NULL); millis = (cur_time.tv_sec - prev_time.tv_sec) * 1000 + (cur_time.tv_usec - prev_time.tv_usec) / 1000; prev_time = cur_time; if (use_putbox) { memset(image_buf, lookup[0], image_size); } else { memset(image_buf, 0, image_size); } update_all_textures(millis); update_frame (hdc); for (gen_millis += millis; gen_millis > gen_time; gen_millis -= gen_time) { int disp_x = screen_width * cluster_size / 200; int disp_y = screen_height * cluster_size / 141; x += random_in_range(-disp_x, +disp_x); y += random_in_range(-disp_y, +disp_y); if (x < 0) { x += screen_width; } if (y < 0) { y += screen_height; } if (x >= screen_width) { x -= screen_width; } if (y >= screen_height) { y -= screen_height; } add_texture(x, y, random_in_range(0, 255)); }}static void TermFlyingGUI (void){ free_textures();}int FlyingGUIWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc; switch (message) { case MSG_CREATE: InitFlyingGUI ();#ifdef _TIMER_UNIT_10MS SetTimer (hWnd, 100, 10);#else SetTimer (hWnd, 100, 100);#endif break; case MSG_TIMER: if (wParam == 100) InvalidateRect (hWnd, NULL, FALSE); break; case MSG_PAINT: hdc = BeginPaint (hWnd); OnPaint (hdc); EndPaint (hWnd, hdc); return 0; case MSG_CLOSE: KillTimer (hWnd, 100); TermFlyingGUI (); DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc(hWnd, message, wParam, lParam);}static void InitCreateInfo (PMAINWINCREATE pCreateInfo){ pCreateInfo->dwStyle = WS_CAPTION | WS_VISIBLE; pCreateInfo->dwExStyle = 0; pCreateInfo->spCaption = "Flying GUI" ; pCreateInfo->hMenu = 0; pCreateInfo->hCursor = GetSystemCursor (0); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = FlyingGUIWinProc; pCreateInfo->lx = 0; pCreateInfo->ty = 0; pCreateInfo->rx = pCreateInfo->lx + DEFAULT_WIDTH; pCreateInfo->by = pCreateInfo->ty + DEFAULT_HEIGHT; pCreateInfo->iBkColor = COLOR_black; pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP;}int MiniGUIMain (int args, const char* arg[]){ MSG Msg; MAINWINCREATE CreateInfo; HWND hMainWnd;#if defined(_LITE_VERSION) && !(_STAND_ALONE) int i; const char* layer = NULL; RECT max_rect = {0, 0, 0, 0}; for (i = 1; i < args; i++) { if (strcmp (arg[i], "-layer") == 0) { layer = arg[i + 1]; break; } } GetLayerInfo (layer, &max_rect, NULL, NULL, NULL); if (JoinLayer (layer, arg[0], max_rect.left, max_rect.top, max_rect.left + DEFAULT_WIDTH, max_rect.top + DEFAULT_HEIGHT) == INV_LAYER_HANDLE) { printf ("JoinLayer: invalid layer handle.\n"); exit (1); }#endif InitCreateInfo (&CreateInfo); hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return -1; while (GetMessage (&Msg, hMainWnd)) { DispatchMessage (&Msg); } MainWindowThreadCleanup (hMainWnd); return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif/* Image of GGI */static char *banner[46] = {"..................###########..................................................................................","..............###################...##.....#################..............################..###################","............########.......###########........###########....................###########........###########....","..........#######.............########.........#########......................#########..........#########.....",".........######................#######..........#######........................#######............#######......","........######...................#####..........#######........................#######............#######......",".......######.....................#####.........#######........................#######............#######......","......######......................#####.........#######........................#######............#######......",".....#######.......................####.........#######........................#######............#######......","....#######.........................###.........#######........................#######............#######......","....######..........................###.........#######........................#######............#######......","...#######..........................###.........#######........................#######............#######......","...#######...........................##.........#######........................#######............#######......","..#######.......................................#######........................#######............#######......","..#######.......................................#######........................#######............#######......",".########.......................................#######........................#######............#######......",".#######........................................#######........................#######............#######......",".#######........................................#######........................#######............#######......",".#######........................................#######........................#######............#######......","########........................................#######........................#######............#######......","########........................................#######........................#######............#######......","########..................###################...#######........................#######............#######......","########......................###########.......#######........................#######............#######......","########.......................#########........#######........................#######............#######......","########........................########........#######........................#######............#######......","########........................#######.........#######........................#######............#######......","########........................#######.........#######........................#######............#######......","#########.......................#######.........#######........................#######............#######......",".########.......................#######.........#######........................#######............#######......",".########.......................#######.........#######........................#######............#######......",".########.......................#######.........#######........................#######............#######......","..########......................#######.........#######........................#######............#######......","..########......................#######.........#######........................#######............#######......","..#########.....................#######.........#######........................#######............#######......","...########.....................#######..........#######......................#######.............#######......","....########....................#######..........#######......................#######.............#######......","....########....................#######...........#######....................#######..............#######......",".....########...................#######...........#######....................#######..............#######......","......########..................#######............#######..................#######...............#######......",".......########.................#######.............#######................#######................#######......","........########................#######..............#######..............#######.................#######......","..........########............#########...............#######............#######.................#########.....","............#########......##########..................########.........#######.................###########....","..............####################........................##################................###################","..................############...............................############......................................",NULL};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -