TNB Library
TnbOverlayLayout.h
[詳解]
1#pragma once
11#include "TnbSimpleVector.h"
12#include "TnbLayout.h"
13
14
15
16//TNB Library
17namespace TNB
18{
19
20
21
44{
45 DEFSUPER(CAbstractLayout);
46public:
47
50 {
51 m_params = new CParamVector();
52 }
53
62 COverlayLayout& Add(const ILayout& layout, ELocation hloc = ADJUST, ELocation vloc = ADJUST)
63 {
64 m_params->Add(TParam(hloc, vloc, layout));
65 return *this;
66 }
67
73 virtual ILayout* Clone(void) const
74 {
76 *P = *this;
77 return P;
78 }
79
87 virtual bool GetMinimumSize(SIZE& _size) const
88 {
89 _size.cx =0;
90 _size.cy =0;
91 loop ( i, m_params->GetSize() )
92 {
93 SIZE sz;
94 if ( m_params->At(i).pLayout->GetMinimumSize(sz) )
95 {
96 _size.cx = max(_size.cx, sz.cy);
97 _size.cy = max(_size.cy, sz.cy);
98 }
99 }
100 AddMargnSize(_size);
101 return true;
102 }
103
112 virtual void Decide(int x, int y, WPARAM wParam, LPARAM lParam)
113 {
114 SIZE areaSize = m_layoutSize;
115 {
116 SIZE sz;
117 GetMargnSize(sz);
118 areaSize.cx -= sz.cx;
119 areaSize.cy -= sz.cy;
120 }
121 int posy = m_margn.top;
122 int posx = m_margn.left;
123 loop ( i, m_params->GetSize() )
124 {
125 TParam& pa = m_params->At(i);
126 HorizontalItemDecide(pa.pLayout, x, posx, areaSize.cx, pa.horizontalLocate, wParam, lParam);
127 VerticalItemDecide(pa.pLayout, y, posy, areaSize.cy, pa.verticalLocate, wParam, lParam);
128 }
129 }
130
131private:
132 typedef CSimpleVectorT<TParam> CParamVector;
134};
135
136
137
138}; // TNB
139
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
レイアウト関係のヘッダ
簡易配列型情報管理関係のヘッダ
レイアウトアイテム抽象クラス.
Definition: TnbLayout.h:194
ELocation
レイアウトアイテム配置方法.
Definition: TnbLayout.h:204
@ ADJUST
調整(Resize出来ない場合中央)
Definition: TnbLayout.h:209
void GetMargnSize(SIZE &_size) const
[取得] マージンサイズ取得.
Definition: TnbLayout.h:414
void AddMargnSize(SIZE &_size) const
[加算] マージンサイズ加算.
Definition: TnbLayout.h:425
void HorizontalItemDecide(ILayout *pLayout, INT_PTR x, INT_PTR xx, INT_PTR width, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 水平方向アイテム決定.
Definition: TnbLayout.h:338
SIZE m_layoutSize
レイアウト全体サイズ(縦、横)
Definition: TnbLayout.h:324
void VerticalItemDecide(ILayout *pLayout, INT_PTR y, INT_PTR yy, INT_PTR height, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 垂直方向アイテム決定.
Definition: TnbLayout.h:379
RECT m_margn
外周のマージン
Definition: TnbLayout.h:325
オーバーレイレイアウトアイテムクラス.
virtual bool GetMinimumSize(SIZE &_size) const
[取得] 最小サイズ取得.
virtual ILayout * Clone(void) const
[作成] クローン作成.
virtual void Decide(int x, int y, WPARAM wParam, LPARAM lParam)
[処理] 決定.
COverlayLayout(void)
コンストラクタ
COverlayLayout & Add(const ILayout &layout, ELocation hloc=ADJUST, ELocation vloc=ADJUST)
[設定] アイテム追加.
ポインタ型ハンドルテンプレート
TNB Library
Definition: TnbDoxyTitle.txt:2
管理パラメータ型
Definition: TnbLayout.h:307
ELocation horizontalLocate
アイテムの水平配置種
Definition: TnbLayout.h:308
ELocation verticalLocate
アイテムの垂直配置種
Definition: TnbLayout.h:309
ILayout::Ptr pLayout
レイアウトアイテム
Definition: TnbLayout.h:310
レイアウトインターフェース.
Definition: TnbLayout.h:34