File tree Expand file tree Collapse file tree 2 files changed +34
-5
lines changed Expand file tree Collapse file tree 2 files changed +34
-5
lines changed Original file line number Diff line number Diff line change @@ -235,14 +235,41 @@ extension LayerTree.Path {
235235 }
236236
237237 var last : LayerTree . Point ? {
238-
239- guard let lastSegment = segments. last else { return nil }
240-
241- switch lastSegment {
238+ guard let last = segments. last? . last else {
239+ return lastStart
240+ }
241+
242+ return last
243+ }
244+
245+ var lastStart : LayerTree . Point ? {
246+ let rev = segments. reversed ( )
247+ guard
248+ let closeIdx = rev. index ( where: { $0. isClose } ) ,
249+ closeIdx != rev. startIndex else {
250+ return segments. first? . last
251+ }
252+
253+ let point = rev. index ( before: closeIdx)
254+ return rev [ point] . last
255+ }
256+ }
257+
258+ private extension LayerTree . Path . Segment {
259+
260+ var isClose : Bool {
261+ guard case . close = self else {
262+ return false
263+ }
264+ return true
265+ }
266+
267+ var last : LayerTree . Point ? {
268+ switch self {
242269 case . move( to: let p) : return p
243270 case . line( let p) : return p
244271 case . cubic( let p, _, _) : return p
245- case . close: return nil //traverse segments?
272+ case . close: return nil
246273 }
247274 }
248275}
You can’t perform that action at this time.
0 commit comments