hello,
I use compressed fonts(both .zlib). The EveSetFont and EveCmdText are inside of the commands List with their needed list commands.
//These are the parameters for SetFont (DisplayCustomFont_t struct)
fontData[0].address = 0x00000000u;
fontData[0].font = 0u;
fontData[0].firsChar = 32u;
fontData[0].format = EVE_L2;
fontData[0].height = 21u;
fontData[0].width = 26u;
fontData[0].stride = 7u;
fontData[1].address = 0x00010000u;
fontData[1].font = 1u;
fontData[1].firsChar = 32u;
fontData[1].format = EVE_L4;
fontData[1].height = 21u;
fontData[1].width = 26;
fontData[1].stride = 13u;
// This is for SetFont, executed twice (for fondData[0] and fontData[1])
Private uint32 EveSetFont(const uint32 start, const DisplayCustomFont_t* const data)
{
uint32 cont;
cont = Write32BitsInArray(start, BITMAP_SOURCE(data->address));
cont = Write32BitsInArray(cont, BITMAP_LAYOUT(data->format, data->stride, data->height));
cont = Write32BitsInArray(cont, BITMAP_SIZE(EVE_NEAREST, EVE_BORDER, EVE_BORDER, data->width, data->height));
cont = Write32BitsInArray(cont, CMD_SETFONT2);
cont = Write32BitsInArray(cont, (uint32)data->font);
cont = Write32BitsInArray(cont, data->address);
cont = Write32BitsInArray(cont, (uint32)data->firsChar);
cont = Write32BitsInArray(cont, END());
return cont;
}
// This is for display text
Private uint32 EveCmdText(const uint32 start, const GraphicText_t* const data)
{
const uint8 *textPtr = data->string;
uint32 cont;
uint32 textindex = 0uL;
uint8 StringLength = data->len;
uint32 commandSize;
cont = Write32BitsInArray(start, DL_COLOR_RGB | data->color);
cont = Write32BitsInArray(cont, CMD_TEXT);
cont = Write32BitsInArray(cont, (((uint32)data->y0 << 16u) | ((uint32)data->x0 & 0xffffu)));
cont = Write32BitsInArray(cont, (((uint32)data->option << 16u) | ((uint32)data->font & 0xffffu)));
commandSize = cont;
while (textindex < data->len) {
gpDataBuffer[++cont] = (uint8)textPtr[textindex];
textindex++;
}
if (0x00u != textPtr[data->len - 1u]) {
cont++;
gpDataBuffer[cont] = 0x00u;
StringLength++;
}
StringLength = StringLength & 0x03u; /* 0, 1, 2 or 3 */
StringLength = 4u-StringLength; /* 4, 3, 2 or 1 */
StringLength &= 3u; /* 3, 2 or 1 */
while (StringLength > 0u) {
gpDataBuffer[++cont] = 0x00u;
StringLength--;
}
EveIncCmdOffset(FifoWriteLocation, (uint16)commandSize); // Update fifo write
return cont;
}