void LegendMarker::drawVector(QPainter *p, int x, int y, int l, int curveIndex) const { Graph *g = (Graph *)d_plot->parent(); if (!g) return; VectorCurve *v = (VectorCurve*)g->curve(curveIndex); if (!v) return; p->save(); QPen pen(v->color(), v->width(), Qt::SolidLine); p->setPen(pen); QwtPainter::drawLine(p, x, y, x + l, y); p->translate(x+l, y); double pi=4*atan(-1.0); int headLength = v->headLength(); int d=qRound(headLength*tan(pi*(double)v->headAngle()/180.0)); QPolygon endArray(3); endArray[0] = QPoint(0, 0); endArray[1] = QPoint(-headLength, d); endArray[2] = QPoint(-headLength, -d); if (v->filledArrowHead()) p->setBrush(QBrush(pen.color(), Qt::SolidPattern)); QwtPainter::drawPolygon(p,endArray); p->restore(); }
void LegendWidget::drawVector(PlotCurve *c, QPainter *p, int x, int y, int l) { if (!c) return; VectorCurve *v = (VectorCurve*)c; p->save(); if (d_plot->antialiasing()) p->setRenderHints(QPainter::Antialiasing); QPen pen(v->color(), v->width(), Qt::SolidLine); p->setPen(pen); p->drawLine(x, y, x + l, y); p->translate(x + l, y); double pi=4*atan(-1.0); int headLength = v->headLength(); int d=qRound(headLength*tan(pi*(double)v->headAngle()/180.0)); QPolygon endArray(3); endArray[0] = QPoint(0, 0); endArray[1] = QPoint(-headLength, d); endArray[2] = QPoint(-headLength, -d); if (v->filledArrowHead()) p->setBrush(QBrush(pen.color(), Qt::SolidPattern)); p->drawPolygon(endArray); p->restore(); }