##// END OF EJS Templates
Fix resetting animation options mid-animation....
Fix resetting animation options mid-animation. Setting animation options while animations were running could cause crash if layout in old animation didn't match the current layout, as animation options setting didn't destroy or stop old animations when it created new ones. Change-Id: If45ee8daf3facd49ce7dd127bb37678a31e6a2d3 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>

File last commit:

r2555:8f0e18a7e02c
r2555:8f0e18a7e02c
Show More
chartpresenter.cpp
478 lines | 13.0 KiB | text/x-c | CppLexer
/ src / chartpresenter.cpp
Jani Honkonen
Add license headers
r794 /****************************************************************************
Michal Klocek
Fixes header guard style issues
r969 **
Miikka Heikkinen
Fixed the copyright year 2012 -> 2013
r2432 ** Copyright (C) 2013 Digia Plc
Michal Klocek
Fixes header guard style issues
r969 ** 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$
**
****************************************************************************/
#include "chartpresenter_p.h"
Michal Klocek
Refactored for MVP...
r139 #include "qchart.h"
Michal Klocek
Refactors internals...
r2273 #include "chartitem_p.h"
Michal Klocek
Refactor qledgend handling...
r855 #include "qchart_p.h"
Michal Klocek
Refactors QAxis to QAbstractAxis...
r1541 #include "qabstractaxis.h"
Michal Klocek
Refactors core to support mulitpile axis and domains...
r1556 #include "qabstractaxis_p.h"
Michal Klocek
Refactors qchart , adds line animation...
r131 #include "chartdataset_p.h"
Michal Klocek
Refactors axis animation, line animations
r1241 #include "chartanimation_p.h"
Tero Ahola
Renamed QSeries to QAbstractSeries
r988 #include "qabstractseries_p.h"
Michal Klocek
Adds area chart...
r421 #include "qareaseries.h"
Miikka Heikkinen
Add Polar chart support...
r2483 #include "chartaxiselement_p.h"
Michal Klocek
Changes QChartAxis -> QAxis
r1006 #include "chartbackground_p.h"
Miikka Heikkinen
Add Polar chart support...
r2483 #include "cartesianchartlayout_p.h"
#include "polarchartlayout_p.h"
Michal Klocek
Refactors layout...
r1965 #include "charttitle_p.h"
Michal Klocek
Refactors axis animation, line animations
r1241 #include <QTimer>
Michal Klocek
Refactors qchart , adds line animation...
r131
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Miikka Heikkinen
Add Polar chart support...
r2483 ChartPresenter::ChartPresenter(QChart *chart, QChart::ChartType type)
Jani Honkonen
src folder: another massive victory for coding style police
r2131 : QObject(chart),
m_chart(chart),
m_options(QChart::NoAnimation),
m_state(ShowState),
m_background(0),
Miikka Heikkinen
Add API to specify plot area background....
r2498 m_plotAreaBackground(0),
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_title(0)
Michal Klocek
Refactors qchart , adds line animation...
r131 {
Miikka Heikkinen
Add Polar chart support...
r2483 if (type == QChart::ChartTypeCartesian)
m_layout = new CartesianChartLayout(this);
else if (type == QChart::ChartTypePolar)
m_layout = new PolarChartLayout(this);
Q_ASSERT(m_layout);
Michal Klocek
Refactors qchart , adds line animation...
r131 }
ChartPresenter::~ChartPresenter()
{
Michal Klocek
Refactors internals...
r2273
Michal Klocek
Refactors qchart , adds line animation...
r131 }
Michal Klocek
Refactors internals...
r2273 void ChartPresenter::setGeometry(const QRectF rect)
Michal Klocek
Refactors qchart , adds line animation...
r131 {
Miikka Heikkinen
Add Polar chart support...
r2483 if (m_rect != rect) {
m_rect = rect;
foreach (ChartItem *chart, m_chartItems) {
chart->domain()->setSize(rect.size());
chart->setPos(rect.topLeft());
}
}
Michal Klocek
Refactors internals...
r2273 }
Michal Klocek
Refactors Domain and Axis...
r1698
Michal Klocek
Refactors internals...
r2273 QRectF ChartPresenter::geometry() const
{
Miikka Heikkinen
Add Polar chart support...
r2483 return m_rect;
Michal Klocek
Refactors internals...
r2273 }
Michal Klocek
Refactors Domain and Axis...
r1698
Michal Klocek
Refactors internals...
r2273 void ChartPresenter::handleAxisAdded(QAbstractAxis *axis)
{
axis->d_ptr->initializeGraphics(rootItem());
axis->d_ptr->initializeAnimations(m_options);
Miikka Heikkinen
Add Polar chart support...
r2483 ChartAxisElement *item = axis->d_ptr->axisItem();
Michal Klocek
Refactors internals...
r2273 item->setPresenter(this);
item->setThemeManager(m_chart->d_ptr->m_themeManager);
m_axisItems<<item;
m_axes<<axis;
Michal Klocek
Refactors layout:...
r2105 m_layout->invalidate();
Michal Klocek
Refactors axis handling...
r223 }
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::handleAxisRemoved(QAbstractAxis *axis)
Michal Klocek
Refactors axis handling...
r223 {
Miikka Heikkinen
Add Polar chart support...
r2483 ChartAxisElement *item = axis->d_ptr->m_item.take();
Michal Klocek
Refactor Visibly methods of axis...
r1729 item->hide();
item->disconnect();
sauimone
fixed bug in series deletion
r1562 item->deleteLater();
Michal Klocek
Refactors internals...
r2273 m_axisItems.removeAll(item);
m_axes.removeAll(axis);
Michal Klocek
Removes legacy code - selectVisibleAxis
r2154 m_layout->invalidate();
Michal Klocek
Refactors axis handling...
r223 }
Michal Klocek
Refactors internals...
r2273 void ChartPresenter::handleSeriesAdded(QAbstractSeries *series)
Michal Klocek
Refactors qchart , adds line animation...
r131 {
Michal Klocek
Refactors internals...
r2273 series->d_ptr->initializeGraphics(rootItem());
series->d_ptr->initializeAnimations(m_options);
ChartItem *chart = series->d_ptr->chartItem();
chart->setPresenter(this);
chart->setThemeManager(m_chart->d_ptr->m_themeManager);
chart->domain()->setSize(m_rect.size());
chart->setPos(m_rect.topLeft());
chart->handleDomainUpdated(); //this could be moved to intializeGraphics when animator is refactored
m_chartItems<<chart;
m_series<<series;
Michal Klocek
Refactors layout:...
r2105 m_layout->invalidate();
Michal Klocek
Refactors qchart , adds line animation...
r131 }
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::handleSeriesRemoved(QAbstractSeries *series)
Michal Klocek
Refactored for MVP...
r139 {
Michal Klocek
Refactors internals...
r2273 ChartItem *chart = series->d_ptr->m_item.take();
chart->hide();
chart->disconnect();
chart->deleteLater();
m_chartItems.removeAll(chart);
m_series.removeAll(series);
m_layout->invalidate();
Michal Klocek
Adds missing ids to theme classes
r153 }
Michal Klocek
Adds animation settings handling
r298 void ChartPresenter::setAnimationOptions(QChart::AnimationOptions options)
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (m_options != options) {
Miikka Heikkinen
Fix resetting animation options mid-animation....
r2555 QChart::AnimationOptions oldOptions = m_options;
Jani Honkonen
src folder: another massive victory for coding style police
r2131 m_options = options;
Miikka Heikkinen
Fix resetting animation options mid-animation....
r2555 if (options.testFlag(QChart::SeriesAnimations) != oldOptions.testFlag(QChart::SeriesAnimations)) {
foreach (QAbstractSeries *series, m_series)
series->d_ptr->initializeAnimations(m_options);
Michal Klocek
Refactors internals...
r2273 }
Miikka Heikkinen
Fix resetting animation options mid-animation....
r2555 if (options.testFlag(QChart::GridAxisAnimations) != oldOptions.testFlag(QChart::GridAxisAnimations)) {
foreach (QAbstractAxis *axis, m_axes)
axis->d_ptr->initializeAnimations(m_options);
Michal Klocek
Refactors internals...
r2273 }
Miikka Heikkinen
Fix resetting animation options mid-animation....
r2555 m_layout->invalidate(); // So that existing animations don't just stop halfway
Jani Honkonen
src folder: another massive victory for coding style police
r2131 }
Michal Klocek
Adds scroll support...
r531 }
Michal Klocek
Refactors internals...
r2273 void ChartPresenter::setState(State state,QPointF point)
Michal Klocek
Refactor domain model...
r439 {
Michal Klocek
Refactors internals...
r2273 m_state=state;
m_statePoint=point;
Michal Klocek
Adds scroll support...
r531 }
Michal Klocek
Adds animation settings handling
r298 QChart::AnimationOptions ChartPresenter::animationOptions() const
{
return m_options;
}
Michal Klocek
Refactors layout managment...
r1534 void ChartPresenter::createBackgroundItem()
Michal Klocek
Refactor qledgend handling...
r855 {
Michal Klocek
Refactors layout...
r1965 if (!m_background) {
m_background = new ChartBackground(rootItem());
Miikka Heikkinen
Fix explicitly set default pen/brush/font getting overridden by theme...
r2516 m_background->setPen(Qt::NoPen); // Theme doesn't touch pen so don't use default
m_background->setBrush(QChartPrivate::defaultBrush());
Michal Klocek
Refactors layout...
r1965 m_background->setZValue(ChartPresenter::BackgroundZValue);
Michal Klocek
Refactors layout managment...
r1534 }
}
Michal Klocek
Refactor qledgend handling...
r855
Miikka Heikkinen
Add API to specify plot area background....
r2498 void ChartPresenter::createPlotAreaBackgroundItem()
{
if (!m_plotAreaBackground) {
if (m_chart->chartType() == QChart::ChartTypeCartesian)
m_plotAreaBackground = new QGraphicsRectItem(rootItem());
else
m_plotAreaBackground = new QGraphicsEllipseItem(rootItem());
// Use transparent pen instead of Qt::NoPen, as Qt::NoPen causes
// antialising artifacts with axis lines for some reason.
m_plotAreaBackground->setPen(QPen(Qt::transparent));
m_plotAreaBackground->setBrush(Qt::NoBrush);
m_plotAreaBackground->setZValue(ChartPresenter::PlotAreaZValue);
m_plotAreaBackground->setVisible(false);
}
}
Michal Klocek
Refactors layout managment...
r1534 void ChartPresenter::createTitleItem()
{
Michal Klocek
Refactors layout...
r1965 if (!m_title) {
m_title = new ChartTitle(rootItem());
m_title->setZValue(ChartPresenter::BackgroundZValue);
Michal Klocek
Refactors layout managment...
r1534 }
}
Tero Ahola
Added property definitions to QChart
r1524
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::startAnimation(ChartAnimation *animation)
Michal Klocek
Refactors layout managment...
r1534 {
Miikka Heikkinen
Fix resetting animation options mid-animation....
r2555 animation->stop();
QTimer::singleShot(0, animation, SLOT(startChartAnimation()));
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Refactor qledgend handling...
r855
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::setBackgroundBrush(const QBrush &brush)
Michal Klocek
Refactors layout managment...
r1534 {
createBackgroundItem();
Michal Klocek
Refactors layout...
r1965 m_background->setBrush(brush);
Michal Klocek
Refactors layout managment...
r1534 m_layout->invalidate();
}
Michal Klocek
Refactor qledgend handling...
r855
Michal Klocek
Refactors layout managment...
r1534 QBrush ChartPresenter::backgroundBrush() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_background)
return QBrush();
Michal Klocek
Refactors layout...
r1965 return m_background->brush();
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Refactor qledgend handling...
r855
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::setBackgroundPen(const QPen &pen)
Michal Klocek
Refactors layout managment...
r1534 {
createBackgroundItem();
Michal Klocek
Refactors layout...
r1965 m_background->setPen(pen);
Michal Klocek
Refactors layout managment...
r1534 m_layout->invalidate();
}
Michal Klocek
Refactor qledgend handling...
r855
Michal Klocek
Refactors layout managment...
r1534 QPen ChartPresenter::backgroundPen() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_background)
return QPen();
Michal Klocek
Refactors layout...
r1965 return m_background->pen();
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Add minimum size back to chartview and qchart
r913
Miikka Heikkinen
Added API to set chart background roundness...
r2549 void ChartPresenter::setBackgroundRoundness(qreal diameter)
{
createBackgroundItem();
m_background->setDiameter(diameter);
m_layout->invalidate();
}
qreal ChartPresenter::backgroundRoundness() const
{
if (!m_background)
return 0;
return m_background->diameter();
}
Miikka Heikkinen
Add API to specify plot area background....
r2498 void ChartPresenter::setPlotAreaBackgroundBrush(const QBrush &brush)
{
createPlotAreaBackgroundItem();
m_plotAreaBackground->setBrush(brush);
m_layout->invalidate();
}
QBrush ChartPresenter::plotAreaBackgroundBrush() const
{
if (!m_plotAreaBackground)
return QBrush();
return m_plotAreaBackground->brush();
}
void ChartPresenter::setPlotAreaBackgroundPen(const QPen &pen)
{
createPlotAreaBackgroundItem();
m_plotAreaBackground->setPen(pen);
m_layout->invalidate();
}
QPen ChartPresenter::plotAreaBackgroundPen() const
{
if (!m_plotAreaBackground)
return QPen();
return m_plotAreaBackground->pen();
}
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::setTitle(const QString &title)
Michal Klocek
Refactors layout managment...
r1534 {
createTitleItem();
Michal Klocek
Refactors layout...
r1965 m_title->setText(title);
Michal Klocek
Refactors layout managment...
r1534 m_layout->invalidate();
}
Michal Klocek
Add minimum size back to chartview and qchart
r913
Michal Klocek
Refactors layout managment...
r1534 QString ChartPresenter::title() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_title)
return QString();
Michal Klocek
Refactors layout...
r1965 return m_title->text();
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Refactor qledgend handling...
r855
Jani Honkonen
src folder: another massive victory for coding style police
r2131 void ChartPresenter::setTitleFont(const QFont &font)
Michal Klocek
Refactors layout managment...
r1534 {
createTitleItem();
Michal Klocek
Refactors layout...
r1965 m_title->setFont(font);
Michal Klocek
Refactors layout managment...
r1534 m_layout->invalidate();
}
Michal Klocek
Refactor qledgend handling...
r855
Michal Klocek
Refactors layout managment...
r1534 QFont ChartPresenter::titleFont() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_title)
return QFont();
Michal Klocek
Refactors layout...
r1965 return m_title->font();
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Add minimum size back to chartview and qchart
r913
Michal Klocek
Refactors layout managment...
r1534 void ChartPresenter::setTitleBrush(const QBrush &brush)
{
createTitleItem();
Miikka Heikkinen
Added HTML support for various text items...
r2539 m_title->setDefaultTextColor(brush.color());
Michal Klocek
Refactors layout managment...
r1534 m_layout->invalidate();
}
Michal Klocek
Bugfixes for unnesery geometry changes
r869
Michal Klocek
Refactors layout managment...
r1534 QBrush ChartPresenter::titleBrush() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_title)
return QBrush();
Miikka Heikkinen
Added HTML support for various text items...
r2539 return QBrush(m_title->defaultTextColor());
Michal Klocek
Refactors layout managment...
r1534 }
void ChartPresenter::setBackgroundVisible(bool visible)
{
createBackgroundItem();
Michal Klocek
Refactors layout...
r1965 m_background->setVisible(visible);
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Refactor , move dataset legend presentr connections to one place
r871
Michal Klocek
Refactor qledgend handling...
r855
Michal Klocek
Refactors layout managment...
r1534 bool ChartPresenter::isBackgroundVisible() const
{
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_background)
return false;
Michal Klocek
Refactors layout...
r1965 return m_background->isVisible();
Michal Klocek
Refactor qledgend handling...
r855 }
Miikka Heikkinen
Add API to specify plot area background....
r2498 void ChartPresenter::setPlotAreaBackgroundVisible(bool visible)
{
createPlotAreaBackgroundItem();
m_plotAreaBackground->setVisible(visible);
}
bool ChartPresenter::isPlotAreaBackgroundVisible() const
{
if (!m_plotAreaBackground)
return false;
return m_plotAreaBackground->isVisible();
}
Michal Klocek
Refactors layout managment...
r1534 void ChartPresenter::setBackgroundDropShadowEnabled(bool enabled)
Michal Klocek
Refactor qledgend handling...
r855 {
Michal Klocek
Refactors layout managment...
r1534 createBackgroundItem();
Michal Klocek
Refactors layout...
r1965 m_background->setDropShadowEnabled(enabled);
Michal Klocek
Refactor qledgend handling...
r855 }
Michal Klocek
Refactors layout managment...
r1534 bool ChartPresenter::isBackgroundDropShadowEnabled() const
Michal Klocek
Refactor qledgend handling...
r855 {
Jani Honkonen
src folder: another massive victory for coding style police
r2131 if (!m_background)
return false;
Michal Klocek
Refactors layout...
r1965 return m_background->isDropShadowEnabled();
Michal Klocek
Refactor qledgend handling...
r855 }
Michal Klocek
Refactor themes...
r143
Michal Klocek
Refactors layout managment...
r1534
Miikka Heikkinen
Add Polar chart support...
r2483 AbstractChartLayout *ChartPresenter::layout()
Michal Klocek
Refactors axis animation, line animations
r1241 {
Michal Klocek
Refactors layout managment...
r1534 return m_layout;
Michal Klocek
Refactors axis animation, line animations
r1241 }
Jani Honkonen
src folder: another massive victory for coding style police
r2131 QLegend *ChartPresenter::legend()
Michal Klocek
Refactors layout managment...
r1534 {
return m_chart->legend();
}
Michal Klocek
Refactors layout...
r1965 void ChartPresenter::setVisible(bool visible)
{
m_chart->setVisible(visible);
}
Jani Honkonen
src folder: another massive victory for coding style police
r2131 ChartBackground *ChartPresenter::backgroundElement()
Michal Klocek
Refactors layout...
r1965 {
return m_background;
}
Miikka Heikkinen
Add API to specify plot area background....
r2498 QAbstractGraphicsShapeItem *ChartPresenter::plotAreaElement()
{
return m_plotAreaBackground;
}
Miikka Heikkinen
Add Polar chart support...
r2483 QList<ChartAxisElement *> ChartPresenter::axisItems() const
Michal Klocek
Refactors layout managment...
r1534 {
Michal Klocek
Refactors internals...
r2273 return m_axisItems;
Michal Klocek
Refactors layout managment...
r1534 }
Michal Klocek
Refactors internals...
r2273 QList<ChartItem *> ChartPresenter::chartItems() const
Michal Klocek
Refactors layout:...
r2105 {
Michal Klocek
Refactors internals...
r2273 return m_chartItems;
Michal Klocek
Refactors layout:...
r2105 }
Jani Honkonen
src folder: another massive victory for coding style police
r2131 ChartTitle *ChartPresenter::titleElement()
Michal Klocek
Refactors layout managment...
r1534 {
Michal Klocek
Refactors layout...
r1965 return m_title;
Michal Klocek
Refactors axis animation, line animations
r1241 }
Miikka Heikkinen
Added HTML support for various text items...
r2539 QRectF ChartPresenter::textBoundingRect(const QFont &font, const QString &text, qreal angle)
{
Miikka Heikkinen
Clean up static variables a bit...
r2543 static QGraphicsTextItem dummyTextItem;
Miikka Heikkinen
Added HTML support for various text items...
r2539
Miikka Heikkinen
Clean up static variables a bit...
r2543 dummyTextItem.setFont(font);
dummyTextItem.setHtml(text);
QRectF boundingRect = dummyTextItem.boundingRect();
Miikka Heikkinen
Added HTML support for various text items...
r2539
// Take rotation into account
if (angle) {
QTransform transform;
transform.rotate(angle);
boundingRect = transform.mapRect(boundingRect);
}
return boundingRect;
}
// boundingRect parameter returns the rotated bounding rect of the text
QString ChartPresenter::truncatedText(const QFont &font, const QString &text, qreal angle,
qreal maxSize, Qt::Orientation constraintOrientation,
QRectF &boundingRect)
{
QString truncatedString(text);
boundingRect = textBoundingRect(font, truncatedString, angle);
qreal checkDimension = ((constraintOrientation == Qt::Horizontal)
? boundingRect.width() : boundingRect.height());
if (checkDimension > maxSize) {
Miikka Heikkinen
Optimize string truncation algorithm...
r2541 // It can be assumed that almost any amount of string manipulation is faster
// than calculating one bounding rectangle, so first prepare a list of truncated strings
// to try.
Miikka Heikkinen
Clean up static variables a bit...
r2543 static const char *truncateMatchString = "&#?[0-9a-zA-Z]*;$";
static QRegExp truncateMatcher(truncateMatchString);
Miikka Heikkinen
Optimize string truncation algorithm...
r2541 QVector<QString> testStrings(text.length());
int count(0);
static QLatin1Char closeTag('>');
static QLatin1Char openTag('<');
static QLatin1Char semiColon(';');
static QLatin1String ellipsis("...");
while (truncatedString.length() > 1) {
int chopIndex(-1);
int chopCount(1);
QChar lastChar(truncatedString.at(truncatedString.length() - 1));
if (lastChar == closeTag)
chopIndex = truncatedString.lastIndexOf(openTag);
else if (lastChar == semiColon)
Miikka Heikkinen
Clean up static variables a bit...
r2543 chopIndex = truncateMatcher.indexIn(truncatedString, 0);
Miikka Heikkinen
Optimize string truncation algorithm...
r2541
if (chopIndex != -1)
chopCount = truncatedString.length() - chopIndex;
truncatedString.chop(chopCount);
testStrings[count] = truncatedString + ellipsis;
count++;
}
Miikka Heikkinen
Added HTML support for various text items...
r2539
Miikka Heikkinen
Optimize string truncation algorithm...
r2541 // Binary search for best fit
int minIndex(0);
int maxIndex(count - 1);
int bestIndex(count);
QRectF checkRect;
while (maxIndex >= minIndex) {
int mid = (maxIndex + minIndex) / 2;
checkRect = textBoundingRect(font, testStrings.at(mid), angle);
Miikka Heikkinen
Added HTML support for various text items...
r2539 checkDimension = ((constraintOrientation == Qt::Horizontal)
Miikka Heikkinen
Optimize string truncation algorithm...
r2541 ? checkRect.width() : checkRect.height());
if (checkDimension > maxSize) {
// Checked index too large, all under this are also too large
minIndex = mid + 1;
} else {
// Checked index fits, all over this also fit
maxIndex = mid - 1;
bestIndex = mid;
boundingRect = checkRect;
}
}
// Default to "..." if nothing fits
if (bestIndex == count) {
boundingRect = textBoundingRect(font, ellipsis, angle);
truncatedString = ellipsis;
} else {
truncatedString = testStrings.at(bestIndex);
Miikka Heikkinen
Added HTML support for various text items...
r2539 }
}
return truncatedString;
}
Michal Klocek
Refactors qchart , adds line animation...
r131 #include "moc_chartpresenter_p.cpp"
QTCOMMERCIALCHART_END_NAMESPACE