From: Samuel Rødal Date: Wed, 10 Oct 2012 14:14:32 +0000 (+0200) Subject: Fixed cosmetic line drawing where begin and end points are equal. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dfb55f8a6c8d3ec4da840191c331ace3c2aa2bf3;p=profile%2Fivi%2Fqtbase.git Fixed cosmetic line drawing where begin and end points are equal. This case has typically required specific work-arounds in other rendering paths as well. Task-number: QTBUG-25153 Change-Id: I217e710a30222792ebca3bf297e438d944c32992 Reviewed-by: Lars Knoll --- diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp index 6c1be87..f99edc6 100644 --- a/src/gui/painting/qcosmeticstroker.cpp +++ b/src/gui/painting/qcosmeticstroker.cpp @@ -356,6 +356,11 @@ bool QCosmeticStroker::clipLine(qreal &x1, qreal &y1, qreal &x2, qreal &y2) void QCosmeticStroker::drawLine(const QPointF &p1, const QPointF &p2) { + if (p1 == p2) { + drawPoints(&p1, 1); + return; + } + QPointF start = p1 * state->matrix; QPointF end = p2 * state->matrix; diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index 9354f9f..1371694 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -279,6 +279,7 @@ private slots: void drawTextWithComplexBrush(); void QTBUG26013_squareCapStroke(); + void QTBUG25153_drawLine(); private: void fillData(); @@ -4388,6 +4389,26 @@ void tst_QPainter::QTBUG26013_squareCapStroke() } } +void tst_QPainter::QTBUG25153_drawLine() +{ + QImage image(2, 2, QImage::Format_RGB32); + + QVector styles; + styles << Qt::FlatCap << Qt::SquareCap << Qt::RoundCap; + + foreach (Qt::PenCapStyle style, styles) { + image.fill(0xffffffff); + QPainter p(&image); + p.setPen(QPen(Qt::black, 0, Qt::SolidLine, style)); + p.drawLine(QLineF(0, 0, 0, 0)); + p.end(); + + QCOMPARE(image.pixel(0, 0), 0xff000000); + QCOMPARE(image.pixel(0, 1), 0xffffffff); + QCOMPARE(image.pixel(1, 0), 0xffffffff); + } +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc"