src/gui/painting/qpathclipper_p.h
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 33 3e2da88830cd
--- a/src/gui/painting/qpathclipper_p.h	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/painting/qpathclipper_p.h	Tue Jul 06 15:10:48 2010 +0300
@@ -87,6 +87,7 @@
     bool contains();
 
     static bool pathToRect(const QPainterPath &path, QRectF *rect = 0);
+    static QPainterPath intersect(const QPainterPath &path, const QRectF &rect);
 
 private:
     Q_DISABLE_COPY(QPathClipper)
@@ -150,10 +151,6 @@
     qreal angle;
     qreal invAngle;
 
-    const QBezier *bezier;
-    qreal t0;
-    qreal t1;
-
     int next(Traversal traversal, Direction direction) const;
 
     void setNext(Traversal traversal, Direction direction, int next);
@@ -181,9 +178,8 @@
     };
 
     struct Segment {
-        Segment(int pathId, int vertexA, int vertexB, int bezierIndex = -1)
+        Segment(int pathId, int vertexA, int vertexB)
             : path(pathId)
-            , bezier(bezierIndex)
             , va(vertexA)
             , vb(vertexB)
             , intersection(-1)
@@ -191,7 +187,6 @@
         }
 
         int path;
-        int bezier;
 
         // vertices
         int va;
@@ -204,7 +199,7 @@
     };
 
 
-    QPathSegments();
+    QPathSegments(int reserve);
 
     void setPath(const QPainterPath &path);
     void addPath(const QPainterPath &path);
@@ -215,7 +210,6 @@
 
     const Segment &segmentAt(int index) const;
     const QLineF lineAt(int index) const;
-    const QBezier *bezierAt(int index) const;
     const QRectF &elementBounds(int index) const;
     int pathId(int index) const;
 
@@ -230,7 +224,6 @@
 private:
     QDataBuffer<QPointF> m_points;
     QDataBuffer<Segment> m_segments;
-    QDataBuffer<QBezier> m_beziers;
     QDataBuffer<Intersection> m_intersections;
 
     int m_pathId;
@@ -271,8 +264,8 @@
 
     TraversalStatus next(const TraversalStatus &status) const;
 
-    int addEdge(const QPointF &a, const QPointF &b, const QBezier *bezier = 0, qreal t0 = 0, qreal t1 = 1);
-    int addEdge(int vertexA, int vertexB, const QBezier *bezier = 0, qreal t0 = 0, qreal t1 = 1);
+    int addEdge(const QPointF &a, const QPointF &b);
+    int addEdge(int vertexA, int vertexB);
 
     bool isInside(qreal x, qreal y) const;
 
@@ -284,11 +277,7 @@
 
     void printNode(int i, FILE *handle);
 
-    QBezier bezierFromIndex(int index) const;
-
     void removeEdge(int ei);
-    void addBezierEdge(const QBezier *bezier, const QPointF &a, const QPointF &b, qreal alphaA, qreal alphaB, int path);
-    void addBezierEdge(const QBezier *bezier, int vertexA, int vertexB, qreal alphaA, qreal alphaB, int path);
 
     int insert(const QPathVertex &vertex);
     TraversalStatus findInsertStatus(int vertex, int edge) const;
@@ -311,9 +300,6 @@
     , second(b)
     , angle(0)
     , invAngle(0)
-    , bezier(0)
-    , t0(0)
-    , t1(0)
 {
     m_next[0][0] = -1;
     m_next[1][0] = -1;
@@ -359,7 +345,10 @@
     return QPointF(x, y);
 }
 
-inline QPathSegments::QPathSegments()
+inline QPathSegments::QPathSegments(int reserve) :
+    m_points(reserve),
+    m_segments(reserve),
+    m_intersections(reserve)
 {
 }
 
@@ -395,15 +384,6 @@
     return QLineF(m_points.at(segment.va), m_points.at(segment.vb));
 }
 
-inline const QBezier *QPathSegments::bezierAt(int index) const
-{
-    const Segment &segment = m_segments.at(index);
-    if (segment.bezier >= 0)
-        return &m_beziers.at(segment.bezier);
-    else
-        return 0;
-}
-
 inline const QRectF &QPathSegments::elementBounds(int index) const
 {
     return m_segments.at(index).bounds;