From 7c6bdd64935452464b21f99198896c34569105e5 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Wed, 23 Jun 2004 22:15:50 +0000 Subject: Split grayscale library into several files to make up a real function library. Significantly decreases binary size for plugins using it. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4802 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/lib/gray_putsxy.c | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 apps/plugins/lib/gray_putsxy.c (limited to 'apps/plugins/lib/gray_putsxy.c') diff --git a/apps/plugins/lib/gray_putsxy.c b/apps/plugins/lib/gray_putsxy.c new file mode 100644 index 0000000000..18cf2bac78 --- /dev/null +++ b/apps/plugins/lib/gray_putsxy.c @@ -0,0 +1,67 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Grayscale framework +* gray_putsxy() function +* +* This is a generic framework to use grayscale display within Rockbox +* plugins. It obviously does not work for the player. +* +* Copyright (C) 2004 Jens Arnold +* +* All files in this archive are subject to the GNU General Public License. +* See the file COPYING in the source tree root for full license agreement. +* +* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +* KIND, either express or implied. +* +****************************************************************************/ + +#ifndef SIMULATOR /* not for simulator by now */ +#include "plugin.h" + +#ifdef HAVE_LCD_BITMAP /* and also not for the Player */ +#include "gray.h" + +/*--------------------------------------------------------------------------- + Display text starting at (x, y) with the current font and drawinfo + ---------------------------------------------------------------------------- + The drawmode is used as described for gray_set_drawmode() + */ +void gray_putsxy(int x, int y, unsigned char *str) +{ + int ch, width; + bitmap_t *bits; + struct font *pf = _graybuf->curfont; + + if ((unsigned) x >= (unsigned) _graybuf->width + || (unsigned) y >= (unsigned) _graybuf->height) + return; + + while ((ch = *str++) != '\0' && x < _graybuf->width) + { + /* check input range */ + if (ch < pf->firstchar || ch >= pf->firstchar + pf->size) + ch = pf->defaultchar; + ch -= pf->firstchar; + + /* get proportional width and glyph bits */ + width = pf->width ? pf->width[ch] : pf->maxwidth; + bits = pf->bits + (pf->offset ? pf->offset[ch] + : MULU16(pf->height, ch)); + + gray_drawbitmap((unsigned char*) bits, x, y, width, pf->height, + width); + x += width; + } +} + +#endif // #ifdef HAVE_LCD_BITMAP +#endif // #ifndef SIMULATOR + -- cgit v1.2.3