summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-06-18 11:10:34 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-06-18 11:17:32 +0300
commit621c955c10d2da2e0b03853b5cd3d1e2e34d5e90 (patch)
tree837cb668d6b5ca7a04927f3fb0943506b2324d37 /src
parente2012dc8fe894638c87d6b8c8f40d504de6ea171 (diff)
Fix text item margins
Also fixes the vertical axis title truncation issue. Change-Id: I3436705719946118e7c06dcf0fd2a1ada880e200 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/axis/cartesianchartaxis.cpp2
-rw-r--r--src/axis/chartaxiselement.cpp2
-rw-r--r--src/axis/chartaxiselement_p.h4
-rw-r--r--src/axis/polarchartaxisangular.cpp2
-rw-r--r--src/axis/polarchartaxisradial.cpp2
-rw-r--r--src/axis/verticalaxis.cpp2
-rw-r--r--src/barchart/abstractbarchartitem.cpp5
-rw-r--r--src/chartpresenter.cpp6
-rw-r--r--src/chartpresenter_p.h1
-rw-r--r--src/charttitle.cpp3
-rw-r--r--src/legend/legendmarkeritem.cpp9
11 files changed, 30 insertions, 8 deletions
diff --git a/src/axis/cartesianchartaxis.cpp b/src/axis/cartesianchartaxis.cpp
index db42f6f8..522223d8 100644
--- a/src/axis/cartesianchartaxis.cpp
+++ b/src/axis/cartesianchartaxis.cpp
@@ -28,6 +28,7 @@
#include <QValueAxis>
#include <QLogValueAxis>
#include <QGraphicsLayout>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -62,6 +63,7 @@ void CartesianChartAxis::createItems(int count)
QGraphicsLineItem *arrow = new QGraphicsLineItem(this);
QGraphicsLineItem *grid = new QGraphicsLineItem(this);
QGraphicsTextItem *label = new QGraphicsTextItem(this);
+ label->document()->setDocumentMargin(ChartPresenter::textMargin());
QGraphicsTextItem *title = titleItem();
arrow->setPen(axis()->linePen());
grid->setPen(axis()->gridLinePen());
diff --git a/src/axis/chartaxiselement.cpp b/src/axis/chartaxiselement.cpp
index 95f343c1..1fa133d3 100644
--- a/src/axis/chartaxiselement.cpp
+++ b/src/axis/chartaxiselement.cpp
@@ -24,6 +24,7 @@
#include "abstractchartlayout_p.h"
#include <qmath.h>
#include <QDateTime>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -56,6 +57,7 @@ ChartAxisElement::ChartAxisElement(QAbstractAxis *axis, QGraphicsItem *item, boo
m_shades->setZValue(ChartPresenter::ShadesZValue);
m_grid->setZValue(ChartPresenter::GridZValue);
m_title->setZValue(ChartPresenter::GridZValue);
+ m_title->document()->setDocumentMargin(ChartPresenter::textMargin());
handleVisibleChanged(axis->isVisible());
connectSlots();
diff --git a/src/axis/chartaxiselement_p.h b/src/axis/chartaxiselement_p.h
index 1cc52226..c0f9a280 100644
--- a/src/axis/chartaxiselement_p.h
+++ b/src/axis/chartaxiselement_p.h
@@ -61,8 +61,8 @@ public:
QAbstractAxis *axis() const { return m_axis; }
void setLayout(QVector<qreal> &layout) { m_layout = layout; }
QVector<qreal> &layout() { return m_layout; } // Modifiable reference
- inline qreal labelPadding() const { return qreal(1.0); }
- inline qreal titlePadding() const { return qreal(1.0); }
+ inline qreal labelPadding() const { return qreal(4.0); }
+ inline qreal titlePadding() const { return qreal(2.0); }
void setLabels(const QStringList &labels) { m_labelsList = labels; }
QStringList labels() const { return m_labelsList; }
diff --git a/src/axis/polarchartaxisangular.cpp b/src/axis/polarchartaxisangular.cpp
index d5ddb04e..f82b3f21 100644
--- a/src/axis/polarchartaxisangular.cpp
+++ b/src/axis/polarchartaxisangular.cpp
@@ -25,6 +25,7 @@
#include "qabstractaxis_p.h"
#include <QDebug>
#include <qmath.h>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -247,6 +248,7 @@ void PolarChartAxisAngular::createItems(int count)
QGraphicsLineItem *arrow = new QGraphicsLineItem(presenter()->rootItem());
QGraphicsLineItem *grid = new QGraphicsLineItem(presenter()->rootItem());
QGraphicsTextItem *label = new QGraphicsTextItem(presenter()->rootItem());
+ label->document()->setDocumentMargin(ChartPresenter::textMargin());
QGraphicsTextItem *title = titleItem();
arrow->setPen(axis()->linePen());
grid->setPen(axis()->gridLinePen());
diff --git a/src/axis/polarchartaxisradial.cpp b/src/axis/polarchartaxisradial.cpp
index 7a42185a..bfb2732f 100644
--- a/src/axis/polarchartaxisradial.cpp
+++ b/src/axis/polarchartaxisradial.cpp
@@ -23,6 +23,7 @@
#include "abstractchartlayout_p.h"
#include "qabstractaxis_p.h"
#include "linearrowitem_p.h"
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -236,6 +237,7 @@ void PolarChartAxisRadial::createItems(int count)
QGraphicsLineItem *arrow = new QGraphicsLineItem(presenter()->rootItem());
QGraphicsEllipseItem *grid = new QGraphicsEllipseItem(presenter()->rootItem());
QGraphicsTextItem *label = new QGraphicsTextItem(presenter()->rootItem());
+ label->document()->setDocumentMargin(ChartPresenter::textMargin());
QGraphicsTextItem *title = titleItem();
arrow->setPen(axis()->linePen());
grid->setPen(axis()->gridLinePen());
diff --git a/src/axis/verticalaxis.cpp b/src/axis/verticalaxis.cpp
index 0656e9a3..e0d34517 100644
--- a/src/axis/verticalaxis.cpp
+++ b/src/axis/verticalaxis.cpp
@@ -77,7 +77,7 @@ void VerticalAxis::updateGeometry()
QString truncatedTitle = ChartPresenter::truncatedText(axis()->titleFont(), titleText, qreal(0.0),
gridRect.height(), Qt::Horizontal, titleBoundingRect);
qreal titleSpace = availableSpace - minimumLabelWidth;
- if (titleSpace < titleBoundingRect.width()) {
+ if (titleSpace < titleBoundingRect.height()) {
// Need to also truncate title vertically (multiline title)
bool skip = false;
if (truncatedTitle.endsWith("...")) {
diff --git a/src/barchart/abstractbarchartitem.cpp b/src/barchart/abstractbarchartitem.cpp
index 6ed92264..af3c6b19 100644
--- a/src/barchart/abstractbarchartitem.cpp
+++ b/src/barchart/abstractbarchartitem.cpp
@@ -30,6 +30,7 @@
#include "baranimation_p.h"
#include "chartdataset_p.h"
#include <QPainter>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -164,7 +165,9 @@ void AbstractBarChartItem::handleDataStructureChanged()
// m_layout.append(QRectF(0, 0, 1, 1));
// Labels
- m_labels.append(new QGraphicsTextItem(this));
+ QGraphicsTextItem *newLabel = new QGraphicsTextItem(this);
+ newLabel->document()->setDocumentMargin(ChartPresenter::textMargin());
+ m_labels.append(newLabel);
}
}
diff --git a/src/chartpresenter.cpp b/src/chartpresenter.cpp
index 70509cc4..765a228a 100644
--- a/src/chartpresenter.cpp
+++ b/src/chartpresenter.cpp
@@ -33,6 +33,7 @@
#include "polarchartlayout_p.h"
#include "charttitle_p.h"
#include <QTimer>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -387,6 +388,11 @@ ChartTitle *ChartPresenter::titleElement()
QRectF ChartPresenter::textBoundingRect(const QFont &font, const QString &text, qreal angle)
{
static QGraphicsTextItem dummyTextItem;
+ static bool initMargin = true;
+ if (initMargin) {
+ dummyTextItem.document()->setDocumentMargin(textMargin());
+ initMargin = false;
+ }
dummyTextItem.setFont(font);
dummyTextItem.setHtml(text);
diff --git a/src/chartpresenter_p.h b/src/chartpresenter_p.h
index c1ced6b9..93a616f8 100644
--- a/src/chartpresenter_p.h
+++ b/src/chartpresenter_p.h
@@ -147,6 +147,7 @@ public:
static QRectF textBoundingRect(const QFont &font, const QString &text, qreal angle = 0.0);
static QString truncatedText(const QFont &font, const QString &text, qreal angle, qreal maxSize,
Qt::Orientation constraintOrientation, QRectF &boundingRect);
+ inline static qreal textMargin() { return qreal(0.5); }
private:
void createBackgroundItem();
void createPlotAreaBackgroundItem();
diff --git a/src/charttitle.cpp b/src/charttitle.cpp
index 41c50c4f..d5306cfd 100644
--- a/src/charttitle.cpp
+++ b/src/charttitle.cpp
@@ -23,13 +23,14 @@
#include <QFont>
#include <QFontMetrics>
#include <QDebug>
+#include <QTextDocument>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
ChartTitle::ChartTitle(QGraphicsItem *parent)
: QGraphicsTextItem(parent)
{
-
+ document()->setDocumentMargin(ChartPresenter::textMargin());
}
ChartTitle::~ChartTitle()
diff --git a/src/legend/legendmarkeritem.cpp b/src/legend/legendmarkeritem.cpp
index 727b663a..fbd809f7 100644
--- a/src/legend/legendmarkeritem.cpp
+++ b/src/legend/legendmarkeritem.cpp
@@ -21,6 +21,7 @@
#include <QPainter>
#include <QGraphicsSceneEvent>
#include <QGraphicsTextItem>
+#include <QTextDocument>
#include "qlegend.h"
#include "qlegend_p.h"
@@ -38,12 +39,13 @@ LegendMarkerItem::LegendMarkerItem(QLegendMarkerPrivate *marker, QGraphicsObject
m_boundingRect(0,0,0,0),
m_textItem(new QGraphicsTextItem(this)),
m_rectItem(new QGraphicsRectItem(this)),
- m_margin(1),
- m_space(2),
+ m_margin(3),
+ m_space(4),
m_hovering(false),
m_pressPos(0, 0)
{
m_rectItem->setRect(m_markerRect);
+ m_textItem->document()->setDocumentMargin(ChartPresenter::textMargin());
setAcceptHoverEvents(true);
}
@@ -122,7 +124,8 @@ void LegendMarkerItem::setGeometry(const QRectF &rect)
m_textItem->setPos(x - m_margin, y / 2 - textRect.height() / 2);
m_rectItem->setRect(m_markerRect);
- m_rectItem->setPos(m_margin, y / 2 - m_markerRect.height() / 2);
+ // The textMargin adjustments to position are done to make default case rects less blurry with anti-aliasing
+ m_rectItem->setPos(m_margin - ChartPresenter::textMargin(), y / 2.0 - m_markerRect.height() / 2.0 + ChartPresenter::textMargin());
prepareGeometryChange();
m_boundingRect = QRectF(0, 0, x + textRect.width() + m_margin, y);