示例#1
0
// this is an eventfilter for the KTabListBoxTable which holds all
// of the todo items.
bool TodoView::eventFilter(QObject *, QEvent *event)
{
  if (event->type() == Event_MouseButtonPress) {
    QMouseEvent *e = (QMouseEvent *) event;
    setUpdatesEnabled(FALSE);
    doMouseEvent(e);
    setUpdatesEnabled(TRUE);
    return TRUE;
  }
  if (event->type() == Event_Resize) {
      adjustColumns();
  }
  return FALSE;
}
示例#2
0
文件: main.c 项目: gvorob/wavemachine
int main(int argc, char *argv[]){
	int i;
	struct timerparams tparams;
	SDL_Event e;
	sim_Sim *mysim;
	SDL_Renderer *ren;
	int temp;
	SDL_Surface *iconSurf, *isoSurf;
	SDL_TimerID timerid;
	Uint32 updatetime;
	int tickspersecond;
	int droppedframes;

	gridviewport.x = 0;
	gridviewport.y = 0;
	gridviewport.w = WIDTH * CELLSIZE;
	gridviewport.h = HEIGHT * CELLSIZE;

	isoviewport.x = 500;
	isoviewport.y = 700;

	toolbox.x = 0;
	toolbox.y = 400;
	toolbox.w = 400;
	toolbox.h = 400;

	uistate.toolselected = TOOL_ADD;
	uistate.demoselected = MODE_NONE;
	uistate.paused = 0;
	uistate.mouseinwindow = 1;

	ren = setupWindow();

	SDL_SetRenderDrawBlendMode(ren, SDL_BLENDMODE_BLEND);

	if((iconSurf = SDL_LoadBMP("icons.bmp")) == NULL) {
		printf("Failed to load icons.bmp");
		exit(-1);
	}
	iconText = SDL_CreateTextureFromSurface(ren, iconSurf);

	isoSurf = SDL_LoadBMP("tile.bmp");
	isoText = SDL_CreateTextureFromSurface(ren, isoSurf);

	if((tparams.CustomTimerEvent = SDL_RegisterEvents(1)) == -1){
		printf("Failed to register customevent\n");
		exit(-1);
	}
	tparams.timerlock = 0;

	if((timerid = SDL_AddTimer(TIMERINTERVAL, timercallback, (void *) &tparams)))
		;
	else
		fprintf(stderr,"Timer failed to start\n");


	mysim = sim_CreateSimulation(WIDTH, HEIGHT, 50.5);

	int quit = 0;

	updatetime = SDL_GetTicks();
	tickspersecond = 0;
	

	while (!quit) {
		droppedframes = MAXDROPPEDFRAMES;

		doMouseEvent(&uistate, mysim);
			
		drawGrid(ren, mysim, &gridviewport);
		drawIso(ren, mysim, &isoviewport);
		drawTools(ren, &uistate, &toolbox);
		SDL_RenderPresent(ren);

		
		//fprintf(stderr, "b");
		if(SDL_GetTicks() - updatetime > 1000) {
			updatetime = SDL_GetTicks();
			if(DEBUGPRINT)
				fprintf(stderr, "%d\n", tickspersecond);
			tickspersecond = 0;
		}


		while ((temp = SDL_PollEvent(&e)) != 0 && !quit) {
			switch (e.type) {
				case SDL_QUIT:
					quit = 1;
					break;
				case SDL_USEREVENT:
					if(!droppedframes || uistate.paused)
						break; //If it drops too many frames, clear the event queue
					droppedframes--;
					//fprintf(stderr, "c");
					tickspersecond++;
					for(i = 0; i < STEPSPERTICK; i++) {
						doDemos(uistate.demoselected, mysim);
						sim_step(mysim, TICKTIME);
					}
					//printGrid(mysim);
					tparams.timerlock = 0;
					break;
				case SDL_MOUSEMOTION:
				case SDL_MOUSEBUTTONDOWN:
				case SDL_MOUSEBUTTONUP:
					//doMouseEvent(&e, &selected, &hovered, mysim);
					break;
				case SDL_WINDOWEVENT:
					switch (e.window.event) {
						case SDL_WINDOWEVENT_ENTER:
							uistate.mouseinwindow = 1;
						case SDL_WINDOWEVENT_LEAVE:
							uistate.mouseinwindow = 0;
							break;
					}
					break;
				default:
					if(DEBUGPRINT) 
						fprintf(stderr, "UNKNOWN EVENT TYPE\n");
					break;
			}
		}
	}

	cleanup();
	return 0;
}