Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ #undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses
++
++ #include <private/polarchartlayout_p.h>
++ #include <private/chartpresenter_p.h>
++ #include <private/polarchartaxis_p.h>
++ #include <QtCore/QDebug>
++
++ QT_BEGIN_NAMESPACE
++
++ PolarChartLayout::PolarChartLayout(ChartPresenter *presenter)
++ : AbstractChartLayout(presenter)
++ {
++ }
++
++ PolarChartLayout::~PolarChartLayout()
++ {
++ }
++
++ QRectF PolarChartLayout::calculateAxisGeometry(const QRectF &geometry,
++ const QList<ChartAxisElement *> &axes,
++ bool update) const
++ {
++ // How to handle multiple angular/radial axes?
++ qreal axisRadius = geometry.height() / 2.0;
++ if (geometry.width() < geometry.height())
++ axisRadius = geometry.width() / 2.0;
++
++ int titleHeight = 0;
++ for (auto chartAxis : axes) {
++ if (!chartAxis->isVisible())
++ continue;
++
++ PolarChartAxis *polarChartAxis = static_cast<PolarChartAxis *>(chartAxis);
++ qreal radius = polarChartAxis->preferredAxisRadius(geometry.size());
++ if (radius < axisRadius)
++ axisRadius = radius;
++
++ if (chartAxis->axis()->orientation() == Qt::Horizontal
++ && chartAxis->axis()->isTitleVisible()
++ && !chartAxis->axis()->titleText().isEmpty()) {
++ // If axis has angular title, adjust geometry down by the space title takes
++ QRectF dummyRect = ChartPresenter::textBoundingRect(chartAxis->axis()->titleFont(), chartAxis->axis()->titleText());
++ titleHeight = (dummyRect.height() / 2.0) + chartAxis->titlePadding();
++ }
++ }
++
++ QRectF axisRect;
++ axisRect.setSize(QSizeF(axisRadius * 2.0, axisRadius * 2.0));
++ axisRect.moveCenter(geometry.center());
++ axisRect.adjust(0, titleHeight, 0, titleHeight);
++
++ if (update) {
++ for (auto chartAxis : axes)
++ chartAxis->setGeometry(axisRect, QRectF());
++ }
++
++ return axisRect;
++ }
++
++ QRectF PolarChartLayout::calculateAxisMinimum(const QRectF &minimum, const QList<ChartAxisElement *> &axes) const
++ {
++ Q_UNUSED(axes);
++ return minimum;
++ }
++
++ QT_END_NAMESPACE