printk.h 2.0 KB

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