#pragma once
#include "font.hpp"
#include "a83/log.hpp"
//! стандартный тип шрифтов TODO del me
class FontOld: public Font {
public:
  FontOld() {
    size_x = 5; size_y = 9;
    space_x = 1; space_y = 1;
  }
  ~FontOld() = default;
  template <blend_pf f> void make_print(Image& dst, int x, int y,
  CN(a83::Str) text, bool black_gr = false, int wnd_x = 0,
  int wnd_y = 0) const {
    (void)wnd_x; (void)wnd_y;
    // рисуем чёрный прямоугольник туда, где будет текст:
    if (black_gr)
      dst.draw_rect_filled(x - 1, y - 1,
        int(text.length()) * (size_x + space_x) + 1,
        size_y + 2, Color(Color::BLACK));
    int posx = x;
    int posy = y;
    FOR (i, text.size()) {
      const char ch = text[i];
      if (ch == '\n') {
        posy += size_y + space_y;
        posx = x;
        continue;
      }
      get_char(uint(ch)).make_print<f>(posx, posy, dst);
      posx += size_x + space_x;
    } // for text size
  } // print
  #define PRINT_SUFFIX (Image& dst, int x, int y, CN(a83::Str) text, bool black_gr = false, int wnd_x = 0, int wnd_y = 0) const override
  void print PRINT_SUFFIX { make_print<blend_or>(dst, x,y, text, black_gr, wnd_x, wnd_y); }
  void print_past PRINT_SUFFIX { make_print<blend_past>(dst, x,y, text, black_gr, wnd_x, wnd_y); }
  void print_diff PRINT_SUFFIX { make_print<blend_diff>(dst, x,y, text, black_gr, wnd_x, wnd_y); }
  #undef PRINT_SUFFIX
  //! грузит файл шрифтов из архива
  static void load_font_table(FontOld& font, CN(Archive) arch,
  CN(a83::Str) fname, int size_x, int size_y, int space,
  int col, int row) {
    a83::log("loading table font");
    Image img(arch, fname); // картинка с таблицей шрифтов
    font.free();
    font.size_x = size_x;
    font.size_y = size_y;
    font.space_x = font.space_y = space;
    uint8_t ch = 0;
    FOR (c, col)
    FOR (r, row) {
      cauto sx = c * size_x + space * c;
      cauto sy = r * size_y + space * r;
      img.fast_cut(sx, sy, size_x, size_y, (font.chars[uint(ch++)]));
    } // for col row
  } // load_font_table
}; // FontOld