From 61cc452f1b5256d7c2f3521ddcf4b8ad18e05023 Mon Sep 17 00:00:00 2001 From: Serge Vakulenko Date: Tue, 6 Oct 2015 19:02:00 -0700 Subject: [PATCH] TFT examples updated. --- share/examples/gpanel/tft.c | 88 +++++++++++--------------------- share/examples/gpanel/tftetris.c | 68 +++++++++--------------- src/libgpanel/circle.c | 2 +- src/libgpanel/image.c | 2 +- src/libgpanel/pixel.c | 2 +- 5 files changed, 59 insertions(+), 103 deletions(-) diff --git a/share/examples/gpanel/tft.c b/share/examples/gpanel/tft.c index 40eba94..bc7fcad 100644 --- a/share/examples/gpanel/tft.c +++ b/share/examples/gpanel/tft.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #define BLACK 0x0000 @@ -13,83 +14,56 @@ int fd = -1; -//#define PIX_BUF_SIZ 64 // 21 fps -#define PIX_BUF_SIZ 128 // 28 fps on full-screen continuous box() -//#define PIX_BUF_SIZ 256 // 32 fps -//#define PIX_BUF_SIZ 512 // 34 fps - -void pixel(unsigned x, unsigned y, - unsigned short color) +void pixel(unsigned x, unsigned y, unsigned color) { - unsigned short wincoo[4]; - unsigned short data[2]; + struct gpanel_pixel_t param; - wincoo[0] = wincoo[2] = x; - wincoo[1] = wincoo[3] = y; - ioctl(fd, 0xC0C0, wincoo); - - *data = 1; - data[1] = color; - ioctl(fd, 0xDADA, data); -} - -void fill(unsigned count, unsigned short color) -{ - unsigned short data[1 + PIX_BUF_SIZ]; - - unsigned cnt = (count < PIX_BUF_SIZ) ? count : PIX_BUF_SIZ; - while (cnt) - data[cnt--] = color; - - while (count) - { - cnt = (count < PIX_BUF_SIZ) ? count : PIX_BUF_SIZ; - *data = cnt; - ioctl(fd, 0xDADA, data); - count -= cnt; - } + param.color = color; + param.x = x; + param.y = y; + ioctl(fd, GPANEL_PIXEL, ¶m); } void lineh(unsigned x, unsigned y, - unsigned length, unsigned short color) + unsigned length, unsigned color) { - unsigned short wincoo[4]; + struct gpanel_line_t param; - wincoo[0] = x; - wincoo[1] = wincoo[3] = y; - wincoo[2] = x + length - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(length, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x + length - 1; + param.y1 = y; + ioctl(fd, GPANEL_LINE, ¶m); } void linev(unsigned x, unsigned y, - unsigned length, unsigned short color) + unsigned length, unsigned color) { - unsigned short wincoo[4]; + struct gpanel_line_t param; - wincoo[0] = wincoo[2] = x; - wincoo[1] = y; - wincoo[3] = y + length - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(length, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x; + param.y1 = y + length - 1; + ioctl(fd, GPANEL_LINE, ¶m); } void box(unsigned x, unsigned y, unsigned width, unsigned height, - unsigned short color, - int solid) + unsigned color, int solid) { if (solid) { - unsigned short wincoo[4]; + struct gpanel_rect_t param; - wincoo[0] = x; wincoo[1] = y; - wincoo[2] = x + width - 1; wincoo[3] = y + height - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(width * height, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x + width - 1; + param.y1 = y + height - 1; + ioctl(fd, GPANEL_FILL, ¶m); } else { diff --git a/share/examples/gpanel/tftetris.c b/share/examples/gpanel/tftetris.c index 7054ed6..7e12052 100644 --- a/share/examples/gpanel/tftetris.c +++ b/share/examples/gpanel/tftetris.c @@ -41,6 +41,7 @@ volatile int jx = 0, jy = 0; #include #include #include +#include int fd = -1; int fdx = -1; @@ -71,65 +72,46 @@ void delay(unsigned long ms) usleep(ms * 1000); } -#define PIX_BUF_SIZ 128 // 28 fps on full-screen continuous box() - -void fill(unsigned count, unsigned short color) -{ - unsigned short data[1 + PIX_BUF_SIZ]; - - unsigned cnt = (count < PIX_BUF_SIZ) ? count : PIX_BUF_SIZ; - while (cnt) - data[cnt--] = color; - - while (count) - { - cnt = (count < PIX_BUF_SIZ) ? count : PIX_BUF_SIZ; - *data = cnt; - ioctl(fd, 0xDADA, data); - count -= cnt; - } -} - void lineh(unsigned x, unsigned y, - unsigned length, unsigned short color) + unsigned length, unsigned color) { - unsigned short wincoo[4]; + struct gpanel_line_t param; - wincoo[0] = x; - wincoo[1] = wincoo[3] = y; - wincoo[2] = x + length - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(length, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x + length - 1; + param.y1 = y; + ioctl(fd, GPANEL_LINE, ¶m); } void linev(unsigned x, unsigned y, - unsigned length, unsigned short color) + unsigned length, unsigned color) { - unsigned short wincoo[4]; + struct gpanel_line_t param; - wincoo[0] = wincoo[2] = x; - wincoo[1] = y; - wincoo[3] = y + length - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(length, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x; + param.y1 = y + length - 1; + ioctl(fd, GPANEL_LINE, ¶m); } void box(unsigned x, unsigned y, unsigned width, unsigned height, - unsigned short color, - int solid) + unsigned color, int solid) { if (solid) { - unsigned short wincoo[4]; + struct gpanel_rect_t param; - wincoo[0] = x; wincoo[1] = y; - wincoo[2] = x + width - 1; wincoo[3] = y + height - 1; - ioctl(fd, 0xC0C0, wincoo); - - fill(width * height, color); + param.color = color; + param.x0 = x; + param.y0 = y; + param.x1 = x + width - 1; + param.y1 = y + height - 1; + ioctl(fd, GPANEL_FILL, ¶m); } else { diff --git a/src/libgpanel/circle.c b/src/libgpanel/circle.c index 5b0bbcc..fbaa9fa 100644 --- a/src/libgpanel/circle.c +++ b/src/libgpanel/circle.c @@ -30,7 +30,7 @@ void gpanel_circle(int color, int x, int y, int radius) param.color = color; param.x = x; - param.y = x; + param.y = y; param.radius = radius; ioctl(_gpanel_fd, GPANEL_CIRCLE, ¶m); } diff --git a/src/libgpanel/image.c b/src/libgpanel/image.c index a32a980..0a53a6c 100644 --- a/src/libgpanel/image.c +++ b/src/libgpanel/image.c @@ -29,7 +29,7 @@ void gpanel_image(int x, int y, int width, int height, const unsigned short *dat struct gpanel_image_t param; param.x = x; - param.y = x; + param.y = y; param.width = width; param.height = height; param.image = data; diff --git a/src/libgpanel/pixel.c b/src/libgpanel/pixel.c index 0be1f39..7558e1f 100644 --- a/src/libgpanel/pixel.c +++ b/src/libgpanel/pixel.c @@ -30,6 +30,6 @@ void gpanel_pixel(int color, int x, int y) param.color = color; param.x = x; - param.y = x; + param.y = y; ioctl(_gpanel_fd, GPANEL_PIXEL, ¶m); }