2
0

console-colors.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. Copyright (C) 2014 Yusuke Suzuki <[email protected]>
  3. Redistribution and use in source and binary forms, with or without
  4. modification, are permitted provided that the following conditions are met:
  5. * Redistributions of source code must retain the above copyright
  6. notice, this list of conditions and the following disclaimer.
  7. * Redistributions in binary form must reproduce the above copyright
  8. notice, this list of conditions and the following disclaimer in the
  9. documentation and/or other materials provided with the distribution.
  10. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  11. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  12. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  13. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  14. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  15. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  16. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  17. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  18. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  19. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  20. */
  21. #ifndef CONSOLE_COLORS_CONSOLE_COLORS_H_
  22. #define CONSOLE_COLORS_CONSOLE_COLORS_H_
  23. #include <stdio.h>
  24. #define CC_COLOR_BITS 5
  25. typedef enum {
  26. CC_FG_NONE = 0 << 0,
  27. CC_FG_BLACK = 1 << 0,
  28. CC_FG_DARK_RED = 2 << 0,
  29. CC_FG_DARK_GREEN = 3 << 0,
  30. CC_FG_DARK_YELLOW = 4 << 0,
  31. CC_FG_DARK_BLUE = 5 << 0,
  32. CC_FG_DARK_MAGENTA = 6 << 0,
  33. CC_FG_DARK_CYAN = 7 << 0,
  34. CC_FG_GRAY = 8 << 0,
  35. CC_FG_DARK_GRAY = 9 << 0,
  36. CC_FG_RED = 10 << 0,
  37. CC_FG_GREEN = 11 << 0,
  38. CC_FG_YELLOW = 12 << 0,
  39. CC_FG_BLUE = 13 << 0,
  40. CC_FG_MAGENTA = 14 << 0,
  41. CC_FG_CYAN = 15 << 0,
  42. CC_FG_WHITE = 16 << 0,
  43. CC_BG_NONE = 0 << CC_COLOR_BITS,
  44. CC_BG_BLACK = 1 << CC_COLOR_BITS,
  45. CC_BG_DARK_RED = 2 << CC_COLOR_BITS,
  46. CC_BG_DARK_GREEN = 3 << CC_COLOR_BITS,
  47. CC_BG_DARK_YELLOW = 4 << CC_COLOR_BITS,
  48. CC_BG_DARK_BLUE = 5 << CC_COLOR_BITS,
  49. CC_BG_DARK_MAGENTA = 6 << CC_COLOR_BITS,
  50. CC_BG_DARK_CYAN = 7 << CC_COLOR_BITS,
  51. CC_BG_GRAY = 8 << CC_COLOR_BITS,
  52. CC_BG_DARK_GRAY = 9 << CC_COLOR_BITS,
  53. CC_BG_RED = 10 << CC_COLOR_BITS,
  54. CC_BG_GREEN = 11 << CC_COLOR_BITS,
  55. CC_BG_YELLOW = 12 << CC_COLOR_BITS,
  56. CC_BG_BLUE = 13 << CC_COLOR_BITS,
  57. CC_BG_MAGENTA = 14 << CC_COLOR_BITS,
  58. CC_BG_CYAN = 15 << CC_COLOR_BITS,
  59. CC_BG_WHITE = 16 << CC_COLOR_BITS
  60. } cc_color_t;
  61. #ifndef COMMON_LVB_LEADING_BYTE
  62. #define COMMON_LVB_LEADING_BYTE 0x0100
  63. #endif
  64. #ifndef COMMON_LVB_TRAILING_BYTE
  65. #define COMMON_LVB_TRAILING_BYTE 0x0200
  66. #endif
  67. #ifndef COMMON_LVB_GRID_HORIZONTAL
  68. #define COMMON_LVB_GRID_HORIZONTAL 0x0400
  69. #endif
  70. #ifndef COMMON_LVB_GRID_LVERTICAL
  71. #define COMMON_LVB_GRID_LVERTICAL 0x0800
  72. #endif
  73. #ifndef COMMON_LVB_GRID_RVERTICAL
  74. #define COMMON_LVB_GRID_RVERTICAL 0x1000
  75. #endif
  76. #ifndef COMMON_LVB_REVERSE_VIDEO
  77. #define COMMON_LVB_REVERSE_VIDEO 0x4000
  78. #endif
  79. #ifndef COMMON_LVB_UNDERSCORE
  80. #define COMMON_LVB_UNDERSCORE 0x8000
  81. #endif
  82. /**
  83. * @param color {console_color_t} Console color. We can pass (FG | BG) as color.
  84. * @param stream {FILE*} `stdout` or `stderr`. Others will be passed to fprintf
  85. * without colors.
  86. * @param format {const char*} Format string fprintf will take.
  87. * @return {int} fprintf returned value.
  88. *
  89. * CAUTION(Yusuke Suzuki): bright FG & dark BG combination doesn't works
  90. * correctly on some terminals, but this is an well-known issue.
  91. */
  92. int cc_fprintf(cc_color_t color, FILE* stream, const char* format, ...);
  93. #endif /* CONSOLE_COLORS_CONSOLE_COLORS_H_ */
  94. /* vim: set sw=4 ts=4 et tw=80 : */