1: <?php
2: /**
3: * ManiaLib - Lightweight PHP framework for Manialinks
4: *
5: * @see http://code.google.com/p/manialib/
6: * @copyright Copyright (c) 2009-2011 NADEO (http://www.nadeo.com)
7: * @license http://www.gnu.org/licenses/lgpl.html LGPL License 3
8: * @version $Revision: 590 $:
9: * @author $Author: maximeraoust $:
10: * @date $Date: 2011-12-27 19:40:38 +0100 (mar., 27 déc. 2011) $:
11: */
12:
13: namespace ManiaLib\Gui\Layouts;
14:
15: /**
16: * Text-like, items fill the current line then next line etc.
17: */
18: class Flow extends AbstractLayout
19: {
20:
21: protected $maxHeight = 0;
22: protected $currentLineElementCount = 0;
23:
24: function preFilter(\ManiaLib\Gui\Component $item)
25: {
26: // flo: added 0.1 because of floating mistakes
27: $availableWidth = $this->sizeX - $this->xIndex - $this->borderWidth + 0.1;
28:
29: // If end of the line is reached
30: if($availableWidth < $item->getRealSizeX() & $this->currentLineElementCount > 0)
31: {
32: $this->yIndex -= $this->maxHeight + $this->marginHeight;
33: $this->xIndex = $this->borderWidth;
34: $this->currentLineElementCount = 0;
35: $this->maxHeight = 0;
36: }
37: }
38:
39: function postFilter(\ManiaLib\Gui\Component $item)
40: {
41: $this->xIndex += $item->getRealSizeX() + $this->marginWidth;
42: if(!$this->maxHeight || $item->getRealSizeY() > $this->maxHeight)
43: {
44: $this->maxHeight = $item->getRealSizeY();
45: }
46: $this->currentLineElementCount++;
47: }
48:
49: }
50:
51: ?>