Difference between revisions of "User:Oscar.Ken"
From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
| Line 1: | Line 1: | ||
==Auto Layout System== | ==Auto Layout System== | ||
| − | [http://mail.google.com/mail/?attid=0.1&disp=emb&view=att&th=113e27e7d1e32a20] | + | It like Qt's layout system. Support position and stretch the window objects. |
| − | Auto layout the CEGUI Window objects. | + | |
| + | The design UML chart: | ||
| + | |||
| + | [http://mail.google.com/mail/?attid=0.1&disp=emb&view=att&th=113e27e7d1e32a20 Layout Design] | ||
| + | |||
| + | [http://mail.google.com/mail/?attid=0.1&disp=emb&view=att&th=113e2ea1b97e4093 Demo Figure] | ||
| + | |||
| + | (I have no place to upload image files :( ) | ||
| + | |||
| + | Auto layout the CEGUI Window objects with XML configure files. Just write xml file like this: | ||
| + | |||
| + | <GridLayout CellCount="{3,3}"> | ||
| + | <LayoutObject ID="Root/PlayerInfo_1" CellIndex="0" AlignMask="TopRight | Offset" SizeFlag="Fixed" Offset="{-20,0}" /> | ||
| + | <LayoutObject ID="Root/PlayerInfo_4" CellIndex="2" AlignMask="TopRight | Offset" SizeFlag="Fixed" Offset="{0,-10}" /> | ||
| + | <LayoutObject ID="PlayerInfo/DeployTime" CellIndex="4" /> | ||
| + | <LayoutObject ID="Root/PlayerInfo_2" CellCoord="{0,2}" AlignMask="TopLeft | Offset" Offset="{0,-10}" /> | ||
| + | <LayoutObject ID="Root/PlayerInfo_3" CellCoord="{1,2}" AlignMask="BottomRight | Offset" Offset="{180,0}" /> | ||
| + | <LayoutObject ID="PlayerInfo/SaveReplay" CellCoord="{2,2}" AlignMask="BottomRight | Offset" Offset="{-9,-5}" /> | ||
| + | </GridLayout> | ||
| + | |||
| + | The "ID" property is the CEGUI Window object's ID which you can specify in the cegui layout fiels. And you can composite HLayout/VLayout/GridLayout objects. | ||
| + | |||
| + | Limitations: | ||
| + | #Only work well with "cegui_absdim" at present, maybe do some additional work to make it work well with "cegui_reldim". | ||
| + | #Currrently xml file parse was implemented with MSXML, maybe can refractoring to parse xml file through IXMLDocument & IXMLElement, I'll do it when free. | ||
| + | |||
| + | '''EAlignMask values''': | ||
| + | eAlignMask_Left | ||
| + | eAlignMask_Right | ||
| + | eAlignMask_Top | ||
| + | eAlignMask_Bottom | ||
| + | eAlignMask_VCenter | ||
| + | eAlignMask_HCenter | ||
| + | eAlignMask_Offset | ||
| + | eAlignMask_Center = eAlignMask_HCenter | eAlignMask_VCenter, | ||
| + | eAlignMask_LeftCenter = eAlignMask_Left | eAlignMask_VCenter, | ||
| + | eAlignMask_RightCenter = eAlignMask_Right | eAlignMask_VCenter, | ||
| + | eAlignMask_TopLeft = eAlignMask_Top | eAlignMask_Left, | ||
| + | eAlignMask_TopCenter = eAlignMask_Top | eAlignMask_HCenter, | ||
| + | eAlignMask_TopRight = eAlignMask_Top | eAlignMask_Right, | ||
| + | eAlignMask_BottomLeft = eAlignMask_Bottom | eAlignMask_Left, | ||
| + | eAlignMask_BottomCenter = eAlignMask_Bottom | eAlignMask_HCenter, | ||
| + | eAlignMask_BottomRight = eAlignMask_Bottom | eAlignMask_Right, | ||
| + | |||
| + | '''ESizeFlag values:''' | ||
| + | eSizeFlag_Fixed | ||
| + | eSizeFlag_HStretch | ||
| + | eSizeFlag_VStretch | ||
| + | eSizeFlag_StretchAll | ||
Latest revision as of 09:25, 20 July 2007
Auto Layout System
It like Qt's layout system. Support position and stretch the window objects.
The design UML chart:
(I have no place to upload image files :( )
Auto layout the CEGUI Window objects with XML configure files. Just write xml file like this:
<GridLayout CellCount="{3,3}">
<LayoutObject ID="Root/PlayerInfo_1" CellIndex="0" AlignMask="TopRight | Offset" SizeFlag="Fixed" Offset="{-20,0}" />
<LayoutObject ID="Root/PlayerInfo_4" CellIndex="2" AlignMask="TopRight | Offset" SizeFlag="Fixed" Offset="{0,-10}" />
<LayoutObject ID="PlayerInfo/DeployTime" CellIndex="4" />
<LayoutObject ID="Root/PlayerInfo_2" CellCoord="{0,2}" AlignMask="TopLeft | Offset" Offset="{0,-10}" />
<LayoutObject ID="Root/PlayerInfo_3" CellCoord="{1,2}" AlignMask="BottomRight | Offset" Offset="{180,0}" />
<LayoutObject ID="PlayerInfo/SaveReplay" CellCoord="{2,2}" AlignMask="BottomRight | Offset" Offset="{-9,-5}" />
</GridLayout>
The "ID" property is the CEGUI Window object's ID which you can specify in the cegui layout fiels. And you can composite HLayout/VLayout/GridLayout objects.
Limitations:
- Only work well with "cegui_absdim" at present, maybe do some additional work to make it work well with "cegui_reldim".
- Currrently xml file parse was implemented with MSXML, maybe can refractoring to parse xml file through IXMLDocument & IXMLElement, I'll do it when free.
EAlignMask values: eAlignMask_Left eAlignMask_Right eAlignMask_Top eAlignMask_Bottom eAlignMask_VCenter eAlignMask_HCenter eAlignMask_Offset eAlignMask_Center = eAlignMask_HCenter | eAlignMask_VCenter, eAlignMask_LeftCenter = eAlignMask_Left | eAlignMask_VCenter, eAlignMask_RightCenter = eAlignMask_Right | eAlignMask_VCenter, eAlignMask_TopLeft = eAlignMask_Top | eAlignMask_Left, eAlignMask_TopCenter = eAlignMask_Top | eAlignMask_HCenter, eAlignMask_TopRight = eAlignMask_Top | eAlignMask_Right, eAlignMask_BottomLeft = eAlignMask_Bottom | eAlignMask_Left, eAlignMask_BottomCenter = eAlignMask_Bottom | eAlignMask_HCenter, eAlignMask_BottomRight = eAlignMask_Bottom | eAlignMask_Right,
ESizeFlag values: eSizeFlag_Fixed eSizeFlag_HStretch eSizeFlag_VStretch eSizeFlag_StretchAll