##// END OF EJS Templates
Updates axis drawing code...
Updates axis drawing code * fixes barcategory axis hadling when zoom/scroll * blocks removing grind line when corespoding label overlap * adds comments for geometry functions * updates charviewer barcategories axis examples * adds PreferedSize handling to layout manager

File last commit:

r2133:8c175959daec
r2133:8c175959daec
Show More
chartvalueaxisx.cpp
117 lines | 3.1 KiB | text/x-c | CppLexer
/ src / axis / valueaxis / chartvalueaxisx.cpp
Marek Rosa
Added Chart classes for value and categories axis
r1555 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
Marek Rosa
renamed QValueAxis related files
r1805 #include "chartvalueaxisx_p.h"
Marek Rosa
Added Chart classes for value and categories axis
r1555 #include "qabstractaxis.h"
#include "chartpresenter_p.h"
Marek Rosa
renamed QValueAxis related files
r1805 #include "qvalueaxis.h"
Michal Klocek
Resubmit commit 394f63738c11558ae410383fbf2403f57fca4bf8 due to too many merge confilcts
r2106 #include "chartlayout_p.h"
Marek Rosa
Added Chart classes for value and categories axis
r1555 #include <QGraphicsLayout>
#include <QFontMetrics>
Michal Klocek
Refactor animator...
r1735 #include <qmath.h>
Marek Rosa
Added Chart classes for value and categories axis
r1555
Michal Klocek
Resubmit commit 394f63738c11558ae410383fbf2403f57fca4bf8 due to too many merge confilcts
r2106
Marek Rosa
Added Chart classes for value and categories axis
r1555 QTCOMMERCIALCHART_BEGIN_NAMESPACE
Jani Honkonen
src folder: another massive victory for coding style police
r2131 ChartValueAxisX::ChartValueAxisX(QValueAxis *axis, ChartPresenter *presenter)
: HorizontalAxis(axis, presenter),
m_tickCount(0), m_axis(axis)
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
}
Marek Rosa
renamed QValueAxis related files
r1805 ChartValueAxisX::~ChartValueAxisX()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
}
Marek Rosa
renamed QValueAxis related files
r1805 QVector<qreal> ChartValueAxisX::calculateLayout() const
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 Q_ASSERT(m_tickCount >= 2);
Marek Rosa
Added Chart classes for value and categories axis
r1555
QVector<qreal> points;
Michal Klocek
Refactors Domain and Axis...
r1698 points.resize(m_tickCount);
Marek Rosa
Added Chart classes for value and categories axis
r1555
Jani Honkonen
src folder: another massive victory for coding style police
r2131 const QRectF &gridRect = gridGeometry();
const qreal deltaX = gridRect.width() / (m_tickCount - 1);
Michal Klocek
Refactors Domain and Axis...
r1698 for (int i = 0; i < m_tickCount; ++i) {
Michal Klocek
Refactors axis updateGeometry handling...
r2111 int x = i * deltaX + gridRect.left();
Marek Rosa
Added Chart classes for value and categories axis
r1555 points[i] = x;
}
return points;
}
Marek Rosa
renamed QValueAxis related files
r1805 void ChartValueAxisX::updateGeometry()
Marek Rosa
Added Chart classes for value and categories axis
r1555 {
const QVector<qreal>& layout = ChartAxis::layout();
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (layout.isEmpty())
return;
Michal Klocek
Refactors axis updateGeometry handling...
r2111 setLabels(createValueLabels(layout.size()));
HorizontalAxis::updateGeometry();
Marek Rosa
Added Chart classes for value and categories axis
r1555 }
Marek Rosa
renamed QValueAxis related files
r1805 void ChartValueAxisX::handleAxisUpdated()
Michal Klocek
Refactors Domain and Axis...
r1698 {
Michal Klocek
Refactors axis updateGeometry handling...
r2111 if (m_tickCount != m_axis->tickCount()) {
m_tickCount = m_axis->tickCount();
Michal Klocek
Resubmit commit 394f63738c11558ae410383fbf2403f57fca4bf8 due to too many merge confilcts
r2106 presenter()->layout()->invalidate();
}
Michal Klocek
Refactors Domain and Axis...
r1698 ChartAxis::handleAxisUpdated();
}
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QSizeF ChartValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
Michal Klocek
Refactors layout...
r1965 {
Q_UNUSED(constraint)
Michal Klocek
Refactors axis updateGeometry handling...
r2111 QFontMetrics fn(font());
Michal Klocek
Refactors layout...
r1965 QSizeF sh;
QSizeF base = ChartAxis::sizeHint(which, constraint);
Michal Klocek
Refactors axis updateGeometry handling...
r2111 QStringList ticksList = createValueLabels(m_tickCount);
Jani Honkonen
src folder: another massive victory for coding style police
r2131 qreal width = 0;
qreal height = 0;
Michal Klocek
Refactors layout...
r1965
Marek Rosa
Multiaxis support...
r2093 switch (which) {
Michal Klocek
Updates axis drawing code...
r2133 case Qt::MinimumSize:{
int count = qMax(ticksList.last().count(),ticksList.first().count());
count = qMin(count,5);
Jani Honkonen
src folder: another massive victory for coding style police
r2131 width = fn.averageCharWidth() * count;
height = fn.height() + labelPadding();
Michal Klocek
Updates axis drawing code...
r2133 width = qMax(width,base.width());
Jani Honkonen
src folder: another massive victory for coding style police
r2131 height += base.height();
Michal Klocek
Updates axis drawing code...
r2133 sh = QSizeF(width,height);
Marek Rosa
Multiaxis support...
r2093 break;
Michal Klocek
Refactors layout:...
r2105 }
Michal Klocek
Updates axis drawing code...
r2133 case Qt::PreferredSize:{
int count = qMax(ticksList.last().count(),ticksList.first().count());
width=fn.averageCharWidth() * count;
height=fn.height()+labelPadding();
width=qMax(width,base.width());
height+=base.height();
sh = QSizeF(width,height);
Marek Rosa
Multiaxis support...
r2093 break;
Michal Klocek
Refactors layout:...
r2105 }
Marek Rosa
Multiaxis support...
r2093 default:
break;
}
Michal Klocek
Refactors layout...
r1965
Marek Rosa
Multiaxis support...
r2093 return sh;
Michal Klocek
Refactors layout...
r1965 }
Marek Rosa
Added Chart classes for value and categories axis
r1555 QTCOMMERCIALCHART_END_NAMESPACE