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.
42
* Get the width, in pexels, of a message.
40
* @return singleton instance
44
* @param message_len the length of the message
42
static TextRenderer &get_instance();
46
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.
49
* Draw a column of pixels at pixel-offset x in the message.
48
51
* @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 ) */
52
* @param message_len the length of the message (to save it being
54
* @param x the pixel column of the message to draw
55
* @param y_flip true to draw up-side down
56
* @param y_shift shift the drawing up/down
58
void render( const char *message, int message_len, int x,
59
bool y_flip, int y_shift );
62
* Reset the output buffer.
68
* Notify renderer that the output buffer will require rendering.
74
* Output the output buffer (and reset the output buffer).
79
* Get the font number in use.
86
* Switch to the next font.