David PHAM-VAN

Fix drawShape Bézier curves

1 # 1.1.1 1 # 1.1.1
2 * Improve PdfPoint and PdfRect 2 * Improve PdfPoint and PdfRect
3 * Change PdfColor.fromInt to const constructor 3 * Change PdfColor.fromInt to const constructor
  4 +* Fix drawShape Bézier curves
4 5
5 # 1.1.0 6 # 1.1.0
6 * Rename classes to satisfy Dart conventions 7 * Rename classes to satisfy Dart conventions
@@ -278,10 +278,10 @@ class PdfGraphics { @@ -278,10 +278,10 @@ class PdfGraphics {
278 break; 278 break;
279 case 'C': // cubic bezier, absolute 279 case 'C': // cubic bezier, absolute
280 var len = 0; 280 var len = 0;
281 - while ((len + 1) * 6 <= points.length) { 281 + while (len < points.length) {
282 curveTo(points[len + 0], points[len + 1], points[len + 2], 282 curveTo(points[len + 0], points[len + 1], points[len + 2],
283 points[len + 3], points[len + 4], points[len + 5]); 283 points[len + 3], points[len + 4], points[len + 5]);
284 - len += 1; 284 + len += 6;
285 } 285 }
286 lastPoint = 286 lastPoint =
287 PdfPoint(points[points.length - 2], points[points.length - 1]); 287 PdfPoint(points[points.length - 2], points[points.length - 1]);
@@ -307,7 +307,7 @@ class PdfGraphics { @@ -307,7 +307,7 @@ class PdfGraphics {
307 break; 307 break;
308 case 'c': // cubic bezier, relative 308 case 'c': // cubic bezier, relative
309 var len = 0; 309 var len = 0;
310 - while ((len + 1) * 6 <= points.length) { 310 + while (len < points.length) {
311 points[len + 0] += lastPoint.x; 311 points[len + 0] += lastPoint.x;
312 points[len + 1] += lastPoint.y; 312 points[len + 1] += lastPoint.y;
313 points[len + 2] += lastPoint.x; 313 points[len + 2] += lastPoint.x;
@@ -316,12 +316,10 @@ class PdfGraphics { @@ -316,12 +316,10 @@ class PdfGraphics {
316 points[len + 5] += lastPoint.y; 316 points[len + 5] += lastPoint.y;
317 curveTo(points[len + 0], points[len + 1], points[len + 2], 317 curveTo(points[len + 0], points[len + 1], points[len + 2],
318 points[len + 3], points[len + 4], points[len + 5]); 318 points[len + 3], points[len + 4], points[len + 5]);
319 - len += 1; 319 + lastPoint = PdfPoint(points[len + 4], points[len + 5]);
  320 + lastControl = PdfPoint(points[len + 2], points[len + 3]);
  321 + len += 6;
320 } 322 }
321 - lastPoint =  
322 - PdfPoint(points[points.length - 2], points[points.length - 1]);  
323 - lastControl =  
324 - PdfPoint(points[points.length - 4], points[points.length - 3]);  
325 break; 323 break;
326 case 's': // smooth cubic bézier, relative 324 case 's': // smooth cubic bézier, relative
327 while (points.length >= 4) { 325 while (points.length >= 4) {