equal
deleted
inserted
replaced
85 |
85 |
86 QByteArray DrawMapScene::encode() |
86 QByteArray DrawMapScene::encode() |
87 { |
87 { |
88 QByteArray b; |
88 QByteArray b; |
89 |
89 |
90 foreach(QList<QPoint> points, paths) |
90 for(int i = paths.size() - 1; i >= 0; --i) |
91 { |
91 { |
92 int cnt = 0; |
92 int cnt = 0; |
|
93 QList<QPoint> points = paths.at(i); |
93 foreach(QPoint point, points) |
94 foreach(QPoint point, points) |
94 { |
95 { |
95 qint16 px = qToBigEndian((qint16)point.x()); |
96 qint16 px = qToBigEndian((qint16)point.x()); |
96 qint16 py = qToBigEndian((qint16)point.y()); |
97 qint16 py = qToBigEndian((qint16)point.y()); |
97 quint8 flags = 2; |
98 quint8 flags = 2; |
122 qint16 py = qFromBigEndian(*(qint16 *)data.data()); |
123 qint16 py = qFromBigEndian(*(qint16 *)data.data()); |
123 data.remove(0, 2); |
124 data.remove(0, 2); |
124 quint8 flags = *(quint8 *)data.data(); |
125 quint8 flags = *(quint8 *)data.data(); |
125 data.remove(0, 1); |
126 data.remove(0, 1); |
126 |
127 |
127 if (data.size() < 5) points.append(QPoint(px, py)); |
128 if((flags & 0x80) && points.size()) |
128 //last chunk or first point |
|
129 if((data.size() < 5) || (flags & 0x80)) |
|
130 { |
129 { |
131 if(points.size()) |
130 addPath(pointsToPath(points), m_pen); |
132 { |
131 paths.prepend(points); |
133 addPath(pointsToPath(points), m_pen); |
|
134 paths.append(points); |
|
135 |
132 |
136 points.clear(); |
133 points.clear(); |
137 } |
|
138 } |
134 } |
139 if (data.size() >= 5) points.append(QPoint(px, py)); |
135 |
|
136 points.append(QPoint(px, py)); |
|
137 } |
|
138 |
|
139 if(points.size()) |
|
140 { |
|
141 addPath(pointsToPath(points), m_pen); |
|
142 paths.prepend(points); |
140 } |
143 } |
141 |
144 |
142 emit pathChanged(); |
145 emit pathChanged(); |
143 } |
146 } |
144 |
147 |