/* Draws a string located in program memory to the display. 
Using program memory for constant strings will reduce the applications need for RAM, and thus lower the overall size footprint. */
void gfx_mono_draw_progmem_string(char PROGMEM_PTR_T str, gfx_coord_t x, gfx_coord_t y, const struct font *font)
/* Draws a string located in program memory to the display. 
Using program memory for constant strings will reduce the applications need for RAM, and thus lower the overall size footprint. */
void gfx_mono_draw_progmem_string(char PROGMEM_PTR_T str, gfx_coord_t x, gfx_coord_t y, const struct font *font)
{
	char temp_char;
	Assert(str != NULL);
	Assert(font != NULL);
	const gfx_coord_t start_of_string_position_x = x;
	temp_char = PROGMEM_READ_BYTE((uint8_t PROGMEM_PTR_T)str);
	while (temp_char) {
		if (temp_char == '\n') {
			x = start_of_string_position_x;
			y += font->height + 1;
		} else if (temp_char == '\r') {
		} else {
			gfx_mono_draw_char(temp_char, x, y, font);
			x += font->width;
		}
		temp_char = PROGMEM_READ_BYTE((uint8_t PROGMEM_PTR_T)(++str));
	}
}