Clean project structure.
This commit is contained in:
parent
78a4fa99ff
commit
947bf937fd
496 changed files with 206 additions and 137 deletions
54
src/ui/ui_controls/HorizontalSpacer.cpp
Normal file
54
src/ui/ui_controls/HorizontalSpacer.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include "HorizontalSpacer.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <numeric>
|
||||
#include <iostream>
|
||||
|
||||
HorizontalSpacer::HorizontalSpacer()
|
||||
: Widget(),
|
||||
mScales()
|
||||
{
|
||||
mName = "HorizontalSpacer";
|
||||
}
|
||||
|
||||
std::unique_ptr<HorizontalSpacer> HorizontalSpacer::Create()
|
||||
{
|
||||
return std::make_unique<HorizontalSpacer>();
|
||||
}
|
||||
|
||||
void HorizontalSpacer::addWidget(WidgetUPtr widget)
|
||||
{
|
||||
addWidgetWithScale(std::move(widget), 1.0);
|
||||
}
|
||||
|
||||
void HorizontalSpacer::addWidgetWithScale(WidgetUPtr widget, double scale)
|
||||
{
|
||||
Widget::addWidget(std::move(widget));
|
||||
mScales.push_back(scale);
|
||||
}
|
||||
|
||||
void HorizontalSpacer::updateChildLocations()
|
||||
{
|
||||
double scaleSum = std::accumulate(mScales.begin(), mScales.end(), 0.0);
|
||||
double offset = 0;
|
||||
double height = mSize.mHeight;
|
||||
if (mSize.mMaxHeight > 0 && height > mSize.mMaxHeight)
|
||||
{
|
||||
height = mSize.mMaxHeight;
|
||||
}
|
||||
|
||||
for(std::size_t idx=0; idx<mChildren.size(); idx++)
|
||||
{
|
||||
auto& child = mChildren[idx];
|
||||
double scale = mScales[idx];
|
||||
double delta = height * (scale/scaleSum);
|
||||
auto size = child->getSize();
|
||||
if (size.mMaxHeight > 0 && delta > size.mMaxHeight)
|
||||
{
|
||||
delta = size.mMaxHeight;
|
||||
}
|
||||
child->setBounds(mSize.mWidth, unsigned(delta));
|
||||
child->setLocation(DiscretePoint(mLocation.getX(), mLocation.getY() + unsigned(offset)));
|
||||
offset += delta;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue