xylinechartitem.cpp
56 lines
| 1.4 KiB
| text/x-c
|
CppLexer
|
r21 | #include "xylinechartitem_p.h" | ||
#include "axis_p.h" | ||||
#include "xygrid_p.h" | ||||
#include "qxychartseries.h" | ||||
#include <QPainter> | ||||
#include <QStyleOptionGraphicsItem> | ||||
#include <QDebug> | ||||
|
r30 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||
|
r21 | |||
XYLineChartItem::XYLineChartItem(QXYChartSeries* series,QGraphicsItem *parent):QGraphicsItem(parent), | ||||
|
r25 | m_series(series) | ||
|
r21 | { | ||
} | ||||
|
r47 | void XYLineChartItem::updateXYPlotDomain(const XYPlotDomain& data) | ||
|
r21 | { | ||
m_xyPlotData=data; | ||||
|
r25 | |||
if (!m_xyPlotData.m_viewportRect.isValid()) | ||||
return; | ||||
const QRect& rect = m_xyPlotData.m_viewportRect; | ||||
const qreal deltaX = (rect.width()-1)/m_xyPlotData.spanX(); | ||||
const qreal deltaY = (rect.height()-1)/m_xyPlotData.spanY(); | ||||
m_polyline.clear(); | ||||
m_polyline.resize(m_series->count()); | ||||
for (int j = 0; j < m_series->count(); ++j) { | ||||
qreal dx = m_series->x(j) - m_xyPlotData.m_minX; | ||||
qreal dy = m_series->y(j) - m_xyPlotData.m_minY; | ||||
qreal x = (dx * deltaX) + rect.left(); | ||||
qreal y = - (dy * deltaY) + rect.bottom(); | ||||
m_polyline[j] = QPointF(x, y); | ||||
} | ||||
|
r21 | } | ||
QRectF XYLineChartItem::boundingRect() const | ||||
{ | ||||
return m_polyline.boundingRect(); | ||||
} | ||||
void XYLineChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget) | ||||
{ | ||||
|
r25 | painter->setClipRect(m_xyPlotData.m_viewportRect.adjusted(+1, +1, -1, -1)); | ||
|
r21 | painter->setPen(m_series->color()); | ||
painter->drawPolyline(m_polyline); | ||||
} | ||||
|
r30 | QTCOMMERCIALCHART_END_NAMESPACE | ||