87 ASSERT( m_sizex != 0 );
101 m_params->Add(
TParam(hloc, vloc, layout));
130 loop ( y, GetVerticalItemCount() )
132 loop ( x, GetHorizontalItemCount() )
134 if ( m_params->GetSize() > y * GetHorizontalItemCount() + x)
137 if ( m_params->At(y * GetHorizontalItemCount() + x).pLayout->GetMinimumSize(sz) )
140 lxs[x] = max(lxs[x], sz.cx);
145 _size.cy +=
ToInt(ly * GetVerticalItemCount());
148 loop ( x, GetHorizontalItemCount() )
150 lx = max(lx, lxs[x]);
152 _size.cx +=
ToInt(lx * GetVerticalItemCount());
154 AddChinkSize(_size, GetHorizontalItemCount(), GetVerticalItemCount());
166 virtual void Decide(
int x,
int y, WPARAM wParam, LPARAM lParam)
171 AddChinkSize(sz, GetHorizontalItemCount(), GetVerticalItemCount());
172 areaSize.cx =
ToInt((areaSize.cx - sz.cx) / GetHorizontalItemCount());
173 areaSize.cy =
ToInt((areaSize.cy - sz.cy) / GetVerticalItemCount());
176 loop ( yy, GetVerticalItemCount() )
179 loop ( xx, GetHorizontalItemCount() )
181 if ( m_params->GetSize() > yy * GetHorizontalItemCount() + xx)
183 TParam& pa = m_params->At(yy * GetHorizontalItemCount() + xx);
198 size_t GetHorizontalItemCount(
void)
const
203 size_t GetVerticalItemCount(
void)
const
205 return (m_params->GetSize() + m_sizex - 1) / m_sizex;
#define loop(VAR, CNT)
loop構文.
void HorizontalItemDecide(ILayout *pLayout, INT_PTR x, INT_PTR xx, INT_PTR width, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 水平方向アイテム決定.
SIZE m_gapSize
各アイテム間のギャップ(縦、横)
SIZE m_layoutSize
レイアウト全体サイズ(縦、横)
void VerticalItemDecide(ILayout *pLayout, INT_PTR y, INT_PTR yy, INT_PTR height, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 垂直方向アイテム決定.
void AddChinkSize(SIZE &_size, size_t cx, size_t cy) const
[加算] 隙間サイズ加算.
virtual bool GetMinimumSize(SIZE &_size) const
[取得] 最小サイズ取得.
virtual ILayout * Clone(void) const
[作成] クローン作成.
virtual void Decide(int x, int y, WPARAM wParam, LPARAM lParam)
[処理] 決定.
CGridLayout(size_t cx)
コンストラクタ
CGridLayout & Add(const ILayout &layout, ELocation hloc=DEFAULT, ELocation vloc=DEFAULT)
[設定] アイテム追加.
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
ELocation horizontalLocate
アイテムの水平配置種
ELocation verticalLocate
アイテムの垂直配置種
ILayout::Ptr pLayout
レイアウトアイテム