4
* Copyright (C) 2011 Tim Marston <tim@ed.am> and Dan Marston.
6
* This file is part of propeller-clock (hereafter referred to as "this
7
* program"). See http://ed.am/dev/software/arduino/propeller-clock for more
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU Lesser General Public License as published
12
* by the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Lesser General Public License for more details.
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23
#ifndef _TEXT_RENDERER_H_
24
#define _TEXT_RENDERER_H_
30
#define MAX_MESSAGE_LENGTH 64
38
* Get singleton instance of text renderer.
40
* @return singleton instance
42
static TextRenderer &get_instance();
45
* Retrieve the PString that is used to render text with the intention of
46
* changing it. This resets the text services.
48
* @param message the message
50
PString &get_pstring();
53
* Call at the start of each frame.
58
* Draw segment using automatic scrolling.
60
void draw_scroll( int segment );
67
* Transform segment in to display-space.
70
* @return display-space segment
72
int xform_segment( int segment );
75
* Draw the specified column of pixels from the message
77
* @param x pixel column to draw
82
* Get a pointer to the character data in the font for a given
85
* @param character to look-up
86
* @param glyph where to store the glyph data
88
void get_glyph( char c, char *glyph );
90
/** the buffer for the message */
91
char _message_buffer[ MAX_MESSAGE_LENGTH ];
93
/** the current message */
97
char _glyph_cache[ 8 ];
99
/** the character the current glyph is for */
100
char _glyph_cache_char;
105
/** time last frame */
106
unsigned long _last_millis;
108
/** duration last frame (in case we can't calculate it this
110
unsigned long _duration;
112
/** scroll position (in segments ) */
118
#endif //_TEXT_RENDERER_H_