#ifndef __BLOP_POINT_H__
#define __BLOP_POINT_H__

#include "grob.h"
#include "point_drawer.h"
#include "color.h"

namespace blop
{
    class point : public grob
    {
    private:
	static point_drawer *default_type_;
	point_drawer *type_;

	static color default_color_;
	color color_;

	static length default_size_;
	length size_;

	length x_, y_;
    public:

	point();
	~point();

	void                 default_pointtype(const point_drawer &);
	point               &pointtype(const point_drawer &);
	point               &pt       (const point_drawer &);
	const point_drawer  &pointtype() const;

	void default_pointcolor(const color &);
	point &pointcolor(const color &);
	point &pc(const color &);
	const color & pointcolor() const;

	void default_pointsize(const length &);
	point &pointsize(const length &);
	point &ps(const length &);
	const length &pointsize() const;

	static point &draw(container *parent, length x, length y);
	static point &fdraw(length x, length y);
	static point &pdraw(length x, length y);
	static point &cdraw(length x, length y);

	point &x(length x) { x_ = x; return *this; }
	const length &x() const { return x_; }

	point &y(length y) { y_ = y; return *this; }
	const length &y() const { return y_; }

	point &layer(const var & l) { grob::layer(l); return *this; }

	void print(terminal *t);
	void prepare_for_draw();
    };
}

#endif