diff options
Diffstat (limited to 'dw/oofposabslikemgr.hh')
-rw-r--r-- | dw/oofposabslikemgr.hh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dw/oofposabslikemgr.hh b/dw/oofposabslikemgr.hh new file mode 100644 index 00000000..f9e94a5d --- /dev/null +++ b/dw/oofposabslikemgr.hh @@ -0,0 +1,61 @@ +#ifndef __DW_OOFPOSABSLIKEMGR_HH__ +#define __DW_OOFPOSABSLIKEMGR_HH__ + +#include "oofpositionedmgr.hh" + +namespace dw { + +namespace oof { + +class OOFPosAbsLikeMgr: public OOFPositionedMgr +{ +protected: + virtual int containerBoxOffsetX () = 0; + virtual int containerBoxOffsetY () = 0; + virtual int containerBoxRestWidth () = 0; + virtual int containerBoxRestHeight () = 0; + + inline int containerBoxDiffWidth () + { return containerBoxOffsetX () + containerBoxRestWidth (); } + inline int containerBoxDiffHeight () + { return containerBoxOffsetY () + containerBoxRestHeight (); } + + bool haveExtremesChanged (); + + void sizeAllocateChildren (); + + bool posXAbsolute (Child *child); + bool posYAbsolute (Child *child); + + void calcPosAndSizeChildOfChild (Child *child, int refWidth, int refHeight, + int *xPtr, int *yPtr, int *widthPtr, + int *ascentPtr, int *descentPtr); + void calcHPosAndSizeChildOfChild (Child *child, int refWidth, + int origChildWidth, int *xPtr, + int *widthPtr); + void calcVPosAndSizeChildOfChild (Child *child, int refHeight, + int origChildAscent, int origChildDescent, + int *yPtr, int *ascentPtr, + int *descentPtr); + + +public: + OOFPosAbsLikeMgr (OOFAwareWidget *container); + ~OOFPosAbsLikeMgr (); + + void calcWidgetRefSize (core::Widget *widget, core::Requisition *size); + + void getSize (core::Requisition *containerReq, int *oofWidth, + int *oofHeight); + void getExtremes (core::Extremes *containerExtr, + int *oofMinWidth, int *oofMaxWidth); + + int getAvailWidthOfChild (core::Widget *child, bool forceValue); + int getAvailHeightOfChild (core::Widget *child, bool forceValue); +}; + +} // namespace oof + +} // namespace dw + +#endif // __DW_OOFPOSABSLIKEMGR_HH__ |