使用Qt编写一个字体转换工具
1、界面布局
2、编写图片转换的代码
void file_info_data_rgb565(char * name, uint32_t * image_data, uint32_t w, uint32_t h)
{
uint32_t x, y;
uint32_t offset = 0;
uint32_t color;
uint32_t rgb565;
uint32_t data_h, data_l;
file_info_printf(fp_file_info, "#include \"fv_types_def.h\" \n"
" \n"
"const uint8_t %s_map[] = \n",
name);
file_info_printf(fp_file_info, "{\n");
for(y = 0; y < h; y++)
{
for(x = 0; x < w; x++)
{
color = image_data[offset++];
rgb565 = ((color & 0x00f80000) >> 8) | ((color & 0x0000fc00) >> 5) | ((color & 0x000000f8) >> 3);
data_h = (rgb565 >> 8) & 0xff;
data_l = rgb565 & 0xff;
file_info_printf(fp_file_info, "0x%02x, 0x%02x, ", data_l, data_h);
}
file_info_printf(fp_file_info, "\n"); //换行
}
file_info_printf(fp_file_info, "}; \n");
file_info_printf(fp_file_info, " \n"); //空行
file_info_printf(fp_file_info, "const fv_pixelmap_t pixelmap_%s = { \n", name);
file_info_printf(fp_file_info, " .pixelmap_name = \"pixelmap_%s\", \n", name);
file_info_printf(fp_file_info, " .pixelmap_format = FV_PIXELMAP_FORMAT_RGB565, \n");
file_info_printf(fp_file_info, " .pixelmap_width = %d, \n", w);
file_info_printf(fp_file_info, " .pixelmap_height = %d, \n", h);
file_info_printf(fp_file_info, " .pixelmap_data = %s_map, \n", name);
file_info_printf(fp_file_info, " .pixelmap_data_size = %d * %d * 2, \n", w, h);
file_info_printf(fp_file_info, "}; \n");
file_info_printf(fp_file_info, " \n"); //空行
file_info_printf(fp_file_info, "FV_ADD_IMAGE(pixelmap_%s); \n", name);
}
3、图片转换工具生成的文件如下:
#include "fv_types_def.h"
const uint8_t watch_background_01_map[] =
{
......
};
const fv_pixelmap_t pixelmap_watch_background_01 = {
.pixelmap_name = "pixelmap_watch_background_01",
.pixelmap_format = FV_PIXELMAP_FORMAT_RGB565,
.pixelmap_width = 240,
.pixelmap_height = 240,
.pixelmap_data = watch_background_01_map,
.pixelmap_data_size = 240 * 240 * 2,
};
FV_ADD_IMAGE(pixelmap_watch_background_01);