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_scroll_down8.c | 69 ++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 apps/plugins/lib/gray_scroll_down8.c (limited to 'apps/plugins/lib/gray_scroll_down8.c') diff --git a/apps/plugins/lib/gray_scroll_down8.c b/apps/plugins/lib/gray_scroll_down8.c new file mode 100644 index 0000000000..db716baee7 --- /dev/null +++ b/apps/plugins/lib/gray_scroll_down8.c @@ -0,0 +1,69 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Grayscale framework +* gray_scroll_down8() 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" + +/*--------------------------------------------------------------------------- + Scroll the whole grayscale buffer down by 8 pixels + ---------------------------------------------------------------------------- + black_border determines if the pixels scrolled in at the top are black + or white + + Scrolling up/down by 8 pixels is very fast. + */ +void gray_scroll_down8(bool black_border) +{ + int by, d; + unsigned filler; + unsigned char *ptr; + + filler = black_border ? 0xFF : 0; + + /* Scroll row by row to minimize flicker (byte rows = 8 pixels each) */ + for (by = _graybuf->bheight - 1; by > 0; by--) + { + ptr = _graybuf->data + MULU16(_graybuf->width, by); + for (d = 0; d < _graybuf->depth; d++) + { + _gray_rb->memcpy(ptr, ptr - _graybuf->width, _graybuf->width); + ptr += _graybuf->plane_size; + } + } + /* fill first row */ + ptr = _graybuf->data; + for (d = 0; d < _graybuf->depth; d++) + { + _gray_rb->memset(ptr, filler, _graybuf->width); + ptr += _graybuf->plane_size; + } +} + +#endif // #ifdef HAVE_LCD_BITMAP +#endif // #ifndef SIMULATOR + -- cgit v1.2.3