##// END OF EJS Templates
Add support for reversed axis when useOpenGL is true...
Add support for reversed axis when useOpenGL is true Change-Id: If8b6690585c767b65eaa4a43e179c86183903637 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2854:46147b040d06
r2863:15eed6371853
Show More
legendlayout.cpp
521 lines | 18.8 KiB | text/x-c | CppLexer
Miikka Heikkinen
Updated license...
r2854 /****************************************************************************
Michal Klocek
Adds missing license headers
r1535 **
Miikka Heikkinen
Updated license...
r2854 ** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
Michal Klocek
Adds missing license headers
r1535 **
Miikka Heikkinen
Updated license...
r2854 ** This file is part of the Qt Charts module of the Qt Toolkit.
Michal Klocek
Adds missing license headers
r1535 **
Miikka Heikkinen
Updated license...
r2854 ** $QT_BEGIN_LICENSE:GPL$
Titta Heikkala
Updated license headers...
r2845 ** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
Miikka Heikkinen
Updated license...
r2854 ** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
Michal Klocek
Adds missing license headers
r1535 **
Titta Heikkala
Updated license headers...
r2845 ** $QT_END_LICENSE$
**
Miikka Heikkinen
Updated license...
r2854 ****************************************************************************/
Michal Klocek
Adds missing license headers
r1535
Titta Heikkala
Fix include syntax...
r2714 #include <private/legendlayout_p.h>
#include <private/chartpresenter_p.h>
#include <private/qlegend_p.h>
#include <private/abstractchartlayout_p.h>
Michal Klocek
Adds missing license headers
r1535
Titta Heikkala
Fix include syntax...
r2714 #include <private/qlegendmarker_p.h>
#include <private/legendmarkeritem_p.h>
#include <QtCharts/QLegendMarker>
sauimone
layout work started
r2168
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_BEGIN_NAMESPACE
Michal Klocek
Refactors layout managment...
r1534
Jani Honkonen
more coding style fixes for src-folder...
r2104 LegendLayout::LegendLayout(QLegend *legend)
sauimone
legend markers example. bugfix to legend scrolling
r2196 : m_legend(legend),
m_offsetX(0),
m_offsetY(0)
Michal Klocek
Refactors layout managment...
r1534 {
}
LegendLayout::~LegendLayout()
{
}
void LegendLayout::setOffset(qreal x, qreal y)
{
bool scrollHorizontal = true;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 switch (m_legend->alignment()) {
case Qt::AlignTop:
case Qt::AlignBottom:
scrollHorizontal = true;
break;
case Qt::AlignLeft:
case Qt::AlignRight:
scrollHorizontal = false;
break;
Michal Klocek
Refactors layout managment...
r1534 }
// If detached, the scrolling direction is vertical instead of horizontal and vice versa.
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (!m_legend->isAttachedToChart())
Michal Klocek
Refactors layout managment...
r1534 scrollHorizontal = !scrollHorizontal;
QRectF boundingRect = geometry();
Michal Klocek
Refactors layout...
r1965 qreal left, top, right, bottom;
getContentsMargins(&left, &top, &right, &bottom);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 boundingRect.adjust(left, top, -right, -bottom);
Michal Klocek
Refactors layout managment...
r1534
// Limit offset between m_minOffset and m_maxOffset
if (scrollHorizontal) {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (m_width <= boundingRect.width())
return;
Michal Klocek
Refactors layout managment...
r1534
if (x != m_offsetX) {
m_offsetX = qBound(m_minOffsetX, x, m_maxOffsetX);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 m_legend->d_ptr->items()->setPos(-m_offsetX, boundingRect.top());
Michal Klocek
Refactors layout managment...
r1534 }
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 } else {
if (m_height <= boundingRect.height())
return;
Michal Klocek
Refactors layout managment...
r1534
if (y != m_offsetY) {
m_offsetY = qBound(m_minOffsetY, y, m_maxOffsetY);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 m_legend->d_ptr->items()->setPos(boundingRect.left(), -m_offsetY);
Michal Klocek
Refactors layout managment...
r1534 }
}
}
QPointF LegendLayout::offset() const
{
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 return QPointF(m_offsetX, m_offsetY);
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Fix title font resize does not invalidate layout
r2088 void LegendLayout::invalidate()
{
QGraphicsLayout::invalidate();
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (m_legend->isAttachedToChart())
Michal Klocek
Fix title font resize does not invalidate layout
r2088 m_legend->d_ptr->m_presenter->layout()->invalidate();
}
Jani Honkonen
more coding style fixes for src-folder...
r2104 void LegendLayout::setGeometry(const QRectF &rect)
Michal Klocek
Refactors layout managment...
r1534 {
Michal Klocek
Bugfixes for layout...
r1837 m_legend->d_ptr->items()->setVisible(m_legend->isVisible());
Michal Klocek
Refactors layout managment...
r1534
Michal Klocek
fixes legend not vibile after showEvent
r2082 QGraphicsLayout::setGeometry(rect);
Michal Klocek
Bugfixes for layout...
r1837
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (m_legend->isAttachedToChart())
Michal Klocek
Refactors layout managment...
r1534 setAttachedGeometry(rect);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 else
Michal Klocek
Refactors layout managment...
r1534 setDettachedGeometry(rect);
}
Jani Honkonen
more coding style fixes for src-folder...
r2104 void LegendLayout::setAttachedGeometry(const QRectF &rect)
Michal Klocek
Refactors layout managment...
r1534 {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (!rect.isValid())
return;
Michal Klocek
Refactors layout managment...
r1534
sauimone
legend markers example. bugfix to legend scrolling
r2196 qreal oldOffsetX = m_offsetX;
qreal oldOffsetY = m_offsetY;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 m_offsetX = 0;
m_offsetY = 0;
Michal Klocek
Refactors layout managment...
r1534
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QSizeF size(0, 0);
Michal Klocek
Refactors layout managment...
r1534
sauimone
code inspection round 1 fixes
r2185 if (m_legend->d_ptr->markers().isEmpty()) {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 return;
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 }
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097
m_width = 0;
m_height = 0;
Michal Klocek
Refactors layout managment...
r1534
Michal Klocek
Refactors layout...
r1965 qreal left, top, right, bottom;
getContentsMargins(&left, &top, &right, &bottom);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QRectF geometry = rect.adjusted(left, top, -right, -bottom);
Michal Klocek
Refactors layout managment...
r1534
sauimone
layout work started
r2168 switch(m_legend->alignment()) {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignTop:
case Qt::AlignBottom: {
Titta Heikkala
Fix legend truncation...
r2617 // Calculate the space required for items and add them to a sorted list.
qreal markerItemsWidth = 0;
qreal itemMargins = 0;
QList<LegendWidthStruct *> legendWidthList;
foreach (QLegendMarker *marker, m_legend->d_ptr->markers()) {
LegendMarkerItem *item = marker->d_ptr->item();
if (item->isVisible()) {
QSizeF dummySize;
qreal itemWidth = item->sizeHint(Qt::PreferredSize, dummySize).width();
LegendWidthStruct *structItem = new LegendWidthStruct;
structItem->item = item;
structItem->width = itemWidth;
legendWidthList.append(structItem);
markerItemsWidth += itemWidth;
itemMargins += marker->d_ptr->item()->m_margin;
}
}
Titta Heikkala
Qt Charts project file structure change...
r2712 std::sort(legendWidthList.begin(), legendWidthList.end(), widthLongerThan);
Titta Heikkala
Fix legend truncation...
r2617
// If the items would occupy more space than is available, start truncating them
// from the longest one.
qreal availableGeometry = geometry.width() - right - left * 2 - itemMargins;
Titta Heikkala
Fix legend truncation...
r2673 if (markerItemsWidth >= availableGeometry && legendWidthList.count() > 0) {
Titta Heikkala
Fix legend truncation...
r2617 bool truncated(false);
int count = legendWidthList.count();
for (int i = 1; i < count; i++) {
int truncateIndex = i - 1;
while (legendWidthList.at(truncateIndex)->width >= legendWidthList.at(i)->width
&& !truncated) {
legendWidthList.at(truncateIndex)->width--;
markerItemsWidth--;
if (i > 1) {
// Truncate the items that are before the truncated one in the list.
for (int j = truncateIndex - 1; j >= 0; j--) {
if (legendWidthList.at(truncateIndex)->width
< legendWidthList.at(j)->width) {
legendWidthList.at(j)->width--;
markerItemsWidth--;
}
}
}
if (markerItemsWidth < availableGeometry)
truncated = true;
}
// Truncate the last item if needed.
if (i == count - 1) {
if (legendWidthList.at(count - 1)->width
> legendWidthList.at(truncateIndex)->width) {
legendWidthList.at(count - 1)->width--;
markerItemsWidth--;
}
}
if (truncated)
break;
}
Titta Heikkala
Fix signle legend truncation...
r2665 // Items are of same width and all of them need to be truncated
// or there is just one item that is truncated.
Titta Heikkala
Fix legend truncation...
r2617 while (markerItemsWidth >= availableGeometry) {
for (int i = 0; i < count; i++) {
legendWidthList.at(i)->width--;
markerItemsWidth--;
}
}
}
sauimone
layout work started
r2168 QPointF point(0,0);
Titta Heikkala
Add possibility to set markers in legend in reverse order...
r2676
int markerCount = m_legend->d_ptr->markers().count();
for (int i = 0; i < markerCount; i++) {
QLegendMarker *marker;
if (m_legend->d_ptr->m_reverseMarkers)
marker = m_legend->d_ptr->markers().at(markerCount - 1 - i);
else
marker = m_legend->d_ptr->markers().at(i);
sauimone
optional series parameter to markers function. code style fixes
r2193 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 if (item->isVisible()) {
Titta Heikkala
Fix legend truncation...
r2617 QRectF itemRect = geometry;
qreal availableWidth = 0;
for (int i = 0; i < legendWidthList.size(); ++i) {
if (legendWidthList.at(i)->item == item) {
availableWidth = legendWidthList.at(i)->width;
break;
}
}
itemRect.setWidth(availableWidth);
item->setGeometry(itemRect);
sauimone
layout work started
r2168 item->setPos(point.x(),geometry.height()/2 - item->boundingRect().height()/2);
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &rect = item->boundingRect();
sauimone
layout work started
r2168 size = size.expandedTo(rect.size());
qreal w = rect.width();
Titta Heikkala
Fix legend truncation...
r2617 m_width = m_width + w - item->m_margin;
sauimone
layout work started
r2168 point.setX(point.x() + w);
}
Michal Klocek
Refactors layout managment...
r1534 }
Titta Heikkala
Fix legend truncation...
r2617 // Delete structs from the container
qDeleteAll(legendWidthList);
Miikka Heikkinen
Fix label clipping issues using QOpenGLWidget as ChartView viewport...
r2828 // Round to full pixel via QPoint to avoid one pixel clipping on the edge in some cases
if (m_width < geometry.width()) {
m_legend->d_ptr->items()->setPos(QPoint(geometry.width() / 2 - m_width / 2,
geometry.top()));
} else {
m_legend->d_ptr->items()->setPos(geometry.topLeft().toPoint());
}
sauimone
layout work started
r2168 m_height = size.height();
Michal Klocek
Refactors layout managment...
r1534 }
sauimone
layout work started
r2168 break;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignLeft:
case Qt::AlignRight: {
sauimone
layout work started
r2168 QPointF point(0,0);
Titta Heikkala
Add possibility to set markers in legend in reverse order...
r2676 int markerCount = m_legend->d_ptr->markers().count();
for (int i = 0; i < markerCount; i++) {
QLegendMarker *marker;
if (m_legend->d_ptr->m_reverseMarkers)
marker = m_legend->d_ptr->markers().at(markerCount - 1 - i);
else
marker = m_legend->d_ptr->markers().at(i);
sauimone
optional series parameter to markers function. code style fixes
r2193 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 if (item->isVisible()) {
sauimone
layout work started
r2168 item->setGeometry(geometry);
item->setPos(point);
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &rect = item->boundingRect();
sauimone
layout work started
r2168 qreal h = rect.height();
size = size.expandedTo(rect.size());
m_height+=h;
point.setY(point.y() + h);
}
}
Miikka Heikkinen
Fix label clipping issues using QOpenGLWidget as ChartView viewport...
r2828 // Round to full pixel via QPoint to avoid one pixel clipping on the edge in some cases
if (m_height < geometry.height()) {
m_legend->d_ptr->items()->setPos(QPoint(geometry.left(),
geometry.height() / 2 - m_height / 2));
} else {
m_legend->d_ptr->items()->setPos(geometry.topLeft().toPoint());
}
sauimone
layout work started
r2168 m_width = size.width();
break;
Michal Klocek
Refactors layout managment...
r1534 }
}
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097
Michal Klocek
Refactors layout...
r1965 m_minOffsetX = -left;
m_minOffsetY = - top;
m_maxOffsetX = m_width - geometry.width() - right;
m_maxOffsetY = m_height - geometry.height() - bottom;
sauimone
legend markers example. bugfix to legend scrolling
r2196
setOffset(oldOffsetX, oldOffsetY);
Michal Klocek
Refactors layout managment...
r1534 }
Jani Honkonen
more coding style fixes for src-folder...
r2104 void LegendLayout::setDettachedGeometry(const QRectF &rect)
Michal Klocek
Refactors layout managment...
r1534 {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (!rect.isValid())
return;
Michal Klocek
Fixes blinking and minimal false size for legend
r1538
Michal Klocek
Refactors layout managment...
r1534 // Detached layout is different.
// In detached mode legend may have multiple rows and columns, so layout calculations
// differ a log from attached mode.
// Also the scrolling logic is bit different.
sauimone
legend markers example. bugfix to legend scrolling
r2196 qreal oldOffsetX = m_offsetX;
qreal oldOffsetY = m_offsetY;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 m_offsetX = 0;
m_offsetY = 0;
Michal Klocek
Refactors layout managment...
r1534
Michal Klocek
Refactors layout...
r1965 qreal left, top, right, bottom;
getContentsMargins(&left, &top, &right, &bottom);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QRectF geometry = rect.adjusted(left, top, -right, -bottom);
Michal Klocek
Refactors layout...
r1965
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QSizeF size(0, 0);
Michal Klocek
Refactors layout managment...
r1534
sauimone
code inspection round 1 fixes
r2185 QList<QLegendMarker *> markers = m_legend->d_ptr->markers();
Michal Klocek
Refactors layout managment...
r1534
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (markers.isEmpty())
return;
Michal Klocek
Refactors layout managment...
r1534
switch (m_legend->alignment()) {
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignTop: {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QPointF point(0, 0);
m_width = 0;
m_height = 0;
for (int i = 0; i < markers.count(); i++) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = markers.at(i)->d_ptr->item();
if (item->isVisible()) {
item->setGeometry(geometry);
item->setPos(point.x(),point.y());
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &boundingRect = item->boundingRect();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 qreal w = boundingRect.width();
qreal h = boundingRect.height();
m_width = qMax(m_width,w);
m_height = qMax(m_height,h);
point.setX(point.x() + w);
if (point.x() + w > geometry.left() + geometry.width() - right) {
// Next item would go off rect.
point.setX(0);
point.setY(point.y() + h);
if (i+1 < markers.count()) {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_height += h;
Michal Klocek
Refactors layout managment...
r1534 }
}
}
}
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_legend->d_ptr->items()->setPos(geometry.topLeft());
m_minOffsetX = -left;
m_minOffsetY = -top;
m_maxOffsetX = m_width - geometry.width() - right;
m_maxOffsetY = m_height - geometry.height() - bottom;
}
break;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignBottom: {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QPointF point(0, geometry.height());
m_width = 0;
m_height = 0;
for (int i = 0; i < markers.count(); i++) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = markers.at(i)->d_ptr->item();
if (item->isVisible()) {
item->setGeometry(geometry);
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &boundingRect = item->boundingRect();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 qreal w = boundingRect.width();
qreal h = boundingRect.height();
m_width = qMax(m_width,w);
m_height = qMax(m_height,h);
item->setPos(point.x(),point.y() - h);
point.setX(point.x() + w);
if (point.x() + w > geometry.left() + geometry.width() - right) {
// Next item would go off rect.
point.setX(0);
point.setY(point.y() - h);
if (i+1 < markers.count()) {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_height += h;
Michal Klocek
Refactors layout managment...
r1534 }
}
}
}
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_legend->d_ptr->items()->setPos(geometry.topLeft());
Jani Honkonen
src folder: another massive victory for coding style police
r2131
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_minOffsetX = -left;
m_minOffsetY = -m_height + geometry.height() - top;
m_maxOffsetX = m_width - geometry.width() - right;
m_maxOffsetY = -bottom;
Jani Honkonen
src folder: another massive victory for coding style police
r2131 }
break;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignLeft: {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QPointF point(0, 0);
m_width = 0;
m_height = 0;
qreal maxWidth = 0;
for (int i = 0; i < markers.count(); i++) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = markers.at(i)->d_ptr->item();
if (item->isVisible()) {
item->setGeometry(geometry);
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &boundingRect = item->boundingRect();
Jani Honkonen
src folder: another massive victory for coding style police
r2131 qreal w = boundingRect.width();
qreal h = boundingRect.height();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 m_height = qMax(m_height,h);
maxWidth = qMax(maxWidth,w);
item->setPos(point.x(),point.y());
Jani Honkonen
src folder: another massive victory for coding style police
r2131 point.setY(point.y() + h);
if (point.y() + h > geometry.bottom() - bottom) {
// Next item would go off rect.
point.setX(point.x() + maxWidth);
point.setY(0);
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 if (i+1 < markers.count()) {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_width += maxWidth;
maxWidth = 0;
Michal Klocek
Refactors layout managment...
r1534 }
}
}
}
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_width += maxWidth;
m_legend->d_ptr->items()->setPos(geometry.topLeft());
Jani Honkonen
src folder: another massive victory for coding style police
r2131
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_minOffsetX = -left;
m_minOffsetY = -top;
m_maxOffsetX = m_width - geometry.width() - right;
m_maxOffsetY = m_height - geometry.height() - bottom;
Jani Honkonen
src folder: another massive victory for coding style police
r2131 }
break;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 case Qt::AlignRight: {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QPointF point(geometry.width(), 0);
m_width = 0;
m_height = 0;
qreal maxWidth = 0;
for (int i = 0; i < markers.count(); i++) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = markers.at(i)->d_ptr->item();
if (item->isVisible()) {
item->setGeometry(geometry);
sauimone
optional series parameter to markers function. code style fixes
r2193 const QRectF &boundingRect = item->boundingRect();
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 qreal w = boundingRect.width();
qreal h = boundingRect.height();
m_height = qMax(m_height,h);
maxWidth = qMax(maxWidth,w);
item->setPos(point.x() - w,point.y());
point.setY(point.y() + h);
if (point.y() + h > geometry.bottom()-bottom) {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 // Next item would go off rect.
point.setX(point.x() - maxWidth);
point.setY(0);
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 if (i+1 < markers.count()) {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_width += maxWidth;
maxWidth = 0;
Michal Klocek
Refactors layout managment...
r1534 }
}
}
}
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_width += maxWidth;
m_legend->d_ptr->items()->setPos(geometry.topLeft());
Jani Honkonen
src folder: another massive victory for coding style police
r2131
sauimone
removing old commented code. removing domain parameter from handleseriesadded of pimpl. adding QLegend parameter to marker construction
r2171 m_minOffsetX = - m_width + geometry.width() - left;
m_minOffsetY = -top;
m_maxOffsetX = - right;
m_maxOffsetY = m_height - geometry.height() - bottom;
Jani Honkonen
src folder: another massive victory for coding style police
r2131 }
break;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 default:
Michal Klocek
Refactors layout managment...
r1534 break;
}
sauimone
legend markers example. bugfix to legend scrolling
r2196 setOffset(oldOffsetX, oldOffsetY);
Michal Klocek
Refactors layout managment...
r1534 }
Jani Honkonen
more coding style fixes for src-folder...
r2104 QSizeF LegendLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
Michal Klocek
Refactors layout managment...
r1534 {
sauimone
layout work started
r2168 QSizeF size(0, 0);
qreal left, top, right, bottom;
getContentsMargins(&left, &top, &right, &bottom);
if(constraint.isValid()) {
sauimone
optional series parameter to markers function. code style fixes
r2193 foreach(QLegendMarker *marker, m_legend->d_ptr->markers()) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
layout work started
r2168 size = size.expandedTo(item->effectiveSizeHint(which));
}
size = size.boundedTo(constraint);
}
else if (constraint.width() >= 0) {
qreal width = 0;
qreal height = 0;
sauimone
optional series parameter to markers function. code style fixes
r2193 foreach(QLegendMarker *marker, m_legend->d_ptr->markers()) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
layout work started
r2168 width+=item->effectiveSizeHint(which).width();
height=qMax(height,item->effectiveSizeHint(which).height());
}
size = QSizeF(qMin(constraint.width(),width), height);
}
else if (constraint.height() >= 0) {
qreal width = 0;
qreal height = 0;
sauimone
optional series parameter to markers function. code style fixes
r2193 foreach(QLegendMarker *marker, m_legend->d_ptr->markers()) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
layout work started
r2168 width=qMax(width,item->effectiveSizeHint(which).width());
height+=height,item->effectiveSizeHint(which).height();
}
size = QSizeF(width,qMin(constraint.height(),height));
}
else {
sauimone
optional series parameter to markers function. code style fixes
r2193 foreach(QLegendMarker *marker, m_legend->d_ptr->markers()) {
sauimone
commenting out usage of old marker implementation from legend. Legend now uses new markers.
r2170 LegendMarkerItem *item = marker->d_ptr->item();
sauimone
layout work started
r2168 size = size.expandedTo(item->effectiveSizeHint(which));
}
}
size += QSize(left + right, top + bottom);
return size;
Michal Klocek
Refactors layout managment...
r1534 }
Titta Heikkala
Fix legend truncation...
r2617 bool LegendLayout::widthLongerThan(const LegendWidthStruct *item1,
const LegendWidthStruct *item2)
{
return item1->width > item2->width;
}
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_END_NAMESPACE