Skip to content

Commit 63a6201

Browse files
committed
default ColorConverter
1 parent b850ae1 commit 63a6201

File tree

5 files changed

+16
-9
lines changed

5 files changed

+16
-9
lines changed

SwiftDraw/CGTextRenderer+Code.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public extension CGTextRenderer {
108108

109109
let optimizer = LayerTree.CommandOptimizer<CGTextTypes>(options: [.skipRedundantState, .skipInitialSaveState])
110110
let commands = optimizer.optimizeCommands(
111-
generator.renderCommands(for: layer)
111+
generator.renderCommands(for: layer, colorConverter: .default)
112112
)
113113

114114
let renderer = CGTextRenderer(api: api,

SwiftDraw/LayerTree.Color.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ struct DefaultColorConverter: ColorConverter {
158158
}
159159
}
160160

161+
extension ColorConverter where Self == DefaultColorConverter {
162+
static var `default`: DefaultColorConverter { DefaultColorConverter() }
163+
}
164+
161165
struct LuminanceColorConverter: ColorConverter {
162166
func createColor(from color: LayerTree.Color) -> LayerTree.Color {
163167
switch color {
@@ -170,3 +174,7 @@ struct LuminanceColorConverter: ColorConverter {
170174
}
171175
}
172176
}
177+
178+
extension ColorConverter where Self == LuminanceColorConverter {
179+
static var luminance: LuminanceColorConverter { LuminanceColorConverter() }
180+
}

SwiftDraw/LayerTree.CommandGenerator.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,17 @@ extension LayerTree {
5252
self.options = options
5353
}
5454

55-
func renderCommands(for layer: Layer, colorConverter: ColorConverter = DefaultColorConverter()) -> [RendererCommand<P.Types>] {
55+
func renderCommands(for layer: Layer, colorConverter: any ColorConverter) -> [RendererCommand<P.Types>] {
56+
var commands = [RendererCommand<P.Types>]()
5657

5758
let state = makeCommandState(for: layer, colorConverter: colorConverter)
5859

59-
guard state.hasContents else { return [] }
60+
guard state.hasContents else { return commands }
6061

6162
if state.hasFilters {
6263
logUnsupportedFilters(layer.filters)
6364
}
6465

65-
var commands = [RendererCommand<P.Types>]()
66-
6766
if state.hasOpacity || state.hasTransform || state.hasClip || state.hasMask {
6867
commands.append(.pushState)
6968
}
@@ -137,7 +136,7 @@ extension LayerTree {
137136
)
138137
}
139138

140-
func renderCommands(for contents: Layer.Contents, colorConverter: ColorConverter) -> [RendererCommand<P.Types>] {
139+
func renderCommands(for contents: Layer.Contents, colorConverter: any ColorConverter) -> [RendererCommand<P.Types>] {
141140
switch makeRenderContents(for: contents, colorConverter: colorConverter) {
142141
case .simple(let commands):
143142
return commands
@@ -379,7 +378,7 @@ extension LayerTree {
379378
commands.append(.setBlend(mode: copy))
380379
//commands.append(contentsOf: renderCommands(forClip: layer.clip))
381380
let drawMask = layer.contents.flatMap{
382-
renderCommands(for: $0, colorConverter: LuminanceColorConverter())
381+
renderCommands(for: $0, colorConverter: .luminance)
383382
}
384383
commands.append(contentsOf: drawMask)
385384
commands.append(.popTransparencyLayer)

SwiftDraw/SVG.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ extension SVG {
150150

151151
let optimizer = LayerTree.CommandOptimizer<CGTypes>()
152152
commands = optimizer.optimizeCommands(
153-
generator.renderCommands(for: layer)
153+
generator.renderCommands(for: layer, colorConverter: .default)
154154
)
155155
}
156156
}

SwiftDrawTests/LayerTree.CommandGeneratorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ final class LayerTreeCommandGeneratorTests: XCTestCase {
3535
let svg = try DOM.SVG.parse(fileNamed: "shapes.svg", in: .test)
3636
let layer = LayerTree.Builder(svg: svg).makeLayer()
3737
let generator = LayerTree.CommandGenerator(provider: LayerTreeProvider(), size: .zero, options: .default)
38-
let commands = generator.renderCommands(for: layer)
38+
let commands = generator.renderCommands(for: layer, colorConverter: .default)
3939

4040
XCTAssertEqual(
4141
commands.count,

0 commit comments

Comments
 (0)