27
27
#include <PString.h>
30
#define MAX_MESSAGE_LENGTH 64
30
#define MESSAGE_BUFFER_LEN 32
33
namespace TextRenderer
38
* Get singleton instance of text renderer.
37
* Get the width, in pexels, of a message.
40
* @return singleton instance
39
* @param message_len the length of the message
42
static TextRenderer &get_instance();
41
int get_width( int message_len );
45
* Retrieve the PString that is used to render text with the intention of
46
* changing it. This resets the text services.
44
* Draw a column of pixels at pixel-offset x in the message.
48
46
* @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 ) */
47
* @param message_len the length of the message (to save it being calculated)
48
* @param x the pixel column of the message to draw
49
* @param y_flip true to draw up-side down
50
* @param y_shift shift the drawing up/down
52
void render( const char *message, int message_len, int x,
53
bool y_flip, int y_shift );
56
* Reset the output buffer.
61
* Output the output buffer (and reset the output buffer).
66
* Set the font number to use
68
* @param font_num font number
70
void select_font( int font_num );