A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
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}