1#ifndef __SGRIDLAYOUT__H__
2#define __SGRIDLAYOUT__H__
4#include <interface/slayout-i.h>
5#include <layout/SGridLayoutParamStruct.h>
6#include <sobject/Sobject.hpp>
11#define ATTR_GRIDGRAVITY(attribname, varname, allredraw) \
12 if (0 == strAttribName.CompareNoCase(attribname)) \
14 varname = SGridLayoutParam::parseGridGravity(strValue); \
15 hRet = allredraw ? S_OK : S_FALSE; \
25 ,
protected SGridLayoutParamStruct {
28 friend class SGridLayout;
46 STDMETHOD_(
void,
Clear)(THIS) OVERRIDE;
53 STDMETHOD_(BOOL,
IsMatchParent)(THIS_ ORIENTATION orientation) SCONST OVERRIDE;
60 STDMETHOD_(BOOL,
IsWrapContent)(THIS_ ORIENTATION orientation) SCONST OVERRIDE;
67 STDMETHOD_(BOOL,
IsSpecifiedSize)(THIS_ ORIENTATION orientation) SCONST OVERRIDE;
80 STDMETHOD_(
void,
SetMatchParent)(THIS_ ORIENTATION orientation) OVERRIDE;
86 STDMETHOD_(
void,
SetWrapContent)(THIS_ ORIENTATION orientation) OVERRIDE;
94 (THIS_ ORIENTATION orientation,
const SLayoutSize &layoutSize) OVERRIDE;
100 STDMETHOD_(
void *,
GetRawData)(THIS) OVERRIDE;
106 STDMETHOD_(ILayoutParam *,
Clone)(THIS) SCONST OVERRIDE;
110 ATTR_INT(L
"rowSpan", nRowSpan, TRUE)
111 ATTR_INT(L
"columnSpan", nColSpan, TRUE)
115 ATTR_GRIDGRAVITY(L
"layout_xGravity", layoutGravityX, TRUE)
116 ATTR_GRIDGRAVITY(L
"layout_yGravity", layoutGravityY, TRUE)
117 ATTR_GRIDGRAVITY(L
"layout_gravity", layoutGravityX = layoutGravityY, TRUE)
118 ATTR_FLOAT(L
"columnWeight", fColWeight, TRUE)
119 ATTR_FLOAT(L
"rowWeight", fRowWeight, TRUE)
171 STDMETHOD_(BOOL,
IsParamAcceptable)(THIS_
const ILayoutParam *pLayoutParam) SCONST OVERRIDE;
177 STDMETHOD_(
void,
LayoutChildren)(THIS_ IWindow *pParent) OVERRIDE;
193 (THIS_
const IWindow *pParent,
int nWidth,
int nHeight) SCONST OVERRIDE;
196 ATTR_INT(L
"columnCount",
m_nCols, TRUE)
197 ATTR_INT(L
"rowCount",
m_nRows, TRUE)
201 ATTR_GRIDGRAVITY(L
"xGravity",
m_GravityX, TRUE)
202 ATTR_GRIDGRAVITY(L
"yGravity",
m_GravityY, TRUE)
212 int CalcCells(
const IWindow *pParent)
const;
BOOL IsParamAcceptable(const ILayoutParam *pLayoutParam) SCONST OVERRIDE
检查布局参数是否可接受
int CalcCells(const IWindow *pParent) const
计算网格单元格数量
ILayoutParam * CreateLayoutParam() SCONST OVERRIDE
创建布局参数对象
SIZE MeasureChildren(const IWindow *pParent, int nWidth, int nHeight) SCONST OVERRIDE
测量子窗口大小
void LayoutChildren(IWindow *pParent) OVERRIDE
布局子窗口
BOOL IsMatchParent(ORIENTATION orientation) SCONST OVERRIDE
检查是否匹配父容器大小
ILayoutParam * Clone() SCONST OVERRIDE
克隆布局参数
BOOL IsWrapContent(ORIENTATION orientation) SCONST OVERRIDE
检查是否包裹内容大小
void SetSpecifiedSize(ORIENTATION orientation, const SLayoutSize &layoutSize) OVERRIDE
设置指定大小
void Clear() OVERRIDE
清除布局参数
HRESULT OnAttrHeight(const SStringW &strValue, BOOL bLoading)
处理高度属性
void SetWrapContent(ORIENTATION orientation) OVERRIDE
设置包裹内容大小
HRESULT OnAttrWidth(const SStringW &strValue, BOOL bLoading)
处理宽度属性
static GridGravity parseGridGravity(const SStringW &strValue)
解析网格对齐方式
void * GetRawData() OVERRIDE
获取原始数据指针
SLayoutSize GetSpecifiedSize(ORIENTATION orientation) SCONST OVERRIDE
获取指定大小
void SetMatchParent(ORIENTATION orientation) OVERRIDE
设置匹配父容器大小
BOOL IsSpecifiedSize(ORIENTATION orientation) SCONST OVERRIDE
检查是否指定大小
HRESULT OnAttrSize(const SStringW &strValue, BOOL bLoading)
处理大小属性
A class representing an ASCII string.