예제 #1
0
파일: drawsvg.cpp 프로젝트: blimper/drawSVG
	void DrawSVG::render() {

		if (method == Hardware) {
			redraw();
		}

		if (method == Software) {
			display_pixels(&framebuffer[0]);
		}

		if (show_zoom) {
			draw_zoom();
		}

	}
예제 #2
0
파일: gpsapp.c 프로젝트: empeg/gpsapp
static int handle_input(void)
{
    static struct timeval pressed;
    static int long_press;
    struct timeval now, diff;
    unsigned long key;
    int rc;

    serial_poll();

    if (pressed.tv_sec && pressed.tv_usec) {
	gettimeofday(&now, NULL);
	timesub(&diff, &now, &pressed);
	/* LONG_PRESS? */
	if (diff.tv_sec >= 1) {
	    switch (visual) {
	    case VIEW_SATS:  visual = VIEW_MAP; break;
	    case VIEW_MAP:   visual = VIEW_ROUTE; break;
	    case VIEW_ROUTE: visual = VIEW_SATS; break;
	    }
	    /* allow for cycling by keeping the button pressed */
	    pressed.tv_sec  = now.tv_sec;
	    pressed.tv_usec = now.tv_usec;
	    long_press = 1;
	    do_refresh = 1;
	    return 0;
	}
    }

    rc = empeg_getkey(&key);
    if (rc != 1) return rc;

    switch(key) {
    case IR_TOP_BUTTON_PRESSED:
	if (!load_route && !menu)
	    return 1; /* done, wait to be selected again in the hijack menu */

	load_route = 0;
	menu = 0;
	do_refresh = 1;
	break;

    case IR_BOTTOM_BUTTON_PRESSED:
	gettimeofday(&pressed, NULL);
	break;

    case IR_BOTTOM_BUTTON_RELEASED:
	pressed.tv_sec = pressed.tv_usec = 0;
	if (long_press) {
	    long_press = 0;
	    break;
	}
	if (load_route) {
	    route_load();
	    load_route = 0;
	    menu = 0;
	}
	else if (menu) {
	    switch(menu_pos) {
	    case 0: load_route = routes_init(); break;
	    case 1:
		switch (visual) {
		case VIEW_SATS:  visual = VIEW_MAP; break;
		case VIEW_MAP:   visual = VIEW_ROUTE; break;
		case VIEW_ROUTE: visual = VIEW_SATS; break;
		}
		break;
	    case 2:
		if (++show_popups == 3)
		    show_popups = 0;
		break;
	    case 3: show_metric = 1 - show_metric; break;
	    case 4: show_gpscoords = 1 - show_gpscoords;  break;
	    case 5: show_time = 1 - show_time; break;
	    case 6: show_track = 1 - show_track; break;
	    case 7:
		if (++coord_format == 3)
		    coord_format = 0;
		break;
	    }
	    menu = 0; lastmenu = 3; lastmenu_pos = menu_pos;
	}
	else
	    menu = 1;

	do_refresh = 1;
	break;

    case IR_LEFT_BUTTON_PRESSED:
	if (load_route)
	    route_select(0);
	else if (menu) {
	    if (--menu_pos < 0)
		menu_pos = MENU_ENTRIES - 1;
	}
	else {
	    switch (visual) {
	    case VIEW_SATS:  break;
	    case VIEW_MAP:   draw_zoom(0); break;
	    case VIEW_ROUTE: route_skipwp(-1); break;
	    }
	}
	do_refresh = 1;
	break;

    case IR_RIGHT_BUTTON_PRESSED:
	if (load_route)
	    route_select(1);
	else if (menu) {
	    if (++menu_pos >= MENU_ENTRIES)
		menu_pos = 0;
	}
	else {
	    switch (visual) {
	    case VIEW_SATS:  break;
	    case VIEW_MAP:   draw_zoom(1); break;
	    case VIEW_ROUTE: route_skipwp(1); break;
	    }
	}
	do_refresh = 1;
	break;

    case IR_KNOB_LEFT:
    case IR_KNOB_RIGHT:
	route_skipwp(key == IR_KNOB_LEFT ? -1 : 1);
	route_locate();
	do_refresh = 1;
	break;

    case IR_KNOB_PRESSED:
    default:
	break;
    }

    return 0;
}