From 4bfcbaca733799e82367a518106aa0871c3cd575 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 15 Jun 2002 22:26:35 +0000 Subject: This is the start of a text file viewer for the Player. It is not called from anywhere at this point. It still compiles nicely. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1018 a1c6a512-1295-4272-9138-f99709370657 --- apps/showtext.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 apps/showtext.c diff --git a/apps/showtext.c b/apps/showtext.c new file mode 100644 index 0000000000..2bd13826d2 --- /dev/null +++ b/apps/showtext.c @@ -0,0 +1,146 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2002 Daniel Stenberg + * + * 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. + * + ****************************************************************************/ + +#include + +#include "file.h" +#include "lcd.h" +#include "kernel.h" +#include "button.h" +#include "sprintf.h" + +char *strcat(char *s1, + const char *s2) +{ + char *s = s1; + + while (*s1) + s1++; + + while ((*s1++ = *s2++)) + ; + return s; +} + + +static int here=0; + +char *singleshow(char *word) +{ + static unsigned char words[22]; + int len = strlen(word); + + if(len>=10) { + if(len < 12 ) { + lcd_clear_display(); + lcd_puts(0,0, word); + strcpy(words, ""); + here=0; + return words; + } + /* huuuge word, use two lines! */ + return NULL; + } + + else if(here +1 + len <= 11) { /* 1 is for space */ + if(words[0]) + strcat(words, " "); + strcat(words, word); + here+=1+len; + return NULL; /* no show right now */ + } + else { + lcd_clear_display(); + lcd_puts(0,0, words); + strcpy(words, word); + here=len; + return words; + } +} + +#define SEP(x) (((x) == '\n') || ((x) == '\t') || ((x) == ' ')) + +void showtext(char *filename) +{ + static char textbuffer[1024]; + + int fd; + int size; + char *ptr; + char *end; + unsigned char backup; + char num[8]; + int count=0; + int b; + char *show; + int delay = HZ; + + fd = open(filename, O_RDONLY); + + if(-1 == fd) + return; + + do { + size = read(fd, textbuffer, sizeof(textbuffer)); + + ptr = textbuffer; + while (size > 0) { + while(ptr && *ptr && SEP(*ptr)) { + ptr++; + size--; + count++; + } + end = ptr; + + while(end && *end && !SEP(*end)) { + end++; + count++; + } + + backup = *end; + *end = 0; + + + show = singleshow(ptr); + + if(show) { + snprintf(num, sizeof(num), "%d", count); + lcd_puts(0,1, num); + } + + *end = backup; + + ptr += (end - ptr); + size -= (end - ptr); + + b = button_get(false); + if(b) { + size = -1; + break; + } + if(show) + sleep(delay); + } + + + } while(size>0); + + close(fd); + +} -- cgit v1.2.3