Exemplo n.º 1
0
static void redraw(GP_Backend *backend)
{
	GP_Context *context = backend->context;

	/* Now draw some testing patters */
	black_pixel = GP_RGBToContextPixel(0x00, 0x00, 0x00, context);
	white_pixel = GP_RGBToContextPixel(0xff, 0xff, 0xff, context);
	red_pixel   = GP_RGBToContextPixel(0xff, 0x00, 0x00, context);
	blue_pixel  = GP_RGBToContextPixel(0x00, 0x00, 0xff, context);
	green_pixel = GP_RGBToContextPixel(0x00, 0xff, 0x00, context);

	GP_Fill(context, white_pixel);

	unsigned int i, j;
	for (i = 0; i < 40; i++) {
		GP_HLineXYW(context, 0, i, i, black_pixel);
		GP_HLineXYW(context, 1, i + 40, i, black_pixel);
		GP_HLineXYW(context, 2, i + 80, i, black_pixel);
		GP_HLineXYW(context, 3, i + 120, i, black_pixel);
		GP_HLineXYW(context, 4, i + 160, i, black_pixel);
		GP_HLineXYW(context, 5, i + 200, i, black_pixel);
		GP_HLineXYW(context, 6, i + 240, i, black_pixel);
		GP_HLineXYW(context, 7, i + 280, i, black_pixel);
	}

	for (i = 0; i < 256; i++) {
		for (j = 0; j < 256; j++) {
			uint8_t val = 1.00 * sqrt(i*i + j*j)/sqrt(2) + 0.5;

			GP_Pixel pix = GP_RGBToContextPixel(i, j, val, context);
			GP_PutPixel(context, i + 60, j + 10, pix);
		}
	}

	GP_Text(context, NULL, 60, 270, GP_VALIGN_BELOW|GP_ALIGN_RIGHT,
	        black_pixel, white_pixel, "Lorem Ipsum dolor sit...");

	GP_Text(context, NULL, 60, 290, GP_VALIGN_BELOW|GP_ALIGN_RIGHT,
	        red_pixel, white_pixel, "Lorem Ipsum dolor sit...");

	GP_Text(context, NULL, 60, 310, GP_VALIGN_BELOW|GP_ALIGN_RIGHT,
	        green_pixel, white_pixel, "Lorem Ipsum dolor sit...");

	GP_Text(context, NULL, 60, 330, GP_VALIGN_BELOW|GP_ALIGN_RIGHT,
	        blue_pixel, white_pixel, "Lorem Ipsum dolor sit...");

	/* Update the backend screen */
	GP_BackendFlip(backend);
}
Exemplo n.º 2
0
static void event_loop(void)
{
	for (;;) {
		GP_BackendWait(backend);

		while (GP_BackendEventsQueued(backend)) {
			GP_Event ev;

			GP_BackendGetEvent(backend, &ev);
			GP_EventDump(&ev);

			switch (ev.type) {
			case GP_EV_KEY:
				draw_event(&ev);

				switch (ev.val.key.key) {
				case GP_KEY_ESC:
					GP_BackendExit(backend);
					exit(0);
				break;
				case GP_BTN_LEFT:
					GP_HLineXXY(win, ev.cursor_x - 3,
					            ev.cursor_x + 3,
						    ev.cursor_y, red);
					GP_VLineXYY(win, ev.cursor_x,
					            ev.cursor_y - 3,
						    ev.cursor_y + 3, red);
					GP_BackendFlip(backend);
				break;
				default:
				break;
				}
			break;
			case GP_EV_REL:
				switch (ev.code) {
				static int size = 0;
				case GP_EV_REL_POS:
					if (GP_EventGetKey(&ev, GP_BTN_LEFT)) {
						GP_PutPixel(win, ev.cursor_x,
						            ev.cursor_y, green);
					}
					int align = GP_ALIGN_RIGHT|GP_VALIGN_BOTTOM;

					GP_TextClear(win, NULL, 20, 40, align,
					             black, size);
					size = GP_Print(win, NULL, 20, 40, align,
					                white, black, "X=%3u Y=%3u dX=%3i dY=%3i",
						        ev.cursor_x, ev.cursor_y,
							ev.val.rel.rx, ev.val.rel.ry);
					GP_BackendFlip(backend);
				break;
				}
			break;
			case GP_EV_SYS:
				switch (ev.code) {
				case GP_EV_SYS_RESIZE:
					GP_BackendResizeAck(backend);
				break;
				case GP_EV_SYS_QUIT:
					GP_BackendExit(backend);
					exit(0);
				break;
				}
			break;
			}
		}
	}
}