mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-11 02:28:18 +00:00
95550fd6a9
Use `ColorRGBA` instead of `vec4` for `Draw4`.
119 lines
4.5 KiB
C++
119 lines
4.5 KiB
C++
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
|
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
|
#ifndef GAME_CLIENT_UI_RECT_H
|
|
#define GAME_CLIENT_UI_RECT_H
|
|
|
|
#include <base/color.h>
|
|
|
|
class IGraphics;
|
|
|
|
class CUIRect
|
|
{
|
|
static IGraphics *s_pGraphics;
|
|
|
|
public:
|
|
static void Init(IGraphics *pGraphics) { s_pGraphics = pGraphics; }
|
|
|
|
float x, y, w, h;
|
|
|
|
/**
|
|
* 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 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, float Spacing = 0.0f) const;
|
|
/**
|
|
* Splits 2 CUIRect inside *this* CUIRect.
|
|
*
|
|
* The cut parameter determines the height of the top rect, so it allows more customization than HSplitMid.
|
|
*
|
|
* This method doesn't check if Cut is bigger than *this* rect height.
|
|
*
|
|
* @param Cut The height of the pTop rect.
|
|
* @param pTop The rect that ends up at the top with a height equal to Cut.
|
|
* @param pBottom The rect that ends up at the bottom with a height equal to *this* rect minus the Cut.
|
|
*/
|
|
void HSplitTop(float Cut, CUIRect *pTop, CUIRect *pBottom) const;
|
|
/**
|
|
* Splits 2 CUIRect inside *this* CUIRect.
|
|
*
|
|
* The cut parameter determines the height of the bottom rect, so it allows more customization than HSplitMid.
|
|
*
|
|
* This method doesn't check if Cut is bigger than *this* rect height.
|
|
*
|
|
* @param Cut The height of the pBottom rect.
|
|
* @param pTop The rect that ends up at the top with a height equal to *this* CUIRect height minus Cut.
|
|
* @param pBottom The rect that ends up at the bottom with a height equal to Cut.
|
|
*/
|
|
void HSplitBottom(float Cut, CUIRect *pTop, CUIRect *pBottom) const;
|
|
/**
|
|
* Splits 2 CUIRect inside *this* CUIRect vertically. You can pass null pointers.
|
|
*
|
|
* @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 Spacing Total size of margin between split rects.
|
|
*/
|
|
void VSplitMid(CUIRect *pLeft, CUIRect *pRight, float Spacing = 0.0f) const;
|
|
/**
|
|
* Splits 2 CUIRect inside *this* CUIRect.
|
|
*
|
|
* The cut parameter determines the width of the left rect, so it allows more customization than VSplitMid.
|
|
*
|
|
* This method doesn't check if Cut is bigger than *this* rect width.
|
|
*
|
|
* @param Cut The width of the pLeft rect.
|
|
* @param pLeft The rect that ends up at the left with a width equal to Cut.
|
|
* @param pRight The rect that ends up at the right with a width equal to *this* rect minus the Cut.
|
|
*/
|
|
void VSplitLeft(float Cut, CUIRect *pLeft, CUIRect *pRight) const;
|
|
/**
|
|
* Splits 2 CUIRect inside *this* CUIRect.
|
|
*
|
|
* The cut parameter determines the width of the right rect, so it allows more customization than VSplitMid.
|
|
*
|
|
* This method doesn't check if Cut is bigger than *this* rect width.
|
|
*
|
|
* @param Cut The width of the pRight rect.
|
|
* @param pLeft The rect that ends up at the left with a width equal to *this* CUIRect width minus Cut.
|
|
* @param pRight The rect that ends up at the right with a width equal to Cut.
|
|
*/
|
|
void VSplitRight(float Cut, CUIRect *pLeft, CUIRect *pRight) const;
|
|
|
|
/**
|
|
* Places pOtherRect inside *this* CUIRect with Cut as the margin.
|
|
*
|
|
* @param Cut The margin.
|
|
* @param pOtherRect The CUIRect to place inside *this* CUIRect.
|
|
*/
|
|
void Margin(float Cut, CUIRect *pOtherRect) const;
|
|
/**
|
|
* Places pOtherRect inside *this* CUIRect applying Cut as the margin only on the vertical axis.
|
|
*
|
|
* @param Cut The margin.
|
|
* @param pOtherRect The CUIRect to place inside *this* CUIRect
|
|
*/
|
|
void VMargin(float Cut, CUIRect *pOtherRect) const;
|
|
/**
|
|
* Places pOtherRect inside *this* CUIRect applying Cut as the margin only on the horizontal axis.
|
|
*
|
|
* @param Cut The margin.
|
|
* @param pOtherRect The CUIRect to place inside *this* CUIRect
|
|
*/
|
|
void HMargin(float Cut, CUIRect *pOtherRect) const;
|
|
/**
|
|
* Checks whether a point is inside *this* CUIRect.
|
|
*
|
|
* @param PointX The point's X position.
|
|
* @param PointY The point's Y position.
|
|
* @return true iff the given point is inside *this* CUIRect.
|
|
*/
|
|
bool Inside(float PointX, float PointY) const;
|
|
|
|
void Draw(ColorRGBA Color, int Corners, float Rounding) const;
|
|
void Draw4(ColorRGBA ColorTopLeft, ColorRGBA ColorTopRight, ColorRGBA ColorBottomLeft, ColorRGBA ColorBottomRight, int Corners, float Rounding) const;
|
|
};
|
|
|
|
#endif
|