Add optional Spacing parameter to H/VSplitMid

This commit is contained in:
Robert Müller 2022-01-26 20:19:25 +01:00
parent 155a922d47
commit 4fbca828f4
2 changed files with 18 additions and 15 deletions

View file

@ -216,25 +216,26 @@ void CUI::ClipDisable()
Graphics()->ClipDisable(); Graphics()->ClipDisable();
} }
void CUIRect::HSplitMid(CUIRect *pTop, CUIRect *pBottom) const void CUIRect::HSplitMid(CUIRect *pTop, CUIRect *pBottom, float Spacing) const
{ {
CUIRect r = *this; CUIRect r = *this;
float Cut = r.h / 2; const float Cut = r.h / 2;
const float HalfSpacing = Spacing / 2;
if(pTop) if(pTop)
{ {
pTop->x = r.x; pTop->x = r.x;
pTop->y = r.y; pTop->y = r.y;
pTop->w = r.w; pTop->w = r.w;
pTop->h = Cut; pTop->h = Cut - HalfSpacing;
} }
if(pBottom) if(pBottom)
{ {
pBottom->x = r.x; pBottom->x = r.x;
pBottom->y = r.y + Cut; pBottom->y = r.y + Cut + HalfSpacing;
pBottom->w = r.w; pBottom->w = r.w;
pBottom->h = r.h - Cut; pBottom->h = r.h - Cut - HalfSpacing;
} }
} }
@ -282,25 +283,25 @@ void CUIRect::HSplitBottom(float Cut, CUIRect *pTop, CUIRect *pBottom) const
} }
} }
void CUIRect::VSplitMid(CUIRect *pLeft, CUIRect *pRight) const void CUIRect::VSplitMid(CUIRect *pLeft, CUIRect *pRight, float Spacing) const
{ {
CUIRect r = *this; CUIRect r = *this;
float Cut = r.w / 2; const float Cut = r.w / 2;
// Cut *= Scale(); const float HalfSpacing = Spacing / 2;
if(pLeft) if(pLeft)
{ {
pLeft->x = r.x; pLeft->x = r.x;
pLeft->y = r.y; pLeft->y = r.y;
pLeft->w = Cut; pLeft->w = Cut - HalfSpacing;
pLeft->h = r.h; pLeft->h = r.h;
} }
if(pRight) if(pRight)
{ {
pRight->x = r.x + Cut; pRight->x = r.x + Cut + HalfSpacing;
pRight->y = r.y; pRight->y = r.y;
pRight->w = r.w - Cut; pRight->w = r.w - Cut - HalfSpacing;
pRight->h = r.h; pRight->h = r.h;
} }
} }

View file

@ -19,10 +19,11 @@ public:
/** /**
* Splits 2 CUIRect inside *this* CUIRect horizontally. You can pass null pointers. * Splits 2 CUIRect inside *this* CUIRect horizontally. You can pass null pointers.
* *
* @param pTop This rect will end up taking the top half of this CUIRect * @param pTop This rect will end up taking the top half of this CUIRect.
* @param pBottom This rect will end up taking the bottom half of this CUIRect * @param pBottom This rect will end up taking the bottom half of this CUIRect.
* @param Spacing Total size of margin between split rects.
*/ */
void HSplitMid(CUIRect *pTop, CUIRect *pBottom) const; void HSplitMid(CUIRect *pTop, CUIRect *pBottom, float Spacing = 0.0f) const;
/** /**
* Splits 2 CUIRect inside *this* CUIRect. * Splits 2 CUIRect inside *this* CUIRect.
* *
@ -52,8 +53,9 @@ public:
* *
* @param pLeft This rect will take up the left half of *this* CUIRect. * @param pLeft This rect will take up the left half of *this* CUIRect.
* @param pRight This rect will take up the right half of *this* CUIRect. * @param pRight This rect will take up the right half of *this* CUIRect.
* @param Spacing Total size of margin between split rects.
*/ */
void VSplitMid(CUIRect *pLeft, CUIRect *pRight) const; void VSplitMid(CUIRect *pLeft, CUIRect *pRight, float Spacing = 0.0f) const;
/** /**
* Splits 2 CUIRect inside *this* CUIRect. * Splits 2 CUIRect inside *this* CUIRect.
* *