Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files. make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type. This commit contains no other changes aside from adding and applying clang-format-all.sh
124 lines
2.7 KiB
C++
124 lines
2.7 KiB
C++
|
|
#include "Gwen/Controls/PanelListPanel.h"
|
|
|
|
using namespace Gwen;
|
|
using namespace Controls;
|
|
|
|
GWEN_CONTROL_CONSTRUCTOR(PanelListPanel)
|
|
{
|
|
m_bVertical = false;
|
|
m_bSizeToChildren = true;
|
|
m_iControlSpacing = 5;
|
|
m_iLineSpacing = 5;
|
|
m_bWrapping = true;
|
|
}
|
|
|
|
void PanelListPanel::Render(Gwen::Skin::Base* /*skin*/)
|
|
{
|
|
}
|
|
|
|
Gwen::Point PanelListPanel::GetBiggestChildSize()
|
|
{
|
|
int width = 0;
|
|
int height = 0;
|
|
|
|
for (Base::List::iterator it = Children.begin(); it != Children.end(); ++it)
|
|
{
|
|
Controls::Base* pChild = *it;
|
|
if (pChild->Width() > width)
|
|
width = pChild->Width();
|
|
|
|
if (pChild->Height() > height)
|
|
height = pChild->Height();
|
|
}
|
|
|
|
return Gwen::Point(width, height);
|
|
}
|
|
|
|
void PanelListPanel::DoVerticalLayout()
|
|
{
|
|
int panelWidth = 0;
|
|
int panelX = GetPadding().left;
|
|
int panelY = GetPadding().top;
|
|
int lastPanelY = panelY;
|
|
int testWrap = 0;
|
|
|
|
Gwen::Point childSize = GetBiggestChildSize();
|
|
//Lay my children out accordingly
|
|
for (Base::List::iterator it = Children.begin(); it != Children.end(); ++it)
|
|
{
|
|
Controls::Base* pChild = *it;
|
|
testWrap = lastPanelY + m_iControlSpacing + childSize.y;
|
|
if (m_bWrapping && testWrap > Height() - GetPadding().bottom)
|
|
{
|
|
panelY = GetPadding().top;
|
|
panelX = GetPadding().left + panelWidth + m_iLineSpacing;
|
|
lastPanelY = panelY + m_iControlSpacing + childSize.y;
|
|
}
|
|
else
|
|
{
|
|
panelY = lastPanelY;
|
|
lastPanelY = testWrap;
|
|
}
|
|
|
|
pChild->SetPos(panelX, panelY);
|
|
|
|
if (pChild->X() + childSize.x > panelWidth)
|
|
panelWidth = pChild->X() + childSize.x;
|
|
}
|
|
|
|
if (m_bSizeToChildren)
|
|
{
|
|
Gwen::Point childrenSizeTotal = ChildrenSize();
|
|
SetSize(childrenSizeTotal.x, Height());
|
|
}
|
|
}
|
|
|
|
void PanelListPanel::DoHorizontalLayout()
|
|
{
|
|
int panelHeight = 0;
|
|
int panelX = GetPadding().left;
|
|
int panelY = GetPadding().top;
|
|
int lastPanelX = panelX;
|
|
int testWrap = 0;
|
|
|
|
Gwen::Point childSize = GetBiggestChildSize();
|
|
|
|
for (Base::List::iterator it = Children.begin(); it != Children.end(); ++it)
|
|
{
|
|
Controls::Base* pChild = *it;
|
|
|
|
testWrap = lastPanelX + m_iControlSpacing + childSize.x;
|
|
if (m_bWrapping && testWrap > Width() - GetPadding().right)
|
|
{
|
|
panelX = GetPadding().left;
|
|
panelY = GetPadding().top + panelHeight + m_iLineSpacing;
|
|
lastPanelX = panelX + m_iControlSpacing + childSize.x;
|
|
}
|
|
else
|
|
{
|
|
panelX = lastPanelX;
|
|
lastPanelX = testWrap;
|
|
}
|
|
|
|
pChild->SetPos(panelX, panelY);
|
|
|
|
if (pChild->Y() + childSize.y > panelHeight)
|
|
panelHeight = pChild->Y() + childSize.y;
|
|
}
|
|
|
|
if (m_bSizeToChildren)
|
|
{
|
|
Gwen::Point childrenSizeTotal = ChildrenSize();
|
|
SetSize(Width(), childrenSizeTotal.y);
|
|
}
|
|
}
|
|
|
|
void PanelListPanel::Layout(Skin::Base* skin)
|
|
{
|
|
BaseClass::Layout(skin);
|
|
if (IsHorizontalLayout())
|
|
DoHorizontalLayout();
|
|
else
|
|
DoVerticalLayout();
|
|
} |