template <class T>
inline T min2(T a, T b) {
return (a) < (b) ? (a) : (b);
};
template <class T>
inline T max2(T a, T b) {
return (a) > (b) ? (a) : (b);
};
class TPoint : public TSuperClass
{
public:
TPoint (void);
TPoint (int, int);
TPoint (TPoint&);
int GetX (void) const;
int GetY (void) const;
void SetX (int);
void SetY (int);
void Set (TPoint&);
void Set (TPoint*);
void Set (int, int);
double Distance(TPoint* p);
void Display (ostream& cout) const;
ostream& operator<< (ostream&) const;
char * ObjectInfo (void);
void operator+= (const TPoint&);
void operator-= (const TPoint&);
void operator+= (int);
void operator-= (int);
void operator*= (double);
void operator/= (double);
private:
int x_;
int y_;
};
inline int TPoint::GetX(void) const {return x_;}
inline int TPoint::GetY(void) const {return y_;}
class TEllipse : public TSuperClass
{
public:
TEllipse (void);
TEllipse (TPoint&, int, int);
TEllipse (int, int, int, int);
~TEllipse (void);
void Set (TEllipse& iw);
void Set (TEllipse* iw);
void Set (TPoint&, int, int);
void Set (int, int, int, int);
TPoint* Center (void) const;
int GetCenterX (void) const;
int GetCenterY (void) const;
int RadiusX (void) const;
int RadiusY (void) const;
char * ObjectInfo (void);
private:
TPoint center;
int radiusX;
int radiusY;
};