images.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "images.h"
  4. #include <iconv.h>
  5. class IConv {
  6. iconv_t ic;
  7. public:
  8. IConv(const char *to, const char *from) : ic(iconv_open(to, from)) {}
  9. ~IConv() { iconv_close(ic); }
  10. int convert(char *input, char *output, size_t outbufsize) {
  11. size_t inbufsize = strlen(input);
  12. size_t orig_size = outbufsize;
  13. // memset(output, 0, outbufsize);
  14. // https://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.15/iconv.3.html
  15. int r = iconv(ic, &input, &inbufsize, &output, &outbufsize);
  16. *output = 0;
  17. return r;
  18. }
  19. };
  20. IConv converter("UTF-8", "CP437");
  21. char display_line(const char *line) {
  22. char input[1024];
  23. char output[1024];
  24. int len;
  25. strcpy(input, line);
  26. converter.convert(input, output, sizeof(output));
  27. printf("%s\n", output);
  28. }
  29. #define SHOW_IMAGE(img) \
  30. size = (sizeof(img) / sizeof(char *)); \
  31. for (x = 0; x < size; x++) \
  32. display_line(img[x]); \
  33. paws();
  34. void paws(void) {
  35. fflush(stdout);
  36. getchar();
  37. printf("\n\n");
  38. }
  39. int main() {
  40. int x;
  41. int size;
  42. SHOW_IMAGE(skull);
  43. SHOW_IMAGE(skullblink);
  44. SHOW_IMAGE(icu);
  45. SHOW_IMAGE(ghead);
  46. SHOW_IMAGE(ghost);
  47. SHOW_IMAGE(wolf);
  48. SHOW_IMAGE(panther);
  49. SHOW_IMAGE(bat);
  50. return 0;
  51. }