From 380c41b766ce7e196434923bd7ead515ad4fd1fd Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 3 Jul 2015 17:08:28 +0200 Subject: [PATCH] Improving Pixmap API --- demos/modules/gdisp/pixmap/main.c | 15 +++++++++------ src/gdisp/gdisp_pixmap.c | 8 ++++---- src/gdisp/gdisp_pixmap.h | 8 ++++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/demos/modules/gdisp/pixmap/main.c b/demos/modules/gdisp/pixmap/main.c index 3adcf03f..c1cb9b55 100644 --- a/demos/modules/gdisp/pixmap/main.c +++ b/demos/modules/gdisp/pixmap/main.c @@ -32,8 +32,8 @@ #define PIXMAP_WIDTH 40 #define PIXMAP_HEIGHT 10 -static GDisplay *pix; -static pixel_t *surface; +static GDisplay* pixmap; +static pixel_t* surface; int main(void) { coord_t width, height; @@ -47,8 +47,8 @@ int main(void) { height = gdispGetHeight(); // Create a pixmap and get a pointer to the bits - pix = gdispCreatePixmap(PIXMAP_WIDTH, PIXMAP_HEIGHT); - surface = gdispGetPixmapBits(pix); + pixmap = gdispPixmapCreate(PIXMAP_WIDTH, PIXMAP_HEIGHT); + surface = gdispPixmapGetBits(pixmap); // A pixmap can be treated either as a virtual display or as a memory framebuffer surface. // We demonstrate writing to it using both methods. @@ -59,7 +59,7 @@ int main(void) { surface[j*PIXMAP_WIDTH + i] = RGB2COLOR(0, 255-i*(256/PIXMAP_WIDTH), j*(256/PIXMAP_HEIGHT)); // Secondly, show drawing a line on it like a virtual display - gdispGDrawLine(pix, 0, 0, gdispGGetWidth(pix)-1, gdispGGetHeight(pix)-1, White); + gdispGDrawLine(pixmap, 0, 0, gdispGGetWidth(pixmap)-1, gdispGGetHeight(pixmap)-1, White); i = j = 0; while(TRUE) { @@ -78,6 +78,9 @@ int main(void) { // Wait gfxSleepMilliseconds(100); - } + } + + // Clean up + gdispPixmapDelete(pixmap); } diff --git a/src/gdisp/gdisp_pixmap.c b/src/gdisp/gdisp_pixmap.c index b6226289..a725d547 100644 --- a/src/gdisp/gdisp_pixmap.c +++ b/src/gdisp/gdisp_pixmap.c @@ -49,7 +49,7 @@ typedef struct pixmap { color_t pixels[1]; // We really want pixels[0] but some compilers don't allow that even though it is C standard. } pixmap; -GDisplay *gdispCreatePixmap(coord_t width, coord_t height) { +GDisplay *gdispPixmapCreate(coord_t width, coord_t height) { GDisplay *g; pixmap *p; unsigned i; @@ -86,20 +86,20 @@ GDisplay *gdispCreatePixmap(coord_t width, coord_t height) { return g; } -void gdispDeletePixmap(GDisplay *g) { +void gdispPixmapDelete(GDisplay *g) { if (gvmt(g) != GDISPVMT_pixmap) return; gdriverUnRegister(&g->d); } -pixel_t *gdispGetPixmapBits(GDisplay *g) { +pixel_t *gdispPixmapGetBits(GDisplay *g) { if (gvmt(g) != GDISPVMT_pixmap) return 0; return ((pixmap *)g->priv)->pixels; } #if GDISP_NEED_PIXMAP_IMAGE - void *gdispGetPixmapMemoryImage(GDisplay *g) { + void *gdispPixmapGetMemoryImage(GDisplay *g) { if (gvmt(g) != GDISPVMT_pixmap) return 0; return ((pixmap *)g->priv)->imghdr; diff --git a/src/gdisp/gdisp_pixmap.h b/src/gdisp/gdisp_pixmap.h index b9aa958e..5fc4580f 100644 --- a/src/gdisp/gdisp_pixmap.h +++ b/src/gdisp/gdisp_pixmap.h @@ -40,7 +40,7 @@ extern "C" { * @note Because the RAM for the display area is allocated, on small micros only very small pixmaps should be considered. * For example a 100x100 at 16 bits per pixel would be 20K of RAM (plus some overheads). */ - GDisplay *gdispCreatePixmap(coord_t width, coord_t height); + GDisplay *gdispPixmapCreate(coord_t width, coord_t height); /** * @brief Destroy an off-screen pixmap @@ -49,7 +49,7 @@ extern "C" { * * @note If a normal display is passed to this routine, it will be ignored. */ - void gdispDeletePixmap(GDisplay *g); + void gdispPixmapDelete(GDisplay *g); /** * @brief Get a pointer to the pixels of the display surface. @@ -62,7 +62,7 @@ extern "C" { * (although different pixmaps will have different pixel pointers). Once a pixmap is deleted, the pixel pointer * should not be used by the application. */ - pixel_t *gdispGetPixmapBits(GDisplay *g); + pixel_t *gdispPixmapGetBits(GDisplay *g); #if GDISP_NEED_PIXMAP_IMAGE || defined(__DOXYGEN__) /** @@ -78,7 +78,7 @@ extern "C" { * @note If you are just wanting to copy to a real display it is more efficient to use @p gdispGetPixmapBits() and @p gdispGBlitArea(). * @note Like @p gdispGetPixmapBits(), the pointer returned is valid for the life of the pixmap. */ - void *gdispGetPixmapMemoryImage(GDisplay *g); + void *gdispPixmapGetMemoryImage(GDisplay *g); #endif #ifdef __cplusplus