// Vorosweep - Copyright (C) 2010-2014 T. Mouton
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to <thibaud.mouton@gmail.com>.

#include <map>
#include "grid.h"
#include "sweepobject.h"

#ifndef _BORDER_INCLUDE
#define _BORDER_INCLUDE

namespace vorosweep
{

class Border
{
  protected:
    Grid1d *bordergrid;
    Border *badj[2];
  public:
    Border ( Point *pt0, Point *pt1 )
    {
      bordergrid = new Grid1d ( pt0, pt1 );
      badj[0] = badj[1] = NULL;
    }   
    inline Grid1d *get_grid()
    {
      return bordergrid;
    }
    inline void init ( int nb )
    {
      bordergrid->init(nb);
    }
    inline double *get_dir()
    {
      return bordergrid->get_dir();
    }
    inline Point *get_point ( int i )
    {
      return bordergrid->get_point(i);
    }
    inline double *get_plane()
    {
      return bordergrid->get_plane();
    }
    inline int get_bucket_size ( )
    {
      return bordergrid->get_bucket_size();
    }
    inline int get_first_bucket_index ( )
    {
      return 0;
    }
    inline int get_last_bucket_index ( )
    {
      return bordergrid->get_bucket_size()-1;
    }
    inline void set_adj ( int i, Border *adj )
    {
      badj[i] = adj;
    }
    inline void set_adjs ( Border *adj0, Border *adj1 )
    {
      badj[0] = adj0;
      badj[1] = adj1;
    }
    inline Border *get_adj ( int i )
    {
      return badj[i];
    }
//     void insert_sweepedge ( SweepEdge *se );
//     int potential_crash ( SweepEdge *se, double *crashpos );
    void print();
};

};

#endif
