⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 object.c

📁 CS架构的多平台的GUI系统
💻 C
字号:
/***************************************************************************    begin                : Wed Mar 9 2005    copyright            : (C) 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 <stdio.h>#include <stdlib.h>#include <unistd.h>#include <time.h>#include "xynth_.h"typedef struct main_data_s {	s_object_t *objectp;	s_object_t *objectc[4];	s_object_t *objectcc[4];} main_data_t;static void handler0_p (s_window_t *window, s_event_t *event, s_handler_t *handler){        main_data_t *mdata = (main_data_t *) window->client->user_data;	s_putbox(window->surface, 10, 50, mdata->objectp->surface->width, mdata->objectp->surface->height, mdata->objectp->surface->vbuf);}static void handler1_p (s_window_t *window, s_event_t *event, s_handler_t *handler){	int i;	int j;        main_data_t *mdata = (main_data_t *) window->client->user_data;	for (i = 0; i < 4; i++) {		s_object_move(mdata->objectc[i], ((unsigned) rand()) % mdata->objectc[i]->parent->surface->width,		                                 ((unsigned) rand()) % mdata->objectc[i]->parent->surface->height,		                                 ((unsigned) rand()) % mdata->objectc[i]->parent->surface->width,		                                 ((unsigned) rand()) % mdata->objectc[i]->parent->surface->height		                                 );		if (i == 0) {			for (j = 0; j < 4; j++) {				s_object_move(mdata->objectcc[j], ((unsigned) rand()) % mdata->objectcc[j]->parent->surface->width,			        	                          ((unsigned) rand()) % mdata->objectcc[j]->parent->surface->height,			                		 	  ((unsigned) rand()) % mdata->objectcc[j]->parent->surface->width,				                                  ((unsigned) rand()) % mdata->objectcc[j]->parent->surface->height				                                  );			}		}	}	handler0_p(window, event, handler);}static void handler2_p (s_window_t *window, s_event_t *event, s_handler_t *handler){	int i;        main_data_t *mdata = (main_data_t *) window->client->user_data;        i = rand() % 4;	s_object_show(mdata->objectc[i]);	s_object_show(mdata->objectcc[i]);	handler0_p(window, event, handler);}static void handler3_p (s_window_t *window, s_event_t *event, s_handler_t *handler){        main_data_t *mdata = (main_data_t *) window->client->user_data;	s_thread_mutex_lock(mdata->objectc[0]->mut);	s_fillbox(mdata->objectc[0]->surface, 10,	                                      10,	                                      mdata->objectc[0]->surface->width - 20,	                                      mdata->objectc[0]->surface->height - 20,	                                      s_rgbcolor(mdata->objectc[0]->surface, rand() % 255, rand() % 255, rand() % 255));	s_object_update(mdata->objectc[0], &mdata->objectc[0]->surface->win);	s_thread_mutex_unlock(mdata->objectc[0]->mut);	handler0_p(window, event, handler);}int main (int argc, char *argv[]){        int c = 0;        int i = 0;        int j = 0;	int x = 60;	int y = 60;	int w = 400;	int h = 300;	s_handler_t *hndl;	s_window_t *window;	main_data_t *mdata;	srand(time(NULL));	s_client_init(&window);	s_window_new(window, WINDOW_MAIN, NULL);	s_window_set_title(window, "Demo - %s", argv[0]);	s_window_set_coor(window, 0, x, y, w, h);	s_fillbox(window->surface, 0, 0, 20, 20, s_rgbcolor(window->surface, 222, 222, 222));	s_fillbox(window->surface, 2, 2, 16, 16, s_rgbcolor(window->surface, 255, 0, 0));	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.p = handler0_p;	hndl->mouse.button = MOUSE_LEFTBUTTON;	s_handler_add(window, hndl);	s_fillbox(window->surface, 20, 0, 20, 20, s_rgbcolor(window->surface, 222, 222, 222));	s_fillbox(window->surface, 22, 2, 16, 16, s_rgbcolor(window->surface, 255, 0, 0));	s_handler_init(&hndl);	hndl->type = MOUSE_HANDLER;	hndl->mouse.x = 20;	hndl->mouse.y = 0;	hndl->mouse.w = 20;	hndl->mouse.h = 20;	hndl->mouse.p = handler1_p;	hndl->mouse.button = MOUSE_LEFTBUTTON;	s_handler_add(window, hndl);	s_fillbox(window->surface, 40, 0, 20, 20, s_rgbcolor(window->surface, 222, 222, 222));	s_fillbox(window->surface, 42, 2, 16, 16, s_rgbcolor(window->surface, 255, 0, 0));	s_handler_init(&hndl);	hndl->type = MOUSE_HANDLER;	hndl->mouse.x = 40;	hndl->mouse.y = 0;	hndl->mouse.w = 20;	hndl->mouse.h = 20;	hndl->mouse.p = handler2_p;	hndl->mouse.button = MOUSE_LEFTBUTTON;	s_handler_add(window, hndl);	s_fillbox(window->surface, 60, 0, 20, 20, s_rgbcolor(window->surface, 222, 222, 222));	s_fillbox(window->surface, 62, 2, 16, 16, s_rgbcolor(window->surface, 255, 0, 0));	s_handler_init(&hndl);	hndl->type = MOUSE_HANDLER;	hndl->mouse.x = 60;	hndl->mouse.y = 0;	hndl->mouse.w = 20;	hndl->mouse.h = 20;	hndl->mouse.p = handler3_p;	hndl->mouse.button = MOUSE_LEFTBUTTON;	s_handler_add(window, hndl);	mdata = (main_data_t *) s_malloc(sizeof(main_data_t));	window->client->user_data = (void *) mdata;		s_object_init(window, &(mdata->objectp), 500, 500, NULL);	for (i = 0; i < 4; i++) {		s_object_init(window, &(mdata->objectc[i]), 100, 100, mdata->objectp);		switch (i) {			case 0: c = s_rgbcolor(mdata->objectc[i]->surface, 255, 0, 0); break;			case 1: c = s_rgbcolor(mdata->objectc[i]->surface, 0, 255, 0); break;			case 2: c = s_rgbcolor(mdata->objectc[i]->surface, 0, 0, 255); break;			case 3: c = s_rgbcolor(mdata->objectc[i]->surface, 255, 255, 255); break;		}		s_fillbox(mdata->objectc[i]->surface, 0, 0, mdata->objectc[i]->surface->width, mdata->objectc[i]->surface->height, c);		if (i == 0) {			for (j = 0; j < 4; j++) {				s_object_init(window, &(mdata->objectcc[j]), 20, 20, mdata->objectc[i]);				switch (j) {					case 0: c = s_rgbcolor(mdata->objectcc[j]->surface, 0, 0, 0); break;					case 1: c = s_rgbcolor(mdata->objectcc[j]->surface, 0, 255, 0); break;					case 2: c = s_rgbcolor(mdata->objectcc[j]->surface, 0, 0, 255); break;					case 3: c = s_rgbcolor(mdata->objectcc[j]->surface, 255, 255, 255); break;				}				s_fillbox(mdata->objectcc[j]->surface, 0, 0, mdata->objectcc[j]->surface->width, mdata->objectcc[j]->surface->height, c);			}		}	}	s_window_set_coor(window, NO_FORM, window->surface->buf.x, window->surface->buf.y,	                                   mdata->objectp->surface->width + 20, mdata->objectp->surface->height + 60);        s_fillbox(window->surface, 0, 40, mdata->objectp->surface->width + 20, mdata->objectp->surface->height + 20, s_rgbcolor(window->surface, 222, 222, 222));	s_window_show(window);	s_client_main(window);	s_object_uninit(mdata->objectp);	s_free(mdata);	return 0;}#if defined(SINGLE_APP)s_single_app_t single_object = {	object_main,	1,	{"object"}};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -