diff options
author | Gunnar Sletta <gunnar@trolltech.com> | 2009-07-28 09:55:18 (GMT) |
---|---|---|
committer | Gunnar Sletta <gunnar@trolltech.com> | 2009-07-28 14:45:45 (GMT) |
commit | 1d81d6c163bad6ffe2914ee7e7cc71bb25cb5181 (patch) | |
tree | d52a5833a666672a799b491b8f3a1e79af3ccdf5 | |
parent | e70af37dba3defc0f1b0a08cb5770d3662f3f0ec (diff) | |
download | Qt-1d81d6c163bad6ffe2914ee7e7cc71bb25cb5181.zip Qt-1d81d6c163bad6ffe2914ee7e7cc71bb25cb5181.tar.gz Qt-1d81d6c163bad6ffe2914ee7e7cc71bb25cb5181.tar.bz2 |
Added QVectorPath::convertToPainterPath() for future convenience
-rw-r--r-- | src/gui/painting/qpaintengineex.cpp | 34 | ||||
-rw-r--r-- | src/gui/painting/qvectorpath_p.h | 2 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 797a5ab..ce4f7fd 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -91,6 +91,40 @@ QRectF QVectorPath::controlPointRect() const return QRectF(QPointF(m_cp_rect.x1, m_cp_rect.y1), QPointF(m_cp_rect.x2, m_cp_rect.y2)); } +QPainterPath QVectorPath::convertToPainterPath() const +{ + QPainterPath path; + + if (m_count == 0) + return path; + + const QPointF *points = (const QPointF *) m_points; + + if (m_elements) { + for (int i=0; i<m_count; ++i) { + switch (m_elements[i]) { + case QPainterPath::MoveToElement: + path.moveTo(points[i]); + break; + case QPainterPath::LineToElement: + path.lineTo(points[i]); + break; + case QPainterPath::CurveToElement: + path.cubicTo(points[i], points[i+1], points[i+2]); + break; + default: + break; + } + } + } else { + path.moveTo(points[0]); + for (int i=1; i<m_count; ++i) + path.lineTo(points[i]); + } + + return path; +} + const QVectorPath &qtVectorPathForPath(const QPainterPath &path) { Q_ASSERT(path.d_func()); diff --git a/src/gui/painting/qvectorpath_p.h b/src/gui/painting/qvectorpath_p.h index b6b85fa..9264c9c 100644 --- a/src/gui/painting/qvectorpath_p.h +++ b/src/gui/painting/qvectorpath_p.h @@ -130,6 +130,8 @@ public: static inline uint polygonFlags(QPaintEngine::PolygonDrawMode mode); + QPainterPath convertToPainterPath() const; + private: Q_DISABLE_COPY(QVectorPath) |