Difference between revisions of "User:Oscar.Ken"

From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
Jump to: navigation, search
 
 
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:

Layout Design

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:

  1. Only work well with "cegui_absdim" at present, maybe do some additional work to make it work well with "cegui_reldim".
  2. 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