1*2813126eSlogin // 2*2813126eSlogin // Created by longjin on 2022/1/21. 3*2813126eSlogin // 4*2813126eSlogin #pragma once 5*2813126eSlogin #pragma GCC push_options 6*2813126eSlogin #pragma GCC optimize("O0") 7*2813126eSlogin #define PAD_ZERO 1 // 0填充 8*2813126eSlogin #define LEFT 2 // 靠左对齐 9*2813126eSlogin #define RIGHT 4 // 靠右对齐 10*2813126eSlogin #define PLUS 8 // 在正数前面显示加号 11*2813126eSlogin #define SPACE 16 12*2813126eSlogin #define SPECIAL 32 // 在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X' 13*2813126eSlogin #define SMALL 64 // 十进制以上数字显示小写字母 14*2813126eSlogin #define SIGN 128 // 显示符号位 15*2813126eSlogin 16*2813126eSlogin #define is_digit(c) ((c) >= '0' && (c) <= '9') // 用来判断是否是数字的宏 17*2813126eSlogin 18*2813126eSlogin // 字体颜色的宏定义 19*2813126eSlogin #define WHITE 0x00ffffff // 白 20*2813126eSlogin #define BLACK 0x00000000 // 黑 21*2813126eSlogin #define RED 0x00ff0000 // 红 22*2813126eSlogin #define ORANGE 0x00ff8000 // 橙 23*2813126eSlogin #define YELLOW 0x00ffff00 // 黄 24*2813126eSlogin #define GREEN 0x0000ff00 // 绿 25*2813126eSlogin #define BLUE 0x000000ff // 蓝 26*2813126eSlogin #define INDIGO 0x0000ffff // 靛 27*2813126eSlogin #define PURPLE 0x008000ff // 紫 28*2813126eSlogin 29*2813126eSlogin // 异常的宏定义 30*2813126eSlogin #define EPOS_OVERFLOW 1 // 坐标溢出 31*2813126eSlogin #define EFB_MISMATCH 2 // 帧缓冲区与指定的屏幕大小不匹配 32*2813126eSlogin #define EUNSUPPORTED 3 // 当前操作暂不被支持 33*2813126eSlogin 34*2813126eSlogin #include "glib.h" 35*2813126eSlogin #include <stdarg.h> 36*2813126eSlogin 37*2813126eSlogin /** 38*2813126eSlogin * @brief 将字符串按照fmt和args中的内容进行格式化,然后保存到buf中 39*2813126eSlogin * 40*2813126eSlogin * @param buf 结果缓冲区 41*2813126eSlogin * @param fmt 格式化字符串 42*2813126eSlogin * @param args 内容 43*2813126eSlogin * @return 最终字符串的长度 44*2813126eSlogin */ 45*2813126eSlogin int vsprintf(char *buf, const char *fmt, va_list args); 46*2813126eSlogin 47*2813126eSlogin /** 48*2813126eSlogin * @brief 将字符串按照fmt和args中的内容进行格式化,截取字符串前buf_size-1,保存到buf中 49*2813126eSlogin * 50*2813126eSlogin * @param buf 结果缓冲区,大小为buf_size 51*2813126eSlogin * @param fmt 格式化字符串 52*2813126eSlogin * @param buf_size 缓冲区长度 53*2813126eSlogin * @param args 内容 54*2813126eSlogin * @return 最终字符串的长度 55*2813126eSlogin */ 56*2813126eSlogin int vsnprintf(char *buf, const char *fmt, int buf_size, va_list args); 57*2813126eSlogin 58*2813126eSlogin /** 59*2813126eSlogin * @brief 格式化打印字符串 60*2813126eSlogin * 61*2813126eSlogin * @param FRcolor 前景色 62*2813126eSlogin * @param BKcolor 背景色 63*2813126eSlogin * @param ... 格式化字符串 64*2813126eSlogin */ 65*2813126eSlogin 66*2813126eSlogin #define printk(...) printk_color(WHITE, BLACK, __VA_ARGS__) 67*2813126eSlogin 68*2813126eSlogin int printk_color(unsigned int FRcolor, unsigned int BKcolor, const char *fmt, ...); 69*2813126eSlogin 70*2813126eSlogin /** 71*2813126eSlogin * @brief 格式化字符串并输出到buf 72*2813126eSlogin * 73*2813126eSlogin * @param buf 输出缓冲区 74*2813126eSlogin * @param fmt 格式 75*2813126eSlogin * @param ... 参数 76*2813126eSlogin * @return int 字符串长度 77*2813126eSlogin */ 78*2813126eSlogin int sprintk(char *buf, const char *fmt, ...); 79*2813126eSlogin #pragma GCC pop_options