File tree Expand file tree Collapse file tree 5 files changed +86
-10
lines changed
Expand file tree Collapse file tree 5 files changed +86
-10
lines changed Original file line number Diff line number Diff line change 88import CoreGraphics
99import CoreImage
1010
11- final actor CoreGraphicsRenderer {
11+ final class CoreGraphicsRenderer : CoreGraphicsRendererProtocol {
1212 private let context : CIContext
1313
1414 init (
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import CoreGraphics
1010import CoreImage
1111import CoreVideo
1212
13- final actor SampleBufferFactory {
13+ final actor SampleBufferFactory : SampleBufferFactoryProtocol {
1414
1515 // MARK: Constants
1616
Original file line number Diff line number Diff line change 1+ //
2+ // CoreGraphicsRendererProtocol.swift
3+ // GreedyKit
4+ //
5+ // Created by Igor Belov on 13.07.2025.
6+ //
7+
8+ import CoreImage
9+
10+ protocol CoreGraphicsRendererProtocol {
11+ func cgImage( from ciImage: CIImage ) async -> CGImage ?
12+ }
Original file line number Diff line number Diff line change 1+ //
2+ // SampleBufferFactoryProtocol.swift
3+ // GreedyKit
4+ //
5+ // Created by Igor Belov on 11.07.2025.
6+ //
7+
8+ import AVFoundation
9+ import CoreImage
10+
11+ protocol SampleBufferFactoryProtocol : Actor {
12+ func sampleBuffer(
13+ fromPixelBuffer pixelBuffer: CVPixelBuffer ,
14+ presentationTimeStamp time: CMTime ,
15+ duration: CMTime
16+ ) -> CMSampleBuffer ?
17+
18+ func sampleBuffer(
19+ fromCGImage cgImage: CGImage ,
20+ presentationTimeStamp time: CMTime ,
21+ duration: CMTime
22+ ) -> CMSampleBuffer ?
23+ }
24+
25+ extension SampleBufferFactoryProtocol {
26+ func sampleBuffer(
27+ fromPixelBuffer pixelBuffer: CVPixelBuffer ,
28+ presentationTimeStamp time: CMTime = . invalid,
29+ duration: CMTime = . zero
30+ ) -> CMSampleBuffer ? {
31+ sampleBuffer (
32+ fromPixelBuffer: pixelBuffer,
33+ presentationTimeStamp: time,
34+ duration: duration
35+ )
36+ }
37+
38+ func sampleBuffer(
39+ fromCGImage cgImage: CGImage ,
40+ presentationTimeStamp time: CMTime = . invalid,
41+ duration: CMTime = . zero
42+ ) -> CMSampleBuffer ? {
43+ sampleBuffer (
44+ fromCGImage: cgImage,
45+ presentationTimeStamp: time,
46+ duration: duration
47+ )
48+ }
49+ }
Original file line number Diff line number Diff line change @@ -51,18 +51,33 @@ public final class GreedyImageView: UIView {
5151
5252 // MARK: - Properties
5353
54- private let renderView = BackedRenderView ( )
55-
56- private lazy var sampleBufferFactory = SampleBufferFactory ( )
57- private lazy var renderer = CoreGraphicsRenderer (
58- debugName: " GreedyImageView " ,
59- cacheIntermediates: true
60- )
54+ private let renderView : RenderViewProtocol
55+ private let sampleBufferFactory : SampleBufferFactoryProtocol
56+ private let renderer : CoreGraphicsRendererProtocol
6157
6258 // MARK: - Lifecycle
6359
64- public override init ( frame: CGRect ) {
60+ init (
61+ frame: CGRect = . zero,
62+ renderView: RenderViewProtocol ,
63+ renderer: CoreGraphicsRendererProtocol ,
64+ sampleBufferFactory: SampleBufferFactoryProtocol
65+ ) {
66+ self . renderView = renderView
67+ self . renderer = renderer
68+ self . sampleBufferFactory = sampleBufferFactory
69+
6570 super. init ( frame: frame)
71+ }
72+
73+ public override convenience init ( frame: CGRect ) {
74+ self . init (
75+ frame: frame,
76+ renderView: BackedRenderView ( ) ,
77+ renderer: CoreGraphicsRenderer ( debugName: " GreedyImageView " ) ,
78+ sampleBufferFactory: SampleBufferFactory ( )
79+ )
80+
6681 renderView. configure ( in: self )
6782 }
6883
You can’t perform that action at this time.
0 commit comments