9 Coordinate() : col(0), row(0) {}
\r
10 Coordinate(DWORD c, DWORD r) : col(c), row(r) {}
\r
11 void Set(DWORD c, DWORD r) { col = c; row = r; }
\r
14 inline int operator==(const Coordinate &pos1, const Coordinate &pos2) { return pos1.col == pos2.col && pos1.row == pos2.row; }
\r
15 inline int operator!=(const Coordinate &pos1, const Coordinate &pos2) { return !(pos1 == pos2); }
\r
16 inline int operator<(const Coordinate &pos1, const Coordinate &pos2) { return pos1.row < pos2.row || (pos1.row == pos2.row && pos1.col < pos2.col); }
\r
17 inline int operator>(const Coordinate &pos1, const Coordinate &pos2) { return pos2 < pos1; }
\r
21 enum { COL_EOL = 0xFFFFFFFF, ROW_MAX = 0xFFFFFFFF };
\r
23 Coordinate posStart;
\r
26 Region() { posStart.Set(0, 0); posEnd.Set(0, 0); }
\r
27 Region(const Region& r) { posStart = r.posStart; posEnd = r.posEnd; }
\r
28 Region(DWORD cs, DWORD rs, DWORD ce, DWORD re) { posStart.Set(cs, rs); posEnd.Set(ce, re); }
\r
30 BOOL IsEmptyRegion() const { return posStart == posEnd; }
\r
34 inline int operator==(const Region &r1, const Region &r2) { return (r1.posStart == r2.posStart) && (r1.posEnd == r2.posEnd); }
\r