#ifndef           GAP_MAP_H
#define           GAP_MAP_H

#include          "blobbox.h"
#include          "notdll.h"

class GAPMAP
{
  public:
    GAPMAP(  //constructor
           TO_BLOCK *block);

    ~GAPMAP () {                 //destructor
      if (map != NULL)
        free_mem(map);
    }

    BOOL8 table_gap(               //Is gap a table?
                    inT16 left,    //From here
                    inT16 right);  //To here

  private:
    inT16 total_rows;            //in block
    inT16 min_left;              //Left extreme
    inT16 max_right;             //Right extreme
    inT16 bucket_size;           // half an x ht
    inT16 *map;                  //empty counts
    inT16 map_max;               //map[0..max_map]       defind
    BOOL8 any_tabs;
};

/*-----------------------------*/

extern BOOL_VAR_H (gapmap_debug, FALSE, "Say which blocks have tables");
extern BOOL_VAR_H (gapmap_use_ends, FALSE,
"Use large space at start and end of rows");
extern BOOL_VAR_H (gapmap_no_isolated_quanta, FALSE,
"Ensure gaps not less than 2quanta wide");
extern double_VAR_H (gapmap_big_gaps, 1.75, "xht multiplier");
#endif
