Skip to content

Commit 74a4d39

Browse files
committed
Refactor Gradients
1 parent 4f701b6 commit 74a4d39

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

Examples/Sources/ViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class ViewController: UIViewController {
6565

6666
override func loadView() {
6767
let imageView = UIImageView(frame: UIScreen.main.bounds)
68-
imageView.image = Image(named: "star-struck.svg", in: .samples)?.rasterize()
68+
imageView.image = Image(named: "thats-no-moon.svg", in: .samples)?.rasterize()
6969
imageView.contentMode = .scaleAspectFit
7070
imageView.backgroundColor = .white
7171
self.view = imageView

SwiftDraw/LayerTree.CommandGenerator.swift

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ extension LayerTree {
390390
commands.append(contentsOf: renderCommands(forTransforms: gradient.transform))
391391
}
392392

393-
let converted = apply(colorConverter: colorConverter, to: gradient.gradient)
393+
let converted = gradient.gradient.convertColor(using: colorConverter)
394394
let gradient = provider.createGradient(from: converted)
395395
let start = provider.createPoint(from: pathStart)
396396
let end = provider.createPoint(from: pathEnd)
@@ -434,7 +434,7 @@ extension LayerTree {
434434
commands.append(contentsOf: renderCommands(forTransforms: gradient.transform))
435435
}
436436

437-
let converted = apply(colorConverter: colorConverter, to: gradient.gradient)
437+
let converted = gradient.gradient.convertColor(using: colorConverter)
438438
let gradient = provider.createGradient(from: converted)
439439
let apha = provider.createFloat(from: opacity)
440440
commands.append(.setAlpha(apha))
@@ -464,9 +464,16 @@ private extension LayerTree.Rect {
464464
}
465465
}
466466

467-
private func apply(colorConverter: ColorConverter, to gradient: LayerTree.Gradient) -> LayerTree.Gradient {
468-
let stops = gradient.stops.map { apply(colorConverter: colorConverter, to: $0) }
469-
return LayerTree.Gradient(stops: stops)
467+
468+
private extension LayerTree.Gradient {
469+
func convertColor(using converter: ColorConverter) -> LayerTree.Gradient {
470+
let stops: [LayerTree.Gradient.Stop] = stops.map { stop in
471+
var stop = stop
472+
stop.color = converter.createColor(from: stop.color).withMultiplyingAlpha(stop.opacity)
473+
return stop
474+
}
475+
return LayerTree.Gradient(stops: stops)
476+
}
470477
}
471478

472479
private func apply(colorConverter: ColorConverter, to stop: LayerTree.Gradient.Stop) -> LayerTree.Gradient.Stop {

0 commit comments

Comments
 (0)