Example #1
0
void event_loop(void)
{
	GP_Event ev;

	for (;;) {
		GP_BackendWaitEvent(win, &ev);

		switch (ev.type) {
		case GP_EV_KEY:
			if (ev.code != GP_EV_KEY_DOWN)
				continue;

			switch (ev.val.key.key) {
			case GP_KEY_SPACE:
				if (font)
					font_flag = (font_flag + 1) % 5;
				else
					font_flag = (font_flag + 1) % 4;

				redraw_screen();
				GP_BackendFlip(win);
			break;
			case GP_KEY_UP:
				tracking++;
				redraw_screen();
				GP_BackendFlip(win);
			break;
			case GP_KEY_DOWN:
				tracking--;
				redraw_screen();
				GP_BackendFlip(win);
			break;
			case GP_KEY_B:
				font_h++;
				if (font_path) {
					GP_FontFaceFree(font);
					font = GP_FontFaceLoad(font_path, 0, font_h);
					redraw_screen();
					GP_BackendFlip(win);
				}
			break;
			case GP_KEY_S:
				font_h--;
				if (font_path) {
					GP_FontFaceFree(font);
					font = GP_FontFaceLoad(font_path, 0, font_h);
					redraw_screen();
					GP_BackendFlip(win);
				}
			break;
			case GP_KEY_ESC:
				GP_BackendExit(win);
				exit(0);
			break;
			}
		}
	}
}
Example #2
0
int main(int argc, char *argv[])
{
	GP_Backend *backend;
	const char *backend_opts = "X11:100x100";
	int opt;

	while ((opt = getopt(argc, argv, "b:h")) != -1) {
		switch (opt) {
		case 'b':
			backend_opts = optarg;
		break;
		case 'h':
			GP_BackendInit(NULL, NULL);
			return 0;
		break;
		default:
			fprintf(stderr, "Invalid paramter '%c'\n", opt);
			return 1;
		}
	}

	backend = GP_BackendInit(backend_opts, "Backend Example");

	if (backend == NULL) {
		fprintf(stderr, "Failed to initialize backend\n");
		return 1;
	}

	redraw(backend);

	/* Handle events */
	for (;;) {
		GP_Event ev;

		GP_BackendWaitEvent(backend, &ev);

		GP_EventDump(&ev);

		switch (ev.type) {
		case GP_EV_KEY:
			switch (ev.val.val) {
			case GP_KEY_ESC:
			case GP_KEY_Q:
				GP_BackendExit(backend);
				return 0;
			break;
			}
		break;
		case GP_EV_SYS:
			switch (ev.code) {
			case GP_EV_SYS_RESIZE:
				GP_BackendResizeAck(backend);
				redraw(backend);
			break;
			case GP_EV_SYS_QUIT:
				GP_BackendExit(backend);
				return 0;
			break;
			}
		break;
		}
	}

	GP_BackendExit(backend);

	return 0;
}
Example #3
0
void draw_help(GP_Backend *backend)
{
	int loff = 0, last, xoff = 0;

	last = redraw_help(backend, loff, xoff);

	for (;;) {
		GP_Event ev;

		while (GP_BackendWaitEvent(backend, &ev)) {
			switch (ev.type) {
			case GP_EV_KEY:
				if (ev.code != GP_EV_KEY_DOWN)
					continue;

				switch (ev.val.key.key) {
				case GP_KEY_DOWN:
					if (last < keys_help_len)
						last = redraw_help(backend, ++loff, xoff);
				break;
				case GP_KEY_UP:
					if (loff > 0)
						last = redraw_help(backend, --loff, xoff);
				break;
				case GP_KEY_LEFT:
					last = redraw_help(backend, loff, --xoff);
				break;
				case GP_KEY_RIGHT:
					last = redraw_help(backend, loff, ++xoff);
				break;
				case GP_KEY_PAGE_DOWN:
					if (last < keys_help_len) {
						if (loff + max_lines(backend) >= keys_help_len)
							break;

						loff += max_lines(backend);

						last = redraw_help(backend, loff, xoff);
					}
				break;
				case GP_KEY_PAGE_UP:
					if (loff > 0) {
						loff -= max_lines(backend);
						if (loff < 0)
							loff = 0;
						last = redraw_help(backend, loff, xoff);
					}
				break;
				default:
				return;
				}
			break;
			case GP_EV_SYS:
				switch (ev.code) {
				case GP_EV_SYS_RESIZE:
					GP_BackendResizeAck(backend);
					last = redraw_help(backend, loff, xoff);
				break;
				case GP_EV_SYS_QUIT:
					GP_BackendPutEventBack(backend, &ev);
					return;
				}
			}
		}
	}
}
Example #4
0
void event_loop(void)
{
	GP_Event ev;

	for (;;) {
		GP_BackendWaitEvent(backend, &ev);

		switch (ev.type) {
		case GP_EV_KEY:
			if (ev.code != GP_EV_KEY_DOWN)
				continue;

			switch (ev.val.key.key) {
			case GP_KEY_SPACE:
				if (font)
					font_flag = (font_flag + 1) % 6;
				else
					font_flag = (font_flag + 1) % 5;

				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_RIGHT:
				tracking++;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_LEFT:
				tracking--;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_UP:
				warp_up(1);
			break;
			case GP_KEY_DOWN:
				warp_down(1);
			break;
			case GP_KEY_DOT:
				space++;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_COMMA:
				space--;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_RIGHT_BRACE:
				mul++;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_LEFT_BRACE:
				if (mul > 0)
					mul--;
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			case GP_KEY_PAGE_UP:
				warp_up(30);
			break;
			case GP_KEY_PAGE_DOWN:
				warp_down(30);
			break;
			case GP_KEY_ESC:
				GP_BackendExit(backend);
				exit(0);
			break;
			}
		break;
		case GP_EV_SYS:
			switch(ev.code) {
			case GP_EV_SYS_QUIT:
				GP_BackendExit(backend);
				exit(0);
			break;
			case GP_EV_SYS_RESIZE:
				GP_BackendResizeAck(backend);
				redraw_screen();
				GP_BackendFlip(backend);
			break;
			}
		break;
		}
	}
}
Example #5
0
static void event_loop(void)
{
	GP_Event ev;

	for (;;) {
		GP_BackendWaitEvent(win, &ev);

		switch (ev.type) {
		case GP_EV_KEY:
			if (ev.code != GP_EV_KEY_DOWN)
				continue;

			switch (ev.val.key.key) {
			case GP_KEY_X:
				win->context->x_swap = !win->context->x_swap;
			break;
			case GP_KEY_Y:
				win->context->y_swap = !win->context->y_swap;
			break;
			case GP_KEY_R:
				win->context->axes_swap = !win->context->axes_swap;
				GP_SWAP(X, Y);
			break;
			case GP_KEY_SPACE:
				font_flag++;

				if (font) {
					if (font_flag > 5)
						font_flag = 0;
				} else {
					if (font_flag > 4)
						font_flag = 0;
				}
			break;
			case GP_KEY_UP:
				style.pixel_xspace++;
				style.pixel_yspace++;
			break;
			case GP_KEY_DOWN:
				style.pixel_xspace--;
				style.pixel_yspace--;
			break;
			case GP_KEY_RIGHT:
				style.pixel_xmul++;
				style.pixel_ymul++;
			break;
			case GP_KEY_LEFT:
				style.pixel_xmul--;
				style.pixel_ymul--;
			break;
			case GP_KEY_ESC:
				GP_BackendExit(win);
				exit(0);
			break;
			}
		break;
		case GP_EV_SYS:
			switch(ev.code) {
			case GP_EV_SYS_QUIT:
				GP_BackendExit(win);
				exit(0);
			break;
			case GP_EV_SYS_RESIZE:
				GP_BackendResizeAck(win);
				X = win->context->w;
				Y = win->context->h;
			break;
			}
		break;
		}

		redraw_screen();
		GP_BackendFlip(win);
	}
}