start.c
来自「CS架构的多平台的GUI系统」· C语言 代码 · 共 182 行
C
182 行
/*************************************************************************** begin : Wed Jan 29 2003 copyright : (C) 2003 - 2005 by Alper Akcan email : distchx@yahoo.com ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation; either version 2.1 of the * * License, or (at your option) any later version. * * * ***************************************************************************/#include "../lib/xynth_.h"#include "server.h"static void s_server_handler_fullscreen (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_fullscreen();}static void s_server_handler_screen_shot (s_window_t *window, s_event_t *event, s_handler_t *handler){ int r; int g; int b; int x; int y; FILE *file; char name[100]; static int file_n = 0; sprintf(name, "xynth_%d.pnm", file_n++); file = fopen(name, "w+"); fprintf(file, "P3\n"); fprintf(file, "%d %d\n", window->surface->width, window->surface->height); fprintf(file, "255\n"); for (y = 0; y < window->surface->height; y++) { for (x = 0; x < window->surface->width; x++) { s_colorrgb(window->surface, s_getpixel(window->surface, x, y), &r, &g, &b); fprintf(file, "%d\n%d\n%d\n", r, g, b); } } fclose(file);}static void s_server_handler_change_theme (s_window_t *window, s_event_t *event, s_handler_t *handler){ static int theme_n = 0; switch (theme_n) { case 2: s_server_theme_set(THEMEDIR "/keramik.so"); break; case 1: s_server_theme_set(THEMEDIR "/microgui.so"); break; case 0: s_server_theme_set(THEMEDIR "/silverado.so"); break; } theme_n += 1; theme_n %= 3;}static void s_server_handler_quit (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_quit(window);}#if defined(PLATFORM_PSPDEV)#include <pspkernel.h>#include <pspdebug.h>#include <stdlib.h>#include <string.h>#if 0PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);PSP_MODULE_INFO("Xynth Windowing System", 0, 1, 1);#elsePSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER | PSP_THREAD_ATTR_VFPU);PSP_MODULE_INFO("Xynth Windowing System", 0x1000, 1, 1);#endifint s_server_psp_exit_callback (int arg1, int arg2, void *common){ sceKernelExitGame(); return 0;}int s_server_psp_callback_thread (SceSize args, void *argp){ int cbid; cbid = sceKernelCreateCallback("Exit Callback", s_server_psp_exit_callback, NULL); sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); return 0;}int s_server_psp_setup_callbacks (void){ int thid = 0; thid = sceKernelCreateThread("update_thread", s_server_psp_callback_thread, 0x11, 0xFA0, PSP_THREAD_ATTR_USER, 0); if (thid >= 0) { sceKernelStartThread(thid, 0, 0); } return thid;}#endifint main (int argc, char *argv[]){ s_handler_t *hndl;#if defined(PLATFORM_PSPDEV) pspDebugScreenInit(); s_server_psp_setup_callbacks();#endif if (s_server_init()) { debugf(DSER, "s_server_init() failed");// s_free(server); return 1; } s_server_theme_init(); s_handler_init(&hndl); hndl->type = KEYBD_HANDLER; hndl->keybd.flag = 0; hndl->keybd.button = S_KEYCODE_F10; hndl->keybd.p = s_server_handler_screen_shot; s_handler_add(server->window, hndl); s_handler_init(&hndl); hndl->type = KEYBD_HANDLER; hndl->keybd.flag = 0; hndl->keybd.button = S_KEYCODE_F11; hndl->keybd.p = s_server_handler_change_theme; s_handler_add(server->window, hndl); s_handler_init(&hndl); hndl->type = KEYBD_HANDLER; hndl->keybd.flag = 0; hndl->keybd.button = S_KEYCODE_F12; hndl->keybd.p = s_server_handler_fullscreen; s_handler_add(server->window, hndl); s_handler_init(&hndl); hndl->type = MOUSE_HANDLER; hndl->mouse.x = 0; hndl->mouse.y = 0; hndl->mouse.w = 20; hndl->mouse.h = 20; hndl->mouse.button = MOUSE_LEFTBUTTON; hndl->mouse.r = s_server_handler_quit; s_handler_add(server->window, hndl);#if defined(SINGLE_APP) s_server_single_start();#endif /* SINGLE_APP */ while (server->window->running > 0) { if (s_socket_listen_wait(server->window, -1)) { break; } }#if defined(SINGLE_APP) s_server_single_stop();#endif /* SINGLE_APP */ s_server_uninit();#if defined(PLATFORM_PSPDEV) sceKernelDelayThread(2500000); sceKernelExitGame();#endif /* PLATFORM_PSPDEV */ return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?