用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.3 KiB

5 months ago
#pragma once
#include "interface/slayout-i.h"
#include "SGridLayoutParamStruct.h"
namespace SOUI
{
// Int = %d StringA
#define ATTR_GRIDGRAVITY(attribname, varname, allredraw) \
if (0 == strAttribName.CompareNoCase(attribname)) \
{ \
varname=SGridLayoutParam::parseGridGravity(strValue); \
hRet = allredraw ? S_OK : S_FALSE; \
} \
else \
class SGridLayoutParam : public SObjectImpl<TObjRefImpl<ILayoutParam>>
, protected SGridLayoutParamStruct
{
SOUI_CLASS_NAME(SGridLayoutParam,L"GridLayoutParam")
friend class SGridLayout;
public:
static GridGravity parseGridGravity(const SStringW & strValue);
SGridLayoutParam();
virtual bool IsMatchParent(ORIENTATION orientation) const;
virtual bool IsWrapContent(ORIENTATION orientation) const;
virtual bool IsSpecifiedSize(ORIENTATION orientation) const;
virtual SLayoutSize GetSpecifiedSize(ORIENTATION orientation) const;
virtual void Clear();
virtual void SetMatchParent(ORIENTATION orientation);
virtual void SetWrapContent(ORIENTATION orientation);
virtual void SetSpecifiedSize(ORIENTATION orientation, const SLayoutSize& layoutSize);
virtual void * GetRawData();
virtual ILayoutParam * Clone() const;
public:
SOUI_ATTRS_BEGIN()
ATTR_INT(L"rowSpan",nRowSpan,TRUE)
ATTR_INT(L"columnSpan",nColSpan,TRUE)
ATTR_CUSTOM(L"width",OnAttrWidth)
ATTR_CUSTOM(L"height",OnAttrHeight)
ATTR_CUSTOM(L"size",OnAttrSize)
ATTR_GRIDGRAVITY(L"layout_xGravity",layoutGravityX,TRUE)
ATTR_GRIDGRAVITY(L"layout_yGravity",layoutGravityY,TRUE)
ATTR_GRIDGRAVITY(L"layout_gravity",layoutGravityX=layoutGravityY,TRUE)
ATTR_FLOAT(L"columnWeight",fColWeight,TRUE)
ATTR_FLOAT(L"rowWeight",fRowWeight,TRUE)
SOUI_ATTRS_BREAK()
protected:
HRESULT OnAttrSize(const SStringW & strValue,BOOL bLoading);
HRESULT OnAttrWidth(const SStringW & strValue,BOOL bLoading);
HRESULT OnAttrHeight(const SStringW & strValue,BOOL bLoading);
};
class SOUI_EXP SGridLayout: public SObjectImpl<TObjRefImpl<ILayout>>
{
SOUI_CLASS_NAME_EX(SGridLayout,L"gridLayout",Layout)
public:
SGridLayout(void);
~SGridLayout(void);
virtual bool IsParamAcceptable(ILayoutParam *pLayoutParam) const;
virtual void LayoutChildren(SWindow * pParent);
virtual ILayoutParam * CreateLayoutParam() const;
virtual CSize MeasureChildren(const SWindow * pParent,int nWidth,int nHeight) const;
SOUI_ATTRS_BEGIN()
ATTR_INT(L"columnCount",m_nCols,TRUE)
ATTR_INT(L"rowCount",m_nRows,TRUE)
ATTR_LAYOUTSIZE(L"xInterval",m_xInterval,TRUE)
ATTR_LAYOUTSIZE(L"yInterval",m_yInterval,TRUE)
ATTR_LAYOUTSIZE(L"interval",m_xInterval=m_yInterval,TRUE)
ATTR_GRIDGRAVITY(L"xGravity",m_GravityX,TRUE)
ATTR_GRIDGRAVITY(L"yGravity",m_GravityY,TRUE)
ATTR_GRIDGRAVITY(L"gravity",m_GravityX=m_GravityY,TRUE)
SOUI_ATTRS_BREAK()
protected:
int CalcCells(const SWindow *pParent) const;
int m_nCols; /**<行数 */
int m_nRows; /**<列数 */
SLayoutSize m_xInterval; /**<水平间距 */
SLayoutSize m_yInterval; /**<垂直间距 */
GridGravity m_GravityX; /**<水平排列方式 */
GridGravity m_GravityY; /**<垂直排列方式 */
};
}