A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 81 lines 2.2 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * Copyright (C) 2002 Gilles Roux 11 * 2003 Garrett Derner 12 * 2010 Yoshihisa Uchida 13 * 14 * This program is free software; you can redistribute it and/or 15 * modify it under the terms of the GNU General Public License 16 * as published by the Free Software Foundation; either version 2 17 * of the License, or (at your option) any later version. 18 * 19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20 * KIND, either express or implied. 21 * 22 ****************************************************************************/ 23#include "plugin.h" 24#include "tv_pager.h" 25#include "tv_reader.h" 26#include "tv_text_processor.h" 27#include "tv_text_reader.h" 28 29static int get_block; 30static bool get_double_blocks; 31 32bool tv_init_text_reader(unsigned char **buf, size_t *size) 33{ 34 return tv_init_text_processor(buf, size) && tv_init_pager(buf, size); 35} 36 37void tv_finalize_text_reader(void) 38{ 39 tv_finalize_pager(); 40} 41 42void tv_set_read_conditions(int blocks, int width) 43{ 44 tv_set_creation_conditions(blocks, width); 45} 46 47off_t tv_get_total_text_size(void) 48{ 49 return tv_get_file_size(); 50} 51 52bool tv_get_next_line(const unsigned char **buf) 53{ 54 ssize_t bufsize; 55 const unsigned char *buffer = tv_get_buffer(&bufsize); 56 57 if (bufsize > 0) 58 { 59 tv_move_next_line( 60 tv_create_formed_text(buffer, bufsize, get_block, get_double_blocks, buf)); 61 return true; 62 } 63 return false; 64} 65 66void tv_read_start(int block, bool is_multi) 67{ 68 get_block = block; 69 get_double_blocks = is_multi; 70 tv_reset_line_positions(); 71} 72 73int tv_read_end(void) 74{ 75 return tv_get_line_positions(0); 76} 77 78void tv_seek_top(void) 79{ 80 tv_move_screen(0, 0, SEEK_SET); 81}