@@ -43,64 +43,74 @@ BOOL _CGPathParseString(CGMutablePathRef path, const char *utf8CString) {
4343 break ;
4444 case ' m' :
4545 if (numCount != 2 ) return NO ;
46- CGPathMoveToPoint (path, NULL , numbers[0 ], numbers[1 ]);
46+ CGPathMoveToPoint (path, NULL ,
47+ numbers[0 ], numbers[1 ]);
4748 currentX = lastControlX = numbers[0 ];
4849 currentY = lastControlY = numbers[1 ];
4950 numCount = 0 ;
5051 break ;
5152 case ' l' :
5253 if (numCount != 2 ) return NO ;
53- CGPathAddLineToPoint (path, NULL , numbers[0 ], numbers[1 ]);
54+ CGPathAddLineToPoint (path, NULL ,
55+ numbers[0 ], numbers[1 ]);
5456 currentX = lastControlX = numbers[0 ];
5557 currentY = lastControlY = numbers[1 ];
5658 numCount = 0 ;
5759 break ;
5860 case ' c' :
5961 if (numCount != 6 ) return NO ;
60- CGPathAddCurveToPoint (path, NULL , numbers[0 ], numbers[1 ],
61- numbers[2 ], numbers[3 ], numbers[4 ], numbers[5 ]);
62- currentX = numbers[2 ];
63- currentY = numbers[3 ];
64- lastControlX = numbers[4 ];
65- lastControlY = numbers[5 ];
62+ CGPathAddCurveToPoint (path, NULL ,
63+ numbers[0 ], numbers[1 ],
64+ numbers[2 ], numbers[3 ],
65+ numbers[4 ], numbers[5 ]);
66+ lastControlX = numbers[2 ];
67+ lastControlY = numbers[3 ];
68+ currentX = numbers[4 ];
69+ currentY = numbers[5 ];
6670 numCount = 0 ;
6771 break ;
6872 case ' q' :
6973 if (numCount != 4 ) return NO ;
70- CGPathAddQuadCurveToPoint (path, NULL , numbers[0 ], numbers[1 ],
74+ CGPathAddQuadCurveToPoint (path, NULL ,
75+ numbers[0 ], numbers[1 ],
7176 numbers[2 ], numbers[3 ]);
72- currentX = numbers[0 ];
73- currentY = numbers[1 ];
74- lastControlX = numbers[2 ];
75- lastControlY = numbers[3 ];
77+ lastControlX = numbers[0 ];
78+ lastControlY = numbers[1 ];
79+ currentX = numbers[2 ];
80+ currentY = numbers[3 ];
7681 numCount = 0 ;
7782 break ;
7883 case ' t' :
7984 if (numCount != 2 ) return NO ;
80- {
81- CGFloat reflectedX = currentX - 2.0 * lastControlX;
82- CGFloat reflectedY = currentY - 2.0 * lastControlY;
83- CGPathAddQuadCurveToPoint (path, NULL , reflectedX, reflectedY,
84- numbers[0 ], numbers[1 ]);
85- currentX = reflectedX;
86- currentY = reflectedY;
87- lastControlX = numbers[0 ];
88- lastControlY = numbers[1 ];
89- }
85+ CGFloat reflectedX = currentX * 2.0 - lastControlX;
86+ CGFloat reflectedY = currentY * 2.0 - lastControlY;
87+ CGPathAddQuadCurveToPoint (path, NULL ,
88+ reflectedX, reflectedY,
89+ numbers[0 ], numbers[1 ]);
90+ lastControlX = reflectedX;
91+ lastControlY = reflectedY;
92+ currentX = numbers[0 ];
93+ currentY = numbers[1 ];
9094 numCount = 0 ;
9195 break ;
9296 case ' v' :
9397 if (numCount != 4 ) return NO ;
94- CGPathAddCurveToPoint (path, NULL , lastControlX, lastControlY,
95- numbers[0 ], numbers[1 ], numbers[2 ], numbers[3 ]);
96- lastControlX = numbers[2 ];
97- lastControlY = numbers[3 ];
98+ CGPathAddCurveToPoint (path, NULL ,
99+ currentX, currentY,
100+ numbers[0 ], numbers[1 ],
101+ numbers[2 ], numbers[3 ]);
102+ lastControlX = numbers[0 ];
103+ lastControlY = numbers[1 ];
104+ currentX = numbers[2 ];
105+ currentY = numbers[3 ];
98106 numCount = 0 ;
99107 break ;
100108 case ' y' :
101109 if (numCount != 4 ) return NO ;
102- CGPathAddCurveToPoint (path, NULL , numbers[0 ], numbers[1 ],
103- numbers[2 ], numbers[3 ], numbers[2 ], numbers[3 ]);
110+ CGPathAddCurveToPoint (path, NULL ,
111+ numbers[0 ], numbers[1 ],
112+ numbers[2 ], numbers[3 ],
113+ numbers[2 ], numbers[3 ]);
104114 lastControlX = numbers[2 ];
105115 lastControlY = numbers[3 ];
106116 numCount = 0 ;
@@ -115,8 +125,9 @@ BOOL _CGPathParseString(CGMutablePathRef path, const char *utf8CString) {
115125 case ' r' :
116126 if (ptr[1 ] != ' e' ) return NO ;
117127 if (numCount != 4 ) return NO ;
118- CGPathAddRect (path, NULL , CGRectMake (numbers[0 ], numbers[1 ],
119- numbers[2 ], numbers[3 ]));
128+ CGPathAddRect (path, NULL ,
129+ CGRectMake (numbers[0 ], numbers[1 ],
130+ numbers[2 ], numbers[3 ]));
120131 ptr++;
121132 numCount = 0 ;
122133 break ;
0 commit comments