##// END OF EJS Templates
declarative series for horizontal barcharts
declarative series for horizontal barcharts

File last commit:

r1792:ea0ec9902253
r1806:e1166aadc392
Show More
linechartitem.cpp
132 lines | 3.8 KiB | text/x-c | CppLexer
Jani Honkonen
Add license headers
r794 /****************************************************************************
**
** 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$
**
****************************************************************************/
Michal Klocek
Fix naming convention for lineseries...
r144 #include "linechartitem_p.h"
Michal Klocek
Rename QLineChartSeries to QLineSeries
r349 #include "qlineseries.h"
Michal Klocek
Adds big fat pimpl to series classes...
r938 #include "qlineseries_p.h"
Michal Klocek
Refactors qchart , adds line animation...
r131 #include "chartpresenter_p.h"
Michal Klocek
Refactor current draft to fit int current design specs...
r21 #include <QPainter>
Michal Klocek
Refactor xychartitem -> xychart
r1218 #include <QGraphicsSceneMouseEvent>
Michal Klocek
Fix naming convention for lineseries...
r144
Tero Ahola
Renamed to QtCommercialChart
r30 QTCOMMERCIALCHART_BEGIN_NAMESPACE
Michal Klocek
Refactor current draft to fit int current design specs...
r21
Tero Ahola
Fixed area series paint bug caused by mouse event fix on line series
r1792 const qreal mouseEventMinWidth(12);
Michal Klocek
Adds cliping and proper zoom handling for line chart
r150
Tero Ahola
Fixed isVisible implementation in XY series
r1346 LineChartItem::LineChartItem(QLineSeries* series,ChartPresenter *presenter):
XYChart(series, presenter),
QGraphicsItem(presenter ? presenter->rootItem() : 0),
m_series(series),
m_pointsVisible(false)
Michal Klocek
Refactor current draft to fit int current design specs...
r21 {
Michal Klocek
Adds ZOrder enum to presenter
r262 setZValue(ChartPresenter::LineChartZValue);
Michal Klocek
Adds big fat pimpl to series classes...
r938 QObject::connect(series->d_func(),SIGNAL(updated()),this,SLOT(handleUpdated()));
Tero Ahola
Visible property to abstract series
r1342 QObject::connect(series, SIGNAL(visibleChanged()), this, SLOT(handleUpdated()));
Michal Klocek
Refactor domain model...
r439 handleUpdated();
Michal Klocek
Refactor current draft to fit int current design specs...
r21 }
Michal Klocek
Fix naming convention for lineseries...
r144 QRectF LineChartItem::boundingRect() const
Tero Ahola
Refactored themes; now enabled for line, scatter and pies...
r103 {
Michal Klocek
Refactors qchart , adds line animation...
r131 return m_rect;
Tero Ahola
Refactored themes; now enabled for line, scatter and pies...
r103 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85
Michal Klocek
Fix naming convention for lineseries...
r144 QPainterPath LineChartItem::shape() const
Michal Klocek
Add zoom support...
r67 {
Tero Ahola
Fixed paint and mouse event issues with QLineSeries...
r1791 // Increase the size of the path slightly to make mouse interactions more natural
QPainterPathStroker s;
s.setCapStyle(Qt::RoundCap);
s.setJoinStyle(Qt::RoundJoin);
qreal spacing = qMax(mouseEventMinWidth, (qreal) m_linePen.width());
s.setWidth(spacing);
return s.createStroke(m_path);
Michal Klocek
Refactors qchart , adds line animation...
r131 }
Michal Klocek
Refactora axis and line chart to use graphics items insted of painter.
r85
Michal Klocek
Refactors animation handling for xyseries
r1217 void LineChartItem::updateGeometry()
Michal Klocek
Refactors qchart , adds line animation...
r131 {
Michal Klocek
Refactors animation handling for xyseries
r1217 const QVector<QPointF>& points = geometryPoints();
Marek Rosa
Added support for adding and removing data with model. Updated the example
r545 if(points.size()==0)
{
Michal Klocek
Fix last post remove in qlineseries
r1269 prepareGeometryChange();
Marek Rosa
XYSeries model support refactored
r1085 m_path = QPainterPath();
Michal Klocek
Fix last post remove in qlineseries
r1269 m_rect = QRect();
Marek Rosa
Added support for adding and removing data with model. Updated the example
r545 return;
}
Michal Klocek
Refactors linechart update calls
r464
Michal Klocek
Adds clicked(Point) to lineSeries, changes visible points handling
r544 QPainterPath linePath(points.at(0));
Michal Klocek
Refactors linechart update calls
r464
Michal Klocek
Refactor line spline to common xyline...
r465 for(int i=1; i< points.size();i++) {
Michal Klocek
Adds clicked(Point) to lineSeries, changes visible points handling
r544 linePath.lineTo(points.at(i));
Michal Klocek
Refactor line spline to common xyline...
r465 }
Michal Klocek
Refactors linechart update calls
r464
Michal Klocek
Refactor line spline to common xyline...
r465 prepareGeometryChange();
Tero Ahola
Fixed paint and mouse event issues with QLineSeries...
r1791
Michal Klocek
Adds clicked(Point) to lineSeries, changes visible points handling
r544 m_path = linePath;
Tero Ahola
Fixed paint and mouse event issues with QLineSeries...
r1791
// When defining bounding rectangle,
// 1. take the line width into account (otherwise you will get drawing artifacts) and
// 2. take the shape into account (otherwise you will not get mouse events through on border
// areas).
const qreal sqrtOf2 = 1.414214;
const qreal spacing = qMax(mouseEventMinWidth / 2.0,
sqrtOf2 * (qreal) m_linePen.width() / 2.0);
m_rect = m_path.boundingRect().adjusted(-spacing, -spacing, spacing, spacing);
Michal Klocek
Refactor xychartitem -> xychart
r1218 setPos(origin());
Michal Klocek
Refactor current draft to fit int current design specs...
r21 }
Michal Klocek
Adds updated handling for line series
r392 void LineChartItem::handleUpdated()
Michal Klocek
Rewrite animation hadnling in line series...
r389 {
Tero Ahola
Fixed isVisible implementation in XY series
r1346 setVisible(m_series->isVisible());
Michal Klocek
Adds clicked(Point) to lineSeries, changes visible points handling
r544 m_pointsVisible = m_series->pointsVisible();
m_linePen = m_series->pen();
m_pointPen = m_series->pen();
m_pointPen.setWidthF(2*m_pointPen.width());
Michal Klocek
Refactored for MVP...
r139 update();
}
Michal Klocek
Fix commit 7b90ec69ce9a3353820d295c222ef3f79537484d
r391 void LineChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Tero Ahola
Squashed bunch of warnings
r611 Q_UNUSED(widget)
Q_UNUSED(option)
Tero Ahola
Fixed isVisible implementation in XY series
r1346 painter->save();
painter->setPen(m_linePen);
painter->setClipRect(clipRect());
Tero Ahola
Optimization: line series now uses QPainter::drawLine
r1780 // Draw lines
const QVector<QPointF> &points = geometryPoints();
for (int i(1); i < points.size();i++)
painter->drawLine(points.at(i-1), points.at(i));
// Draw points
Tero Ahola
Fixed isVisible implementation in XY series
r1346 if (m_pointsVisible){
painter->setPen(m_pointPen);
painter->drawPoints(geometryPoints());
Michal Klocek
Adds clicked(Point) to lineSeries, changes visible points handling
r544 }
Tero Ahola
Fixed isVisible implementation in XY series
r1346 painter->restore();
Michal Klocek
Fix commit 7b90ec69ce9a3353820d295c222ef3f79537484d
r391 }
Michal Klocek
Refactor xychartitem -> xychart
r1218 void LineChartItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
emit XYChart::clicked(calculateDomainPoint(event->pos()));
Michal Klocek
Fixes mouse handling in base class of chartseries
r1747 QGraphicsItem::mousePressEvent(event);
Michal Klocek
Refactor xychartitem -> xychart
r1218 }
Michal Klocek
Fix naming convention for lineseries...
r144 #include "moc_linechartitem_p.cpp"
Michal Klocek
Refactors qchart , adds line animation...
r131
Tero Ahola
Renamed to QtCommercialChart
r30 QTCOMMERCIALCHART_END_NAMESPACE