src/gui/painting/qpainterpath.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/src/gui/painting/qpainterpath.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/painting/qpainterpath.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -1257,6 +1257,8 @@
 void QPainterPath::setFillRule(Qt::FillRule fillRule)
 {
     ensureData();
+    if (d_func()->fillRule == fillRule)
+        return;
     detach();
 
     d_func()->fillRule = fillRule;
@@ -1912,7 +1914,7 @@
 
         case QPainterPath::MoveToElement:
             if (i > 0
-                && qFuzzyCompare(last_pt.x(), last_start.y())
+                && qFuzzyCompare(last_pt.x(), last_start.x())
                 && qFuzzyCompare(last_pt.y(), last_start.y())
                 && qt_painterpath_isect_line_rect(last_pt.x(), last_pt.y(),
                                                   last_start.x(), last_start.y(), rect))
@@ -2305,7 +2307,7 @@
     Writes the given painter \a path to the given \a stream, and
     returns a reference to the \a stream.
 
-    \sa {Format of the QDataStream Operators}
+    \sa {Serializing Qt Data Types}
 */
 QDataStream &operator<<(QDataStream &s, const QPainterPath &p)
 {
@@ -2332,7 +2334,7 @@
     Reads a painter path from the given \a stream into the specified \a path,
     and returns a reference to the \a stream.
 
-    \sa {Format of the QDataStream Operators}
+    \sa {Serializing Qt Data Types}
 */
 QDataStream &operator>>(QDataStream &s, QPainterPath &p)
 {
@@ -3165,6 +3167,8 @@
 
     Set operations on paths will treat the paths as areas. Non-closed
     paths will be treated as implicitly closed.
+    Bezier curves may be flattened to line segments due to numerical instability of
+    doing bezier curve intersections.
 
     \sa intersected(), subtracted()
 */
@@ -3180,6 +3184,8 @@
     \since 4.3
 
     Returns a path which is the intersection of this path's fill area and \a p's fill area.
+    Bezier curves may be flattened to line segments due to numerical instability of
+    doing bezier curve intersections.
 */
 QPainterPath QPainterPath::intersected(const QPainterPath &p) const
 {
@@ -3196,7 +3202,8 @@
 
     Set operations on paths will treat the paths as areas. Non-closed
     paths will be treated as implicitly closed.
-
+    Bezier curves may be flattened to line segments due to numerical instability of
+    doing bezier curve intersections.
 */
 QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
 {
@@ -3225,6 +3232,8 @@
     Returns a simplified version of this path. This implies merging all subpaths that intersect,
     and returning a path containing no intersecting edges. Consecutive parallel lines will also
     be merged. The simplified path will always use the default fill rule, Qt::OddEvenFill.
+    Bezier curves may be flattened to line segments due to numerical instability of
+    doing bezier curve intersections.
 */
 QPainterPath QPainterPath::simplified() const
 {