Exemple #1
0
static void process_events( void )
{
    /* Our SDL event placeholder. */
    SDL_Event event;

    /* Grab all the events off the queue. */
    while( SDL_PollEvent( &event ) ) {

        switch( event.type ) {
        case SDL_MOUSEMOTION:
            s.pos.x =  30*( event.motion.x - width /2) / (double)width;
            s.pos.y = -12*( event.motion.y - height/2) / (double)height;
            printf("%f %f\n",s.pos.x,s.pos.y);
            break;

        case SDL_KEYDOWN:
            /* Handle key presses. */
            handle_key_down( &event.key.keysym );
            break;

        case SDL_QUIT:
            /* Handle quit requests (like Ctrl-c). */
            quit_tutorial( 0 );
            break;
        }

    }
}
Exemple #2
0
static void process_events( void )
{
    /* Our SDL event placeholder. */
    SDL_Event event;

    /* Grab all the events off the queue. */
    while( SDL_PollEvent( &event ) ) {

        switch( event.type ) {
        case SDL_KEYDOWN:
            /* Handle key presses. */
            handle_key_down( &event.key.keysym );
            break;
        case SDL_QUIT:
            /* Handle quit requests (like Ctrl-c). */
            quit_tutorial( 0 );
            break;
		case SDL_VIDEORESIZE:
			{
				glViewport(0, 0, (GLsizei) event.resize.w, (GLsizei) event.resize.h);
				glMatrixMode(GL_PROJECTION);
				glLoadIdentity();
				float w = (float)event.resize.w;
				float h = (float)event.resize.h;
				gluPerspective( 60.0, w/h, 1.0, 1024.0 );
				glMatrixMode(GL_MODELVIEW);

				g_pTextDriver->getScreenParams(event.resize.w, event.resize.h);
			}
			break;
        }

    }

}
Exemple #3
0
static void process_events( void )
{
    /* Our SDL event placeholder. */
    SDL_Event event;

    /* Grab all the events off the queue. */
    while( SDL_PollEvent( &event ) ) {

        switch( event.type ) {
        case SDL_KEYUP:
            handle_key_up( &event.key.keysym );
			break;

        case SDL_KEYDOWN:
            /* Handle key presses. */
            handle_key_down( &event.key.keysym );
            break;

        case SDL_QUIT:
            /* Handle quit requests (like Ctrl-c). */
            quit_tutorial( 0 );
            break;
        }

    }
}
Exemple #4
0
int moth_gui::read_book(moth_book *book)
{
	SDL_Event event;
	this->book = book;
	create_textures();
	index.name = "START";
	book->build_index(index);
	while(running) {
		while(SDL_PollEvent(&event)) {
			switch( event.type ) {
			case SDL_KEYDOWN:
				handle_key_down(&event.key.keysym);
				break;
			case SDL_KEYUP:
				handle_key_up(&event.key.keysym);
				break;
			case SDL_MOUSEMOTION:
				handle_mouse_motion(&event.motion);
				break;
			case SDL_MOUSEBUTTONDOWN:
			case SDL_MOUSEBUTTONUP:
				handle_mouse_button(&event.button);
				break;
			case SDL_VIDEORESIZE:
				handle_resize(&event.resize);
				break;
			case SDL_QUIT:
				running = 0;
				break;
			}
		}
		show_pages();
	}
	return SUCCESS;
}
Exemple #5
0
void View::key_down(SDL_keysym key) {
    cout << "key down!: " << key.sym << endl;
    
    if (!handle_key_down(key)) {
//        throw Unhandled_Key(key);
    }
}
Exemple #6
0
static void process_events( void )
{
    /* Our SDL event placeholder. */
    SDL_Event event;
	g_mouse.rel_x  = g_mouse.rel_y = 0;

    /* Grab all the events off the queue. */
    while( SDL_PollEvent( &event ) ) {

		if(UI::Update(&event))
			continue;

        switch( event.type ) {
        case SDL_KEYDOWN:
            handle_key_down( &event.key.keysym );
            break;
        case SDL_MOUSEMOTION:
            g_mouse.x = event.motion.x;
            g_mouse.y = event.motion.y;
            g_mouse.rel_x = event.motion.xrel;
            g_mouse.rel_y = event.motion.yrel;
            break;
        case SDL_MOUSEBUTTONDOWN:
            if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN)
                g_camera.dist += event.button.button == SDL_BUTTON_WHEELUP ? 2 : -2;
            else
                g_mouse.buttons[event.button.button-1] = true;
            break;
        case SDL_MOUSEBUTTONUP:
            if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN)
                g_camera.dist += event.button.button == SDL_BUTTON_WHEELUP ? 2 : -2;
            else
                g_mouse.buttons[event.button.button-1] = false;
            break;
        case SDL_QUIT:
            /* Handle quit requests (like Ctrl-c). */
            quit_tutorial( 0 );
            break;
		case SDL_VIDEORESIZE:
			{
				glViewport(0, 0, (GLsizei) event.resize.w, (GLsizei) event.resize.h);
				glMatrixMode(GL_PROJECTION);
				glLoadIdentity();
				float w = (float)event.resize.w;
				float h = (float)event.resize.h;
                g_width = event.resize.w;
                g_height = event.resize.h;
				//gluPerspective( 60.0, w/h, 1.0, 1024.0 );
                gluOrtho2D(-1.0*w/h,1.0*w/h,-1,1);
				glMatrixMode(GL_MODELVIEW);

				g_pTextDriver->getScreenParams(event.resize.w, event.resize.h);
			}
			break;
        }

    }

}
Exemple #7
0
static void process_events (void) {
    SDL_Event event;
    while (SDL_PollEvent(&event)) {
        switch (event.type) {
            case SDL_KEYDOWN:
                handle_key_down(&event.key.keysym);
                break;
            case SDL_QUIT:
                quit(0);
                break;
        }
    }
}
Exemple #8
0
int process_events(void) {
    SDL_Event event;
    while(SDL_PollEvent(&event)) {
        switch(event.type) {
            case SDL_KEYDOWN:
                return handle_key_down(event.key.keysym);
                break;
            case SDL_QUIT:
                return -1;
                break;
        }
    }
    return 0;
}
Exemple #9
0
/* General event callback */
static void process_events () {
    SDL_Event event;

    /* Grab all the events off the queue */
    while (SDL_PollEvent(&event)) {
        switch( event.type ) {
        case SDL_KEYDOWN:
            /* key presses */
            handle_key_down( &event.key.keysym );
            break;
        case SDL_QUIT:
            /* quit requests (like Ctrl-c) */
            running = 0;
            break;
        }
    }
}
static void process_events()
{
	/* Our SDL event placeholder. */
	SDL_Event event;

	/* Grab all the events off the queue. */
	while (SDL_PollEvent(&event)) {

		switch (event.type) {
		case SDL_KEYDOWN:
			/* Handle key presses. */
			handle_key_down(&event.key.keysym);
			break;
		case SDL_QUIT:
			/* Handle quit requests (like Ctrl-c). */
			quit(0);
			break;
		case SDL_VIDEORESIZE:
			real_screen_width = event.resize.w;
			real_screen_height = event.resize.h;

			screen = SDL_SetVideoMode(real_screen_width, real_screen_height,
					bpp, SDL_OPENGL | SDL_RESIZABLE);
			sng_set_screen_size(real_screen_width, real_screen_height);
			break;
		case SDL_MOUSEBUTTONDOWN: {
				int button = sdl_button_to_int(event.button.button);
				if (button > 0)
					main_da_button_press(button, event.button.x, event.button.y);
			}
			break;
		case SDL_MOUSEBUTTONUP: {
				int button = sdl_button_to_int(event.button.button);
				if (button > 0)
					main_da_button_release(button, event.button.x, event.button.y);
			}
			break;
		case SDL_MOUSEMOTION:
			main_da_motion_notify(event.motion.x, event.motion.y);
			break;
		}
	}

}
Exemple #11
0
void process_events( void )
{
  /* Our SDL event placeholder. */
  SDL_Event event;
  
  /* Grab all the events off the queue. */
  while( SDL_PollEvent( &event ) ) {
    
    switch( event.type ) {
    case SDL_KEYDOWN:
      /* Handle key presses. */
      handle_key_down( &event.key.keysym );
      break;
    case SDL_QUIT:
      /* Handle quit requests */    
      quit(1);
      break;
    case SDL_MOUSEBUTTONDOWN:
      handle_mouse_down(&event.button);
      break;
    }
  }
}
Exemple #12
0
static void process_events(void)
{
	/* Our SDL event placeholder. */
	SDL_Event event;

    /* Only poll + sleep if we are autoscrolling or doing
     * something else that is interactive */
    if (((autoscroll) && autoscroll_var) || key_button_down) {
        if (!SDL_PollEvent(&event)) {
            /* If we add a sleep, the scrolling won't be super smooth.
             * Regardless, I think we need to find something to make sure we
             * don't eat 100% cpu just checking for events.
             *
             * I found that 10ms is not a bad wait. Theoretically we want to
             * wait 1000ms / fps (usually 60) -> 16ms.
             * */
            usleep(16000);

            if (autoscroll) {
                if (key_button_down & LEAST_KEY_DOWN)
                    autoscroll_var += 1;

                if (key_button_down & LEAST_KEY_UP)
                    autoscroll_var -= 1;

                scroll -= autoscroll_var;
            } else {
                if (key_button_down & LEAST_KEY_DOWN)
                    scroll -= 5;

                if (key_button_down & LEAST_KEY_UP)
                    scroll += 5;
            }

            redraw = 1;
        }
    } else {
        SDL_WaitEvent(&event);
    }

next_event:

    switch (event.type) {
    case SDL_KEYDOWN:
        /* Handle key presses. */
        handle_key_down(&event.key.keysym);
        break;

    case SDL_KEYUP:
        handle_key_up(&event.key.keysym);
        break;

    case SDL_QUIT:
        /* Handle quit requests (like Ctrl-c). */
        quit_tutorial(0);
        break;

    case SDL_VIDEORESIZE:
        handle_resize(event.resize);
        break;

    case SDL_VIDEOEXPOSE:
        redraw = 1;
        break;

    case SDL_MOUSEBUTTONDOWN:
        handle_mouse_down(&event.button);
        break;

    case SDL_MOUSEBUTTONUP:
        handle_mouse_up(&event.button);
        break;

    case SDL_MOUSEMOTION:
        handle_mouse_motion(&event.motion);
        break;

    /* A thread completed its rendering
     *
     * The thread structure of the completed job is contained
     * within the data1 pointer of the event.
     */
    case LEAST_PAGE_COMPLETE:
        finish_page_render((struct least_thread*)event.user.data1);
        redraw = 1;
        break;

    }

    /* Clear event, just in case SDL doesn't do this (TODO) */
    memset(&event, 0, sizeof(SDL_Event));
    /* If there are more events, handle them before drawing.
     * This is required for scrolling with the mouse - without this,
     * it is pretty slow and lags. */
    if (SDL_PollEvent(&event)) {
        goto next_event;
    }
}
Exemple #13
0
	int
main(int argc, char* argv[])
{
	Display* display;
	Window win;
	char *display_name = getenv("DISPLAY");
	GC gc, rev_gc;
    Atom wmDelete;
	struct CEventDescriptor event =
	{
		.Type = EVENT_NULL
	};

	InitGUIServer();
	ClearScreen();
	while (!ProcessGUIServer(&event))
		;

	display = XOpenDisplay(display_name);
	if (display == NULL) {
		fprintf(stderr, "%s: cannot connect to X server '%s'\n",
				argv[0], display_name);
		exit(1);
	}

	win = create_simple_window(display, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
	wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", True);
	XSetWMProtocols(display, win, &wmDelete, 1);

	gc = create_gc(display, win, 0);
	rev_gc = create_gc(display, win, 1);

	XSelectInput(display, win, ExposureMask | KeyPressMask |
			ButtonPressMask | StructureNotifyMask);

	{
		int done = 0;
		XEvent an_event;
		while (!done) {
			XNextEvent(display, &an_event);
			switch (an_event.type) {
				case Expose:
					handle_expose(display, gc, rev_gc, (XExposeEvent*)&an_event.xexpose);
					break;

				case ButtonPress:
					handle_button_down(display, gc, rev_gc,
							(XButtonEvent*)&an_event.xbutton);
					break;

				case KeyPress:
					done = handle_key_down(display, gc, rev_gc,
							(XKeyEvent*)&an_event.xkey);
					break;

				case ClientMessage:
					done = True;
					break;

				default:
					break;
			}
		}
	}

	XFreeGC(display, gc);
	XFreeGC(display, rev_gc);

	XCloseDisplay(display);
	return 0;
}