/*!
 * \file Polygon.h
 * \brief
 * \author Gapchich Vladislav
 * \date 23/10/11
 */

#ifndef __POLYGON_H__
#define __POLYGON_H__

#include "core/image/CoordT.h"
#include <list>


typedef std::list< NICE::CoordT< int > > PointsList;

namespace OBJREC
{

//! \brief Contains category ID and point list of the polygon
class Polygon
{
  public:
    Polygon();
    Polygon ( const Polygon &copy );
    ~Polygon();

    void push ( const NICE::CoordT< int > &aPoint );
    void push ( const int &x, const int &y );
    void setID ( const int &anID );

    const PointsList * points() const;
    NICE::CoordT< int > pop();
    int id() const;

  private:
    PointsList points_;

    /// id interpreted as a class label
    int id_;

  public:
    /// unique id that distinguishs this particular bounding box object from all others
    int unique_id_;
};

} //namespace

#endif /* __POLYGON_H__ */

/*
 *
 */
