Guiliani  Version 2.5 revision 7293 (documentation build 13)
GUILayoutHelper.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUI_LAYOUT_HELPER__H_
11#define GUI_LAYOUT_HELPER__H_
12
13#include "eC_Types.h"
14#include "eC_Math.h"
15#include "eC_TList_doubleLinked.h"
16#include "GUIObject.h"
17
19class CGUIRect;
20
22#define GET_LAYOUT_HELPER #error "please use GUILayouter:: instead"
23
25
45{
46public:
50 {
51 LIST_ALIGN_HORIZONTAL=0,
52 LIST_ALIGN_VERTICAL,
53 LIST_ALIGN_INVALID // TODO: Why?
54 };
55
59 {
60 REPOSITION_ALIGN_TOP=0,
61 REPOSITION_ALIGN_BOTTOM,
62 REPOSITION_ALIGN_LEFT,
63 REPOSITION_ALIGN_RIGHT,
64 REPOSITION_ALIGN_INVALID
65 };
66
70 {
71 LAYOUT_ALIGN_LEFT,
72 LAYOUT_ALIGN_RIGHT,
73 LAYOUT_ALIGN_TOP,
74 LAYOUT_ALIGN_BOTTOM,
75 LAYOUT_ALIGN_HORIZONTAL_CENTERED,
76 LAYOUT_ALIGN_VERTICAL_CENTERED,
77 LAYOUT_DISTRIBUTE_HORIZONTALLY,
78 LAYOUT_DISTRIBUTE_VERTICALLY
79 };
80
84 {
85 LAYOUT_FLIP_HORIZONTAL,
86 LAYOUT_FLIP_VERTICAL
87 };
88
92 {
93 LAYOUT_ROTATE_RIGHT,
94 LAYOUT_ROTATE_LEFT
95 };
96
99
106 static void AlignChildren(
107 const CGUICompositeObject* pkParent,
108 LayoutAlignment_t eAlignment,
109 const eC_Value& vRelDistance = eC_FromInt(0));
110
117 static void AlignObject(
118 CGUIObject* pkAlignedObj,
119 LayoutAlignment_t eAlignment,
120 const CGUIObject* pkRefObj);
121
127 static void AlignObject(
128 CGUIObject* pkAlignedObj,
129 LayoutAlignment_t eAlignment);
130
137 static void AlignObjects(
139 LayoutAlignment_t eAlignment,
140 const CGUIObject* pkRefObj);
141
155 static void AlignToGrid(
156 const CGUICompositeObject* pkParentObj,
157 eC_UInt uiRow,
158 eC_UInt uiColumn, eC_Bool bMakeSameSize);
159
165 static void ResizeObject(
166 CGUIObject* pkObj, const
167 CGUIObject* pkRefObj);
168
174 static void ResizeObjects(
176 const CGUIObject* pkRefObj);
177
187 static void DistributeObjects(
189 eC_Bool bHorizontal,
190 eC_Bool bVertical);
191
197 static void AdaptWidth(
198 CGUIObject* pkObj,
199 const CGUIObject* pkRefObj);
200
206 static void AdaptWidth(
208 const CGUIObject* pkRefObj);
209
215 static void AdaptHeight(
216 CGUIObject* pkObj,
217 CGUIObject* pkRefObj);
218
224 static void AdaptHeight(
226 CGUIObject* pkRefObj);
227
234 const CGUICompositeObject* pkParent,
235 const eC_Value& vSpace);
236
242 static void SpreadVertically(
243 const CGUICompositeObject* pkParent,
244 const eC_Value& vSpace);
245
252 CGUIObject* pkObject,
253 const eC_Value& vAbsXPos);
254
261 CGUIObject* pkObject,
262 const eC_Value& vAbsYPos);
263
269 static eC_Value GetCurrentAbsXPos(const CGUIObject* pkObject);
270
276 static eC_Value GetCurrentAbsYPos(const CGUIObject* pkObject);
277
283 static CGUIRect GetCurrentAbsRect(const CGUIObject* pkObject);
284
294 static eC_Value GetCurrentAbsXDistance(
295 const CGUIObject* pkObjectOnRight,
296 const CGUIObject* pkObjectOnLeft)
297 {
298 return GetCurrentAbsXPos(pkObjectOnRight) - GetCurrentAbsXPos(pkObjectOnLeft);
299 }
300
310 static eC_Value GetCurrentAbsYDistance(
311 const CGUIObject* pkObjectAtBottom,
312 const CGUIObject* pkObjectAtTop)
313 {
314 return GetCurrentAbsYPos(pkObjectAtBottom) - GetCurrentAbsYPos(pkObjectAtTop);
315 }
316
321
336 CGUICompositeObject *pkParent,
337 const eC_Value& vBorder,
338 const eC_Value& vGap,
339 const RepositionAlignment_t& eBasePoint,
340 const eC_Bool& bResizeParent = true,
341 const eC_Bool& bDoubleBorder = true);
342
352 CGUICompositeObject* pkParent,
353 const CGUIRect& kAvailableArea,
354 const eC_Bool& bUnifyItemSize,
355 const ListAlignment_t& eBasePoint);
356
361 static void FlipObject(CGUIObject* pkFlipObj, const LayoutFlip_t& eFlip);
362
367 static void RotateObject(CGUIObject* pkRotateObj, const LayoutRotate_t& eRotate);
368
369private:
370
374
377 CGUILayoutHelper(const CGUILayoutHelper& kSource);
378
381 CGUILayoutHelper& operator=(const CGUILayoutHelper& kSource);
382};
383#endif
This is the Guiliani base class for all composite objects.
Definition: GUICompositeObject.h:70
A collection of methods to help layout a GUI.
Definition: GUILayoutHelper.h:45
static void AlignObjects(eC_TListDoubleLinked< CGUIObject * > &pkAlignedObjs, LayoutAlignment_t eAlignment, const CGUIObject *pkRefObj)
static void DistributeObjects(eC_TListDoubleLinked< CGUIObject * > &pkObjs, eC_Bool bHorizontal, eC_Bool bVertical)
static void AdaptHeight(eC_TListDoubleLinked< CGUIObject * > &pkObjs, CGUIObject *pkRefObj)
static void FlipObject(CGUIObject *pkFlipObj, const LayoutFlip_t &eFlip)
static void RotateObject(CGUIObject *pkRotateObj, const LayoutRotate_t &eRotate)
static CGUIRect GetCurrentAbsRect(const CGUIObject *pkObject)
static void AdaptWidth(CGUIObject *pkObj, const CGUIObject *pkRefObj)
static void ResizeObjects(eC_TListDoubleLinked< CGUIObject * > &pkObjs, const CGUIObject *pkRefObj)
static void AlignObject(CGUIObject *pkAlignedObj, LayoutAlignment_t eAlignment, const CGUIObject *pkRefObj)
static void UseBoundingRectangleOfChildren(CGUICompositeObject *pkParent)
ListAlignment_t
Definition: GUILayoutHelper.h:50
static eC_Value GetCurrentAbsYPos(const CGUIObject *pkObject)
static void RepositionChildren(CGUICompositeObject *pkParent, const eC_Value &vBorder, const eC_Value &vGap, const RepositionAlignment_t &eBasePoint, const eC_Bool &bResizeParent=true, const eC_Bool &bDoubleBorder=true)
static eC_Value GetCurrentAbsXPos(const CGUIObject *pkObject)
static void AdaptWidth(eC_TListDoubleLinked< CGUIObject * > &pkObjs, const CGUIObject *pkRefObj)
static void ResizeObject(CGUIObject *pkObj, const CGUIObject *pkRefObj)
static void SpreadVertically(const CGUICompositeObject *pkParent, const eC_Value &vSpace)
~CGUILayoutHelper()
Destructor.
Definition: GUILayoutHelper.h:98
static void AdaptHeight(CGUIObject *pkObj, CGUIObject *pkRefObj)
static eC_Value GetCurrentAbsYDistance(const CGUIObject *pkObjectAtBottom, const CGUIObject *pkObjectAtTop)
Definition: GUILayoutHelper.h:310
static void MoveToCurrentAbsYPos(CGUIObject *pkObject, const eC_Value &vAbsYPos)
static void SpreadHorizontally(const CGUICompositeObject *pkParent, const eC_Value &vSpace)
static eC_Value GetCurrentAbsXDistance(const CGUIObject *pkObjectOnRight, const CGUIObject *pkObjectOnLeft)
Definition: GUILayoutHelper.h:294
static void AlignChildren(const CGUICompositeObject *pkParent, LayoutAlignment_t eAlignment, const eC_Value &vRelDistance=eC_FromInt(0))
LayoutRotate_t
Definition: GUILayoutHelper.h:92
static void AlignObject(CGUIObject *pkAlignedObj, LayoutAlignment_t eAlignment)
static void MoveToCurrentAbsXPos(CGUIObject *pkObject, const eC_Value &vAbsXPos)
RepositionAlignment_t
Definition: GUILayoutHelper.h:59
LayoutFlip_t
Definition: GUILayoutHelper.h:84
static void AlignToGrid(const CGUICompositeObject *pkParentObj, eC_UInt uiRow, eC_UInt uiColumn, eC_Bool bMakeSameSize)
LayoutAlignment_t
Definition: GUILayoutHelper.h:70
static void AdjustListArrangement(CGUICompositeObject *pkParent, const CGUIRect &kAvailableArea, const eC_Bool &bUnifyItemSize, const ListAlignment_t &eBasePoint)
This is the Guiliani base class all controls are derived from.
Definition: GUIObject.h:79
Helper class to supply a platform independent rectangle implementation.
Definition: GUIRect.h:63