text: #ifndef DRAWER_H
  #define DRAWER_H
  
  #include "wxw.h"
  
  #include "utils.h"
  
  #define TILE_HEIGHT 8
  #define TILE_WIDTH 6
  
  #define TILE_IMAGES_N 42
  
  #define MIN_GRID_POINT 3
  
  class Drawer {
  public:
      Drawer();
  
      void drawTable(wxDC& dc);
  
      void composeBG();
      void composeBoard(const TLVec& layout, const Dimensions& gridSize);
  
      void resizeBg(const wxSize& tableSize);
      bool resizeBoard(const TLVec& layout, const Dimensions& gridSize);
  
      wxPoint toGrid(const wxPoint& point) const;
      wxPoint fromGrid(int x, int y) const;
      wxPoint fromGrid(const wxPoint& point) const;
  
      wxSize composeMinSize(const wxSize& gridSize);
  
      wxSize tableSize;
  
      wxSize tilePixelSize; // кратно 3x4, по умолчанию 600x800
      wxSize resolution;
      wxRect tablePixelRect;
  
      ThreePoint marked;
  
  private:
      void drawTile(wxDC& dc, int8_t index, const wxPoint& position,
                    uint8_t zIndex) const;
  
      wxImage tileImages[TILE_IMAGES_N];
  
      wxBitmap bgBitmap;
      wxBitmap boardBitmap;
  
      int prevGridPoint;
  };
  
  #endif
  