summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/gray_putsxy.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2004-06-23 22:15:50 +0000
committerJens Arnold <amiconn@rockbox.org>2004-06-23 22:15:50 +0000
commit7c6bdd64935452464b21f99198896c34569105e5 (patch)
treebecd4aeb5498966aea5629f1e692ba5131192b5e /apps/plugins/lib/gray_putsxy.c
parent8877ad943eb077d10a0725b47c55a8b2f55f319a (diff)
downloadrockbox-7c6bdd64935452464b21f99198896c34569105e5.tar.gz
rockbox-7c6bdd64935452464b21f99198896c34569105e5.zip
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
Diffstat (limited to 'apps/plugins/lib/gray_putsxy.c')
-rw-r--r--apps/plugins/lib/gray_putsxy.c67
1 files changed, 67 insertions, 0 deletions
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 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8* $Id$
9*
10* Grayscale framework
11* gray_putsxy() function
12*
13* This is a generic framework to use grayscale display within Rockbox
14* plugins. It obviously does not work for the player.
15*
16* Copyright (C) 2004 Jens Arnold
17*
18* All files in this archive are subject to the GNU General Public License.
19* See the file COPYING in the source tree root for full license agreement.
20*
21* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
22* KIND, either express or implied.
23*
24****************************************************************************/
25
26#ifndef SIMULATOR /* not for simulator by now */
27#include "plugin.h"
28
29#ifdef HAVE_LCD_BITMAP /* and also not for the Player */
30#include "gray.h"
31
32/*---------------------------------------------------------------------------
33 Display text starting at (x, y) with the current font and drawinfo
34 ----------------------------------------------------------------------------
35 The drawmode is used as described for gray_set_drawmode()
36 */
37void gray_putsxy(int x, int y, unsigned char *str)
38{
39 int ch, width;
40 bitmap_t *bits;
41 struct font *pf = _graybuf->curfont;
42
43 if ((unsigned) x >= (unsigned) _graybuf->width
44 || (unsigned) y >= (unsigned) _graybuf->height)
45 return;
46
47 while ((ch = *str++) != '\0' && x < _graybuf->width)
48 {
49 /* check input range */
50 if (ch < pf->firstchar || ch >= pf->firstchar + pf->size)
51 ch = pf->defaultchar;
52 ch -= pf->firstchar;
53
54 /* get proportional width and glyph bits */
55 width = pf->width ? pf->width[ch] : pf->maxwidth;
56 bits = pf->bits + (pf->offset ? pf->offset[ch]
57 : MULU16(pf->height, ch));
58
59 gray_drawbitmap((unsigned char*) bits, x, y, width, pf->height,
60 width);
61 x += width;
62 }
63}
64
65#endif // #ifdef HAVE_LCD_BITMAP
66#endif // #ifndef SIMULATOR
67