From e8ee122321b72e4e4229a8ac985313054e929703 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 11 Nov 2012 13:35:24 +0100 Subject: [PATCH 1/2] Revert "removed unused RGB565CONVERT. Please use RGB2COLOR instead" This reverts commit 8231e9738c20bd676943638830fedeb71ca1195d. --- demos/mandelbrot/main.c | 1 + include/gdisp.h | 1 + 2 files changed, 2 insertions(+) diff --git a/demos/mandelbrot/main.c b/demos/mandelbrot/main.c index 92f4aaa2..0c8dc47d 100644 --- a/demos/mandelbrot/main.c +++ b/demos/mandelbrot/main.c @@ -43,6 +43,7 @@ void mandelbrot(float x1, float y1, float x2, float y2) { x = xx - yy + cx; } color = ((iter << 8) | (iter&0xFF)); + //color = RGB565CONVERT(iter*4, iter*13, iter*10); gdispDrawPixel(i, j, color); } } diff --git a/include/gdisp.h b/include/gdisp.h index 9be97a12..db865284 100644 --- a/include/gdisp.h +++ b/include/gdisp.h @@ -293,6 +293,7 @@ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color); /* Now obsolete functions */ #define gdispBlitArea(x, y, cx, cy, buffer) gdispBlitAreaEx(x, y, cx, cy, 0, 0, cx, buffer) +#define RGB565CONVERT(r,g,b) RGB2COLOR(r,g,b) /* Macro definitions for common gets and sets */ #define gdispSetPowerMode(powerMode) gdispControl(GDISP_CONTROL_POWER, (void *)(unsigned)(powerMode)) From e8020a88c96c1781c60c5506bb820f35d7aba6ec Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 11 Nov 2012 15:16:12 +0100 Subject: [PATCH 2/2] fixed touchscreen output and removed console code --- docs/src/console.dox | 28 ------ old/console.c | 216 ------------------------------------------- old/console.h | 93 ------------------- src/touchscreen.c | 6 +- 4 files changed, 3 insertions(+), 340 deletions(-) delete mode 100644 docs/src/console.dox delete mode 100644 old/console.c delete mode 100644 old/console.h diff --git a/docs/src/console.dox b/docs/src/console.dox deleted file mode 100644 index b0721e8a..00000000 --- a/docs/src/console.dox +++ /dev/null @@ -1,28 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @addtogroup CONSOLE - * @details The CONSOLE module provides a BaseSequentialStream abstraction. - * It allows to easily use an LCD to output any generic data, for - * example by using the chprintf() provided by ChibiOS/RT. - * @details Read more here: http://chibios-gfx.com/documentation/console - */ - diff --git a/old/console.c b/old/console.c deleted file mode 100644 index 55549fd1..00000000 --- a/old/console.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file src/console.c - * @brief CONSOLE code. - * - * @addtogroup CONSOLE - * @{ - */ - -#include "ch.h" -#include "hal.h" -#include "console.h" - -#if GFX_USE_CONSOLE || defined(__DOXYGEN__) - -/* - * Interface implementation. The interface is write only - */ -static size_t write(void *ip, const uint8_t *bp, size_t n) { - return gfxConsoleWrite((GConsole *)ip, bp, n); -} - -static size_t read(void *ip, uint8_t *bp, size_t n) { - (void)ip; - (void)bp; - (void)n; - - return 0; -} - -static msg_t put(void *ip, uint8_t b) { - (void)ip; - - return gfxConsolePut((GConsole *)ip, (char)b); -} - -static msg_t get(void *ip) { - (void)ip; - - return RDY_OK; -} - -static msg_t putt(void *ip, uint8_t b, systime_t timeout) { - (void)timeout; - - /* TODO: handle timeout */ - - return gfxConsolePut((GConsole *)ip, (char)b); -} - -static msg_t gett(void *ip, systime_t timeout) { - (void)ip; - (void)timeout; - - return RDY_OK; -} - -static size_t writet(void *ip, const uint8_t *bp, size_t n, systime_t time) { - (void)time; - - return gfxConsoleWrite((GConsole *)ip, bp, n); -} - -static size_t readt(void *ip, uint8_t *bp, size_t n, systime_t time) { - (void)ip; - (void)bp; - (void)n; - (void)time; - - return 0; -} - -static const struct GConsoleVMT vmt = { - write, read, put, get, - putt, gett, writet, readt -}; - -/** - * @brief Initializes a console. - * - * @param[in] console The console driver struct - * @param[in] x0,y0 The location of the upper left corner of the resulting window - * @param[in] width, height The width and height of the window - * @param[in] font The font to be used when printing to the console - * @param[in] bkcolor The background color - * @param[in] color The foreground / font color - * - * @return RDY_OK if done - */ -msg_t gfxConsoleInit(GConsole *console, coord_t x0, coord_t y0, coord_t width, coord_t height, font_t font, pixel_t bkcolor, pixel_t color) { - console->vmt = &vmt; - /* read font, get height & padding */ - console->fy = gdispGetFontMetric(font, fontHeight); - console->fp = gdispGetFontMetric(font, fontCharPadding); - - /* calculate the size of the console as an integer multiple of characters height*/ - console->sx = width; - console->sy = (((int16_t)(height/console->fy))-1)*console->fy; - - console->cx = 0; - console->cy = 0; - console->x0 = x0; - console->y0 = y0; - - console->bkcolor = bkcolor; - console->color = color; - - console->font = font; - - gdispFillArea(x0, y0, x0 + width, y0 + height, console->bkcolor); - return RDY_OK; -} - -/** - * @brief Write a single character to the console. - * - * @param[in] console The console driver struct - * @param[in] c The char to be written - * - * @return RDY_OK if done - */ -msg_t gfxConsolePut(GConsole *console, char c) { - uint8_t width; - - if(c == '\n') { - /* clear the text at the end of the line */ - if(console->cx < console->sx) - gdispFillArea(console->x0 + console->cx, console->y0 + console->cy, - console->sx - console->cx, console->fy, - console->bkcolor); - console->cx = 0; - console->cy += console->fy; - } else if(c == '\r') { - /* TODO: work backwards through the buffer to the start of the current line */ - //console->cx = 0; - } else { - width = gdispGetCharWidth(c, console->font) + console->fp; - if((console->cx + width) >= console->sx) { - /* clear the text at the end of the line */ - if (console->cy <= console->sy) - gdispFillArea(console->x0 + console->cx, console->y0 + console->cy, - console->sx - (console->cx + width), console->fy, - console->bkcolor); - console->cx = 0; - console->cy += console->fy; - } - - if((console->cy > console->sy)) { -#if GDISP_NEED_SCROLL - /* scroll the console */ - gdispVerticalScroll(console->x0, console->y0, console->sx, - console->sy + console->fy, console->fy, console->bkcolor); - /* reset the cursor to the start of the line */ - console->cx = 0; - console->cy = console->sy; -#else - /* clear the console */ - gdispFillArea(console->x0, console->y0, - console->sx, console->sy + console->fy, - console->bkcolor); - /* reset the cursor to the top of the console */ - console->cx = 0; - console->cy = 0; -#endif - } - - gdispDrawChar(console->x0 + console->cx, console->y0 + console->cy, c, - console->font, console->color); - - /* update cursor */ - console->cx += width; - } - return RDY_OK; -} - -/** - * @brief Write a string to the console. - * - * @param[in] console The console driver struct - * @param[in] bp The buffer / string - * @param[in] n The size of the buffer - * - * @return RDY_OK if done - * - * @api - */ -msg_t gfxConsoleWrite(GConsole *console, const uint8_t *bp, size_t n) { - size_t i; - for(i = 0; i < n; i++) - gfxConsolePut(console, bp[i]); - - return RDY_OK; -} - -#endif /* GFX_USE_CONSOLE */ -/** @} */ - diff --git a/old/console.h b/old/console.h deleted file mode 100644 index 224de096..00000000 --- a/old/console.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - ChibiOS/GFX - Copyright (C) 2012 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file include/console.h - * @brief CONSOLE header file. - * - * @addtogroup CONSOLE - * @{ - */ - -#ifndef CONSOLE_H -#define CONSOLE_H - -#ifndef GFX_USE_CONSOLE - #define GFX_USE_CONSOLE FALSE -#endif - -#if GFX_USE_CONSOLE - -#include "gdisp.h" - - /** - * @extends BaseAsynchronousChannelVMT - * - * @brief @p GConsole virtual methods table. - */ -struct GConsoleVMT { - _base_asynchronous_channel_methods -}; - -/** - * @extends BaseAsynchronousChannel - * - * @brief GConsole class. - * @details This class extends @p BaseAsynchronousChannel by adding physical - * I/O queues. - */ -typedef struct _GConsole { - /** @brief Virtual Methods Table.*/ - const struct GConsoleVMT *vmt; - _base_asynchronous_channel_data - /* WARNING: Do not add any data to this struct above this comment, only below */ - /* font */ - font_t font; - /* lcd area to use */ - coord_t x0,y0; - /* current cursor position, in pixels */ - coord_t cx,cy; - /* console size in pixels */ - coord_t sx,sy; - /* foreground and background colour */ - color_t bkcolor, color; - /* font size in pixels */ - uint8_t fy; - /* font inter-character padding in pixels */ - uint8_t fp; -} GConsole; - -#ifdef __cplusplus -extern "C" { -#endif - -msg_t gfxConsoleInit(GConsole *console, coord_t x0, coord_t y0, coord_t width, coord_t height, font_t font, pixel_t bkcolor, pixel_t color); -msg_t gfxConsolePut(GConsole *console, char c); -msg_t gfxConsoleWrite(GConsole *console, const uint8_t *bp, size_t n); - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_CONSOLE */ - -#endif /* CONSOLE_H */ -/** @} */ - diff --git a/src/touchscreen.c b/src/touchscreen.c index fe51db5c..14eba4c5 100644 --- a/src/touchscreen.c +++ b/src/touchscreen.c @@ -200,9 +200,9 @@ coord_t tsReadX(void) { case GDISP_ROTATE_90: return y; case GDISP_ROTATE_180: - return GDISP_SCREEN_WIDTH - x - 1; + return gdispGetWidth() - x - 1; case GDISP_ROTATE_270: - return GDISP_SCREEN_HEIGHT - y - 1; + return gdispGetWidth() - y - 1; } return 0; @@ -232,7 +232,7 @@ coord_t tsReadY(void) { case GDISP_ROTATE_0: return y; case GDISP_ROTATE_90: - return gdispGetWidth() - x - 1; + return gdispGetHeight() - x - 1; case GDISP_ROTATE_180: return gdispGetHeight() - y - 1; case GDISP_ROTATE_270: