{
friend class gRegion;
public:
- eRect() { x1 = y1 = x2 = y2 = 0; }
+ /* eRect() constructs an INVALID rectangle. */
+ eRect() { x1 = y1 = 0; x2 = y2 = -1; }
eRect( const ePoint &topleft, const ePoint &bottomright );
// we use this contructor very often... do it inline...
eRect( int left, int top, int width, int height );
- bool isNull() const;
- bool isEmpty() const;
- bool isValid() const;
+ bool empty() const;
+ bool valid() const;
eRect normalize() const;
int left() const;
friend bool operator==( const eRect &, const eRect & );
friend bool operator!=( const eRect &, const eRect & );
-
+
+ static eRect emptyRect() { return eRect(0, 0, 0, 0); }
+ static eRect invalidRect() { return eRect(); }
+
private:
int x1;
int y1;
bool operator!=( const eRect &, const eRect & );
-/*****************************************************************************
- eRect stream functions
- *****************************************************************************/
-namespace std
-{
- inline ostream &operator<<( ostream & s, const eRect & r )
- {
- s << r.left() << r.top()
- << r.right() << r.bottom();
-
- return s;
- }
-
- inline istream &operator>>( istream & s, eRect & r )
- {
- int x1, y1, x2, y2;
- s >> x1 >> y1 >> x2 >> y2;
- r.setCoords( x1, y1, x2, y2 );
- return s;
- }
-}
-
/*****************************************************************************
eRect inline member functions
*****************************************************************************/
y2 = top+height;
}
-inline bool eRect::isNull() const
-{ return x2 == x1 && y2 == y1; }
-
-inline bool eRect::isEmpty() const
-{ return x1 >= x2 || y1 >= y2; }
+inline bool eRect::empty() const
+{ return x1 == x2 && y1 == y2; }
-inline bool eRect::isValid() const
+inline bool eRect::valid() const
{ return x1 <= x2 && y1 <= y2; }
inline int eRect::left() const