Skip to content

Commit 5cf0c3e

Browse files
committed
Merge branch 'clips-path'
2 parents d3ebe6e + 7376d39 commit 5cf0c3e

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

SwiftDraw/LayerTree.CommandGenerator.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,19 @@ extension LayerTree {
313313

314314
func renderCommands(forClip shapes: [ClipShape], using rule: FillRule?) -> [RendererCommand<P.Types>] {
315315
guard !shapes.isEmpty else { return [] }
316-
let paths = shapes.map { provider.createPath(from: .path($0.makePath())) }
316+
let paths = shapes.map { clip in
317+
if clip.transform == .identity {
318+
return provider.createPath(from: clip.shape)
319+
} else {
320+
return provider.createPath(from: .path(clip.shape.path.applying(matrix: clip.transform)))
321+
}
322+
}
317323
let clipPath = provider.createPath(from: paths)
318324
let rule = provider.createFillRule(from: rule ?? .nonzero)
319325
return [.setClip(path: clipPath, rule: rule)]
320326
}
321327

328+
322329
func renderCommands(forMask layer: Layer?) -> [RendererCommand<P.Types>] {
323330
guard let layer = layer else { return [] }
324331

SwiftDraw/LayerTree.Shape.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,7 @@ extension LayerTree {
4141

4242
struct ClipShape: Hashable {
4343
var shape: Shape
44-
var transform: Transform.Matrix?
45-
46-
func makePath() -> LayerTree.Path {
47-
guard let transform else {
48-
return shape.path
49-
}
50-
return shape.path.applying(matrix: transform)
51-
}
44+
var transform: Transform.Matrix
5245
}
5346
}
5447

SwiftDrawTests/LayerTree.CommandGeneratorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,6 @@ final class LayerTreeCommandGeneratorTests: XCTestCase {
7474
private extension LayerTree.CommandGenerator {
7575

7676
func renderCommands(forClip shapes: [LayerTree.Shape], using rule: LayerTree.FillRule?) -> [RendererCommand<P.Types>] {
77-
renderCommands(forClip: shapes.map { LayerTree.ClipShape(shape: $0) }, using: rule)
77+
renderCommands(forClip: shapes.map { LayerTree.ClipShape(shape: $0, transform: .identity) }, using: rule)
7878
}
7979
}

0 commit comments

Comments
 (0)