#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