#include "HorizontalSpacer.h" #include #include #include HorizontalSpacer::HorizontalSpacer() : Widget(), mScales() { mName = "HorizontalSpacer"; } std::unique_ptr HorizontalSpacer::Create() { return std::make_unique(); } 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; idxgetSize(); 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; } }