// reclay.h // 平面上に四角形を重ならないように置く // Copyright (c) 2001 Tsutomu Saito All Rights Reserved // 2001/08/31 #ifndef HEADER_RECLAY_H #define HEADER_RECLAY_H #pragma warning (disable : 4786) #include #include #include using namespace std; /* struct CRect { int left,top,right,bottom; CRect(int l,int t,int r,int b) : left(l),top(t),right(r),bottom(b) {} };*/ struct CReserveCheck { set > m_rsrv; // 予約範囲 void AddRange(int i,int j); int GetPos(int st,int len); struct FCompMap1 { int m_i; FCompMap1(int i) : m_i(i) {} bool operator()(const pair& p)const{return p.second >= m_i;} }; struct FCompMap2 { int m_i; FCompMap2(int i) : m_i(i) {} bool operator()(const pair& p)const{return p.first > m_i;} }; struct FCompMap3 { int m_i; FCompMap3(int i) : m_i(i) {} bool operator()(const pair& p)const{return p.first >= m_i;} }; }; class CLayoutRect { struct CARect { long v[4]; // 0:l, 1:t, 2:r, 3:b CARect(){v[0] = v[1] = v[2] = v[3] = 0;} CARect(const CRect& r){memcpy(this,&r,sizeof(CARect));} }; list m_data; public: void AddRect(const CRect& r) {m_data.push_back(r);} void AddRect(const CRect& r0,int i); void AddRectMinMove(const CRect& r0); int Check(CRect& r0,int i)const; void Clear() {m_data.clear();} const list& Data()const {return *reinterpret_cast*>(&m_data);} }; #endif // HEADER_RECLAY_H