 
 
 
 
 
 
#ifndef __BLOP_BOX_H__
#define __BLOP_BOX_H__
#include "var.h"
#include "grob.h"
#include <string>
namespace blop 
{
    using namespace std;
    class box : public grob
    {
    private:
	friend class container;
	enum history_values {LeftBottom,RightTop,WidthHeight,Center} xhistory_[2], yhistory_[2];
	
    private:
	length left_,right_,width_,xcenter_;
	length bottom_,top_,height_,ycenter_;
	bool   width_fixed_, height_fixed_;
	static void set_(const length &l,
			 length &left,
			 length &right,
			 length &width,
			 length ¢er,
			 bool width_fixed,
			 history_values history[2],
			 history_values todo,
			 bool &left_modified,
			 bool &right_modified);
	void set_left_(const length &, bool &left_modified, bool &right_modified);
	void set_right_(const length &, bool &left_modified, bool &right_modified);
	void set_xcenter_(const length &, bool &left_modified, bool &right_modified);
	void set_width_(const length &, bool &left_modified, bool &right_modified);
	void set_bottom_(const length &, bool &bottom_modified, bool &top_modified);
	void set_top_(const length &, bool &bottom_modified, bool &top_modified);
	void set_height_(const length &, bool &bottom_modified, bool &top_modified);
	void set_ycenter_(const length &, bool &bottom_modified, bool &top_modified);
    public:
	box();
	const length &left() const;
	virtual box  &left(const length &);
	const length &right() const;
	virtual box  &right(const length &);
	const length &width() const;
	virtual box  &width(const length &);
	const length &xcenter() const;
	virtual box  &xcenter(const length &);
	const length &bottom() const;
	virtual box  &bottom(const length &);
	const length &top() const;
	virtual box  &top(const length &);
	const length &height() const;
	virtual box  &height(const length &);
	const length &ycenter() const;
	virtual box  &ycenter(const length &);
	virtual box  &fix_width(bool f);
	virtual box  &fix_height(bool f);
	virtual ~box() {}
	void prepare_for_draw();
	void print(terminal *) {}
    };
}
#ifdef __MAKECINT__
#pragma link off function blop::box::prepare_for_draw();
#endif
#endif
 
 
 
 
 
