/* * canvas.c * * Created on: Jan 15, 2016 * Author: tkl */ #include #include #include "font.h" #include "bitmap.h" int bitmap_print_text(const struct font *font, struct bitmap *bitmap, int x_pos, int y_pos, char *text) { int i = 0, pos = 0; /* align to page */ if(y_pos % 8 != 0) y_pos -= y_pos % 8; pos = y_pos / 8 * bitmap->x_size + x_pos; while(text[i] != 0) { while(((pos + font->char_size_x) % bitmap->x_size) < font->char_size_x) pos++; memcpy(&bitmap->buffer[pos], &font->font[text[i] * font->char_size_x], font->char_size_x); memset(&bitmap->buffer[pos + font->char_size_x], 0x00, font->char_between); i++; pos += font->char_size_x + 1; } return 0; }