├── SwiftUIPlayground
├── Assets.xcassets
│ ├── Contents.json
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
├── SwiftUIPlayground.swift
├── ContentView.swift
└── netfix
│ ├── ColorExtensions.swift
│ ├── NetFlixIntro.swift
│ ├── EffectBrush.swift
│ ├── LampList.swift
│ ├── EffectLumieres.swift
│ └── BrushList.swift
└── SwiftUIPlayground.xcodeproj
├── xcuserdata
└── anmolverma.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ └── xcschememanagement.plist
├── project.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── project.pbxproj
/SwiftUIPlayground/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/SwiftUIPlayground.xcodeproj/xcuserdata/anmolverma.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/SwiftUIPlayground.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SwiftUIPlayground.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/SwiftUIPlayground.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NetflixAnimationApp.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct NetflixAnimationApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/SwiftUIPlayground.xcodeproj/xcuserdata/anmolverma.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | NetflixAnimation.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | VStack(alignment: HorizontalAlignment.center, spacing: 0, content: {
13 | NetFlixIntro()
14 | }).frame(width: UIScreen.screenWidth, height: UIScreen.screenHeight).background(Color.black)
15 | }
16 | }
17 |
18 | struct ContentView_Previews: PreviewProvider {
19 | static var previews: some View {
20 | ContentView()
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/netfix/ColorExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EffectBrushOne.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 |
12 | let baseColorValue = UInt(0xffe40913)
13 |
14 | extension Color {
15 | init(hex: UInt, alpha: Double = 1) {
16 | self.init(
17 | .sRGB,
18 | red: Double((hex >> 16) & 0xff) / 255,
19 | green: Double((hex >> 08) & 0xff) / 255,
20 | blue: Double((hex >> 00) & 0xff) / 255,
21 | opacity: alpha
22 | )
23 | }
24 | }
25 |
26 |
27 | extension View {
28 | /// Applies the given transform if the given condition evaluates to `true`.
29 | /// - Parameters:
30 | /// - condition: The condition to evaluate.
31 | /// - transform: The transform to apply to the source `View`.
32 | /// - Returns: Either the original `View` or the modified `View` if the condition is `true`.
33 | @ViewBuilder func `if`(_ condition: Bool, transform: (Self) -> Content) -> some View {
34 | if condition {
35 | transform(self)
36 | } else {
37 | self
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "2x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "83.5x83.5"
82 | },
83 | {
84 | "idiom" : "ios-marketing",
85 | "scale" : "1x",
86 | "size" : "1024x1024"
87 | }
88 | ],
89 | "info" : {
90 | "author" : "xcode",
91 | "version" : 1
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/netfix/NetFlixIntro.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NetFlixIntro.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 | let nWidth = CGFloat(150.0)
12 | let nHeight = CGFloat(150.0)
13 |
14 | struct NetFlixIntro : View {
15 |
16 |
17 |
18 | let propWidth = CGFloat(nWidth * 0.195)
19 | let propWidth2 = CGFloat(nWidth * 0.19)
20 | let propWidth3 = CGFloat(nWidth * 0.19)
21 |
22 | let offsetX = CGFloat((12.4/100) * nWidth)
23 | let offsetX2 = CGFloat(-(22.4/100) * nWidth)
24 | let offsetX3 = CGFloat(-(12.4/100) * nWidth)
25 |
26 | let offsetY3 = CGFloat((12.4/100) * nHeight)
27 |
28 |
29 |
30 | @State var zoomInNetflixBox = 1.0
31 |
32 |
33 | var body: some View {
34 | ZStack {
35 |
36 | EffectBrush(offsetX: offsetX,propWidth: propWidth,offsetY: 0,rotation: 180,duration: 3.5,delay: 1.2,isFading : true,height : nHeight)
37 |
38 | EffectLumieres(offsetX: offsetX,propWidth: propWidth,offsetY: 0,height: nHeight)
39 |
40 | EffectBrush(offsetX: offsetX3,propWidth: propWidth3,offsetY:offsetY3,rotation:-19.5,duration: 2.5,delay: 0.8,isFading : false,height : nHeight * 1.2 )
41 | EffectBrush(offsetX: offsetX2,propWidth: propWidth2,offsetY: 0,rotation: 180,duration: 2.5,delay: 0.5,isFading : false,height : nHeight)
42 |
43 | }
44 | .frame(width:nWidth, height: nHeight)
45 | .scaleEffect(x:zoomInNetflixBox,y:zoomInNetflixBox, anchor:.center)
46 | .onAppear {
47 |
48 | withAnimation(Animation.linear(duration: 3.5).delay(0.5))
49 | {
50 | self.zoomInNetflixBox = 1.0
51 | }
52 | withAnimation(Animation.linear(duration: 3.5).delay(0.5))
53 | {
54 | self.zoomInNetflixBox = 2.0
55 | }
56 | withAnimation(Animation.linear(duration: 3.5).delay(0.5))
57 | {
58 | self.zoomInNetflixBox = 4.0
59 | }
60 | withAnimation(Animation.linear(duration: 3.5).delay(0.5))
61 | {
62 | self.zoomInNetflixBox = 8.0
63 | }
64 |
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/netfix/EffectBrush.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EffectBrush.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 | struct EffectBrush : View{
12 |
13 | var offsetX : CGFloat
14 | var propWidth : CGFloat
15 | var offsetY: CGFloat
16 | var rotation: CGFloat
17 | var duration:CGFloat
18 | var delay:CGFloat
19 | var isFading:Bool
20 | var height: CGFloat
21 |
22 | @State var brushTranslationY = 0
23 |
24 |
25 | @State var fadingLumieres = Color.init(hex: baseColorValue,alpha: 0.5)
26 |
27 | var body: some View{
28 | ZStack {
29 | ForEach(brushList.reversed(), id: \.self) { brush in
30 | Brush(brush:brush,offsetX:offsetX,propWidth:propWidth,brushTranslationY:0,height:height)
31 | }
32 |
33 | }.if(isFading, transform: { view in
34 | view.background(fadingLumieres)
35 | })
36 | .offset(x: offsetX, y: offsetY+CGFloat(brushTranslationY) )
37 | .frame(width: propWidth, height: CGFloat(height),alignment: Alignment.center)
38 |
39 | .rotationEffect(Angle(degrees: rotation), anchor:.center)
40 | .onAppear {
41 |
42 | if(isFading){
43 | withAnimation(Animation.linear(duration: 2).delay(0.6))
44 | {
45 | self.fadingLumieres = Color.init(hex: baseColorValue,alpha: 0.5)
46 | }
47 |
48 | withAnimation(Animation.linear(duration: 2).delay(0.6))
49 | {
50 | self.fadingLumieres = Color.init(hex: baseColorValue,alpha: 0)
51 | }
52 | }
53 | withAnimation(Animation.linear(duration: duration).delay(delay))
54 | {
55 | self.brushTranslationY = 0
56 | }
57 |
58 | withAnimation(Animation.linear(duration: duration).delay(delay))
59 | {
60 | self.brushTranslationY = -1600
61 |
62 | }
63 |
64 |
65 |
66 | }
67 | }
68 | }
69 |
70 | struct Brush : View{
71 |
72 | let brush : BrushFurModel
73 | var offsetX : CGFloat
74 | var propWidth : CGFloat
75 | var brushTranslationY: Int
76 | var height:CGFloat
77 |
78 | var body: some View{
79 | let xOffset = CGFloat(brush.leftt / 100) * ( CGFloat(propWidth))
80 |
81 | ZStack{
82 |
83 | }.frame(
84 | width: CGFloat(brush.width),
85 | height: CGFloat(height)
86 | ).background(brush.background)
87 | .offset(x: CGFloat(xOffset), y: CGFloat(CGFloat(brushTranslationY) * UIScreen.screenHeight / CGFloat(100)))
88 |
89 |
90 | }
91 | }
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | extension UIScreen{
100 | static let screenWidth = UIScreen.main.bounds.size.width
101 | static let screenHeight = UIScreen.main.bounds.size.height
102 | static let screenSize = UIScreen.main.bounds.size
103 | }
104 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/netfix/LampList.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LampList.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 24/03/22.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 |
12 | let lampList = [
13 | LampModel(leftt:0.7,width:1,color:Color.init(hex:0xffff0100),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0),z:6),
14 | LampModel(leftt:2.2,width:1.4,color:Color.init(hex:0xffffde01),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
15 | LampModel(leftt:5.8,width:2.1,color:Color.init(hex:0xffff00cc),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
16 | LampModel(leftt:10.1,width:2,color:Color.init(hex:0xff04fd8f),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
17 | LampModel(leftt:12.9,width:1.4,color:Color.init(hex:0xffff0100),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
18 | LampModel(leftt:15.3,width:2.8,color:Color.init(hex:0xffff9600),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
19 | LampModel(leftt:21.2,width:2.5,color:Color.init(hex:0xff0084ff),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
20 | LampModel(leftt:25,width:2.5,color:Color.init(hex:0xfff84006),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
21 | LampModel(leftt:30.5,width:3,color:Color.init(hex:0xffffc601),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
22 | LampModel(leftt:36.3,width:3,color:Color.init(hex:0xffff4800),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
23 | LampModel(leftt:41,width:2.2,color:Color.init(hex:0xfffd0100),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
24 | LampModel(leftt:44.2,width:2.6,color:Color.init(hex:0xff01ffff),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
25 | LampModel(leftt:51.7,width:0.5,color:Color.init(hex:0xffffc601),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
26 | LampModel(leftt:52.1,width:1.8,color:Color.init(hex:0xffffc601),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
27 | LampModel(leftt:53.5,width:2.3,color:Color.init(hex:0xff0078fe),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
28 | LampModel(leftt:57.2,width:2,color:Color.init(hex:0xff0080ff),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
29 | LampModel(leftt:62.3,width:2.9,color:Color.init(hex:0xffffae01),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
30 | LampModel(leftt:65.8,width:1.7,color:Color.init(hex:0xffff00bf),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
31 | LampModel(leftt:72.8,width:0.8,color:Color.init(hex:0xffa601f4),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
32 | LampModel(leftt:74.3,width:2,color:Color.init(hex:0xfff30b34),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
33 | LampModel(leftt:79.8,width:2,color:Color.init(hex:0xffff00bf),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
34 | LampModel(leftt:78.2,width:2,color:Color.init(hex:0xff04fd8f),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
35 | LampModel(leftt:78.5,width:2,color:Color.init(hex:0xff01ffff),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
36 | LampModel(leftt:85.3,width:1.1,color:Color.init(hex:0xffa201ff),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
37 | LampModel(leftt:86.9,width:1.1,color:Color.init(hex:0xffec0014),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
38 | LampModel(leftt:88.8,width:2,color:Color.init(hex:0xff0078fe),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
39 | LampModel(leftt:92.4,width:2.4,color:Color.init(hex:0xffff0036),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
40 | LampModel(leftt:96.2,width:2.1,color:Color.init(hex:0xff06f98c),animDelay: CGFloat.random(in: 0..<500)/CGFloat(100.0)),
41 |
42 |
43 |
44 | ]
45 |
46 |
47 |
48 | struct LampModel : Hashable{
49 | static func == (lhs: LampModel, rhs: LampModel) -> Bool {
50 | lhs.leftt == rhs.leftt
51 | }
52 |
53 | var leftt:Float
54 | var width:Float
55 | var color:Color
56 | var animDelay:CGFloat
57 | var z:Int = 1
58 |
59 | func hash(into hasher: inout Hasher) {
60 | hasher.combine(leftt)
61 | hasher.combine(width)
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/SwiftUIPlayground/netfix/EffectLumieres.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EffectLumieres.swift
3 | // NetflixAnimation
4 | //
5 | // Created by Anmol Verma on 23/03/22.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 |
12 | let LUMIERE_LEFT = "left"
13 | let LUMIERE_RIGHT = "right"
14 |
15 | struct EffectLumieres : View{
16 |
17 | var offsetX : CGFloat
18 | var propWidth : CGFloat
19 | var offsetY: CGFloat
20 | var height: CGFloat
21 |
22 | @State var showingLumieres = 0.0
23 | var body: some View{
24 | ZStack{
25 |
26 | ForEach(0.. Bool {
328 | lhs.leftt == rhs.leftt
329 | }
330 |
331 | var leftt:Float
332 | var width:Float
333 | var background:LinearGradient
334 |
335 | func hash(into hasher: inout Hasher) {
336 | hasher.combine(leftt)
337 | hasher.combine(width)
338 | }
339 | }
340 |
--------------------------------------------------------------------------------
/SwiftUIPlayground.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 55;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 891F172C27EB880E00564C15 /* BrushList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891F172B27EB880E00564C15 /* BrushList.swift */; };
11 | 8997BE8C27EB5FDA00CAAC6D /* SwiftUIPlayground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BE8B27EB5FDA00CAAC6D /* SwiftUIPlayground.swift */; };
12 | 8997BE8E27EB5FDA00CAAC6D /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BE8D27EB5FDA00CAAC6D /* ContentView.swift */; };
13 | 8997BE9027EB5FDB00CAAC6D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8997BE8F27EB5FDB00CAAC6D /* Assets.xcassets */; };
14 | 8997BE9327EB5FDB00CAAC6D /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8997BE9227EB5FDB00CAAC6D /* Preview Assets.xcassets */; };
15 | 8997BE9A27EB60DB00CAAC6D /* NetFlixIntro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BE9927EB60DB00CAAC6D /* NetFlixIntro.swift */; };
16 | 8997BE9C27EB650E00CAAC6D /* ColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BE9B27EB650E00CAAC6D /* ColorExtensions.swift */; };
17 | 8997BEA227EB684700CAAC6D /* EffectBrush.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BEA127EB684700CAAC6D /* EffectBrush.swift */; };
18 | 8997BEA427EB686800CAAC6D /* EffectLumieres.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8997BEA327EB686800CAAC6D /* EffectLumieres.swift */; };
19 | 89DF435527EC51DA001A68A0 /* LampList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DF435427EC51DA001A68A0 /* LampList.swift */; };
20 | /* End PBXBuildFile section */
21 |
22 | /* Begin PBXFileReference section */
23 | 891F172B27EB880E00564C15 /* BrushList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrushList.swift; sourceTree = ""; };
24 | 8997BE8827EB5FDA00CAAC6D /* SwiftUIPlayground.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUIPlayground.app; sourceTree = BUILT_PRODUCTS_DIR; };
25 | 8997BE8B27EB5FDA00CAAC6D /* SwiftUIPlayground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIPlayground.swift; sourceTree = ""; };
26 | 8997BE8D27EB5FDA00CAAC6D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
27 | 8997BE8F27EB5FDB00CAAC6D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
28 | 8997BE9227EB5FDB00CAAC6D /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
29 | 8997BE9927EB60DB00CAAC6D /* NetFlixIntro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetFlixIntro.swift; sourceTree = ""; };
30 | 8997BE9B27EB650E00CAAC6D /* ColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorExtensions.swift; sourceTree = ""; };
31 | 8997BEA127EB684700CAAC6D /* EffectBrush.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EffectBrush.swift; sourceTree = ""; };
32 | 8997BEA327EB686800CAAC6D /* EffectLumieres.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EffectLumieres.swift; sourceTree = ""; };
33 | 89DF435427EC51DA001A68A0 /* LampList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LampList.swift; sourceTree = ""; };
34 | /* End PBXFileReference section */
35 |
36 | /* Begin PBXFrameworksBuildPhase section */
37 | 8997BE8527EB5FDA00CAAC6D /* Frameworks */ = {
38 | isa = PBXFrameworksBuildPhase;
39 | buildActionMask = 2147483647;
40 | files = (
41 | );
42 | runOnlyForDeploymentPostprocessing = 0;
43 | };
44 | /* End PBXFrameworksBuildPhase section */
45 |
46 | /* Begin PBXGroup section */
47 | 8950D5152807E71F0036E33A /* netfix */ = {
48 | isa = PBXGroup;
49 | children = (
50 | 8997BE9927EB60DB00CAAC6D /* NetFlixIntro.swift */,
51 | 8997BE9B27EB650E00CAAC6D /* ColorExtensions.swift */,
52 | 89DF435427EC51DA001A68A0 /* LampList.swift */,
53 | 8997BEA327EB686800CAAC6D /* EffectLumieres.swift */,
54 | 8997BEA127EB684700CAAC6D /* EffectBrush.swift */,
55 | 891F172B27EB880E00564C15 /* BrushList.swift */,
56 | );
57 | path = netfix;
58 | sourceTree = "";
59 | };
60 | 8997BE7F27EB5FDA00CAAC6D = {
61 | isa = PBXGroup;
62 | children = (
63 | 8997BE8A27EB5FDA00CAAC6D /* SwiftUIPlayground */,
64 | 8997BE8927EB5FDA00CAAC6D /* Products */,
65 | );
66 | sourceTree = "";
67 | };
68 | 8997BE8927EB5FDA00CAAC6D /* Products */ = {
69 | isa = PBXGroup;
70 | children = (
71 | 8997BE8827EB5FDA00CAAC6D /* SwiftUIPlayground.app */,
72 | );
73 | name = Products;
74 | sourceTree = "";
75 | };
76 | 8997BE8A27EB5FDA00CAAC6D /* SwiftUIPlayground */ = {
77 | isa = PBXGroup;
78 | children = (
79 | 8950D5152807E71F0036E33A /* netfix */,
80 | 8997BE8B27EB5FDA00CAAC6D /* SwiftUIPlayground.swift */,
81 | 8997BE8D27EB5FDA00CAAC6D /* ContentView.swift */,
82 | 8997BE8F27EB5FDB00CAAC6D /* Assets.xcassets */,
83 | 8997BE9127EB5FDB00CAAC6D /* Preview Content */,
84 | );
85 | path = SwiftUIPlayground;
86 | sourceTree = "";
87 | };
88 | 8997BE9127EB5FDB00CAAC6D /* Preview Content */ = {
89 | isa = PBXGroup;
90 | children = (
91 | 8997BE9227EB5FDB00CAAC6D /* Preview Assets.xcassets */,
92 | );
93 | path = "Preview Content";
94 | sourceTree = "";
95 | };
96 | /* End PBXGroup section */
97 |
98 | /* Begin PBXNativeTarget section */
99 | 8997BE8727EB5FDA00CAAC6D /* SwiftUIPlayground */ = {
100 | isa = PBXNativeTarget;
101 | buildConfigurationList = 8997BE9627EB5FDB00CAAC6D /* Build configuration list for PBXNativeTarget "SwiftUIPlayground" */;
102 | buildPhases = (
103 | 8997BE8427EB5FDA00CAAC6D /* Sources */,
104 | 8997BE8527EB5FDA00CAAC6D /* Frameworks */,
105 | 8997BE8627EB5FDA00CAAC6D /* Resources */,
106 | );
107 | buildRules = (
108 | );
109 | dependencies = (
110 | );
111 | name = SwiftUIPlayground;
112 | productName = NetflixAnimation;
113 | productReference = 8997BE8827EB5FDA00CAAC6D /* SwiftUIPlayground.app */;
114 | productType = "com.apple.product-type.application";
115 | };
116 | /* End PBXNativeTarget section */
117 |
118 | /* Begin PBXProject section */
119 | 8997BE8027EB5FDA00CAAC6D /* Project object */ = {
120 | isa = PBXProject;
121 | attributes = {
122 | BuildIndependentTargetsInParallel = 1;
123 | LastSwiftUpdateCheck = 1330;
124 | LastUpgradeCheck = 1330;
125 | TargetAttributes = {
126 | 8997BE8727EB5FDA00CAAC6D = {
127 | CreatedOnToolsVersion = 13.3;
128 | };
129 | };
130 | };
131 | buildConfigurationList = 8997BE8327EB5FDA00CAAC6D /* Build configuration list for PBXProject "SwiftUIPlayground" */;
132 | compatibilityVersion = "Xcode 13.0";
133 | developmentRegion = en;
134 | hasScannedForEncodings = 0;
135 | knownRegions = (
136 | en,
137 | Base,
138 | );
139 | mainGroup = 8997BE7F27EB5FDA00CAAC6D;
140 | productRefGroup = 8997BE8927EB5FDA00CAAC6D /* Products */;
141 | projectDirPath = "";
142 | projectRoot = "";
143 | targets = (
144 | 8997BE8727EB5FDA00CAAC6D /* SwiftUIPlayground */,
145 | );
146 | };
147 | /* End PBXProject section */
148 |
149 | /* Begin PBXResourcesBuildPhase section */
150 | 8997BE8627EB5FDA00CAAC6D /* Resources */ = {
151 | isa = PBXResourcesBuildPhase;
152 | buildActionMask = 2147483647;
153 | files = (
154 | 8997BE9327EB5FDB00CAAC6D /* Preview Assets.xcassets in Resources */,
155 | 8997BE9027EB5FDB00CAAC6D /* Assets.xcassets in Resources */,
156 | );
157 | runOnlyForDeploymentPostprocessing = 0;
158 | };
159 | /* End PBXResourcesBuildPhase section */
160 |
161 | /* Begin PBXSourcesBuildPhase section */
162 | 8997BE8427EB5FDA00CAAC6D /* Sources */ = {
163 | isa = PBXSourcesBuildPhase;
164 | buildActionMask = 2147483647;
165 | files = (
166 | 8997BE8E27EB5FDA00CAAC6D /* ContentView.swift in Sources */,
167 | 8997BEA427EB686800CAAC6D /* EffectLumieres.swift in Sources */,
168 | 8997BE8C27EB5FDA00CAAC6D /* SwiftUIPlayground.swift in Sources */,
169 | 8997BE9C27EB650E00CAAC6D /* ColorExtensions.swift in Sources */,
170 | 891F172C27EB880E00564C15 /* BrushList.swift in Sources */,
171 | 8997BEA227EB684700CAAC6D /* EffectBrush.swift in Sources */,
172 | 8997BE9A27EB60DB00CAAC6D /* NetFlixIntro.swift in Sources */,
173 | 89DF435527EC51DA001A68A0 /* LampList.swift in Sources */,
174 | );
175 | runOnlyForDeploymentPostprocessing = 0;
176 | };
177 | /* End PBXSourcesBuildPhase section */
178 |
179 | /* Begin XCBuildConfiguration section */
180 | 8997BE9427EB5FDB00CAAC6D /* Debug */ = {
181 | isa = XCBuildConfiguration;
182 | buildSettings = {
183 | ALWAYS_SEARCH_USER_PATHS = NO;
184 | CLANG_ANALYZER_NONNULL = YES;
185 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
186 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
187 | CLANG_ENABLE_MODULES = YES;
188 | CLANG_ENABLE_OBJC_ARC = YES;
189 | CLANG_ENABLE_OBJC_WEAK = YES;
190 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
191 | CLANG_WARN_BOOL_CONVERSION = YES;
192 | CLANG_WARN_COMMA = YES;
193 | CLANG_WARN_CONSTANT_CONVERSION = YES;
194 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
195 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
196 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
197 | CLANG_WARN_EMPTY_BODY = YES;
198 | CLANG_WARN_ENUM_CONVERSION = YES;
199 | CLANG_WARN_INFINITE_RECURSION = YES;
200 | CLANG_WARN_INT_CONVERSION = YES;
201 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
202 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
203 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
204 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
205 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
206 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
207 | CLANG_WARN_STRICT_PROTOTYPES = YES;
208 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
209 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
210 | CLANG_WARN_UNREACHABLE_CODE = YES;
211 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
212 | COPY_PHASE_STRIP = NO;
213 | DEBUG_INFORMATION_FORMAT = dwarf;
214 | ENABLE_STRICT_OBJC_MSGSEND = YES;
215 | ENABLE_TESTABILITY = YES;
216 | GCC_C_LANGUAGE_STANDARD = gnu11;
217 | GCC_DYNAMIC_NO_PIC = NO;
218 | GCC_NO_COMMON_BLOCKS = YES;
219 | GCC_OPTIMIZATION_LEVEL = 0;
220 | GCC_PREPROCESSOR_DEFINITIONS = (
221 | "DEBUG=1",
222 | "$(inherited)",
223 | );
224 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
225 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
226 | GCC_WARN_UNDECLARED_SELECTOR = YES;
227 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
228 | GCC_WARN_UNUSED_FUNCTION = YES;
229 | GCC_WARN_UNUSED_VARIABLE = YES;
230 | IPHONEOS_DEPLOYMENT_TARGET = 15.4;
231 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
232 | MTL_FAST_MATH = YES;
233 | ONLY_ACTIVE_ARCH = YES;
234 | SDKROOT = iphoneos;
235 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
236 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
237 | };
238 | name = Debug;
239 | };
240 | 8997BE9527EB5FDB00CAAC6D /* Release */ = {
241 | isa = XCBuildConfiguration;
242 | buildSettings = {
243 | ALWAYS_SEARCH_USER_PATHS = NO;
244 | CLANG_ANALYZER_NONNULL = YES;
245 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
246 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
247 | CLANG_ENABLE_MODULES = YES;
248 | CLANG_ENABLE_OBJC_ARC = YES;
249 | CLANG_ENABLE_OBJC_WEAK = YES;
250 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
251 | CLANG_WARN_BOOL_CONVERSION = YES;
252 | CLANG_WARN_COMMA = YES;
253 | CLANG_WARN_CONSTANT_CONVERSION = YES;
254 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
255 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
256 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
257 | CLANG_WARN_EMPTY_BODY = YES;
258 | CLANG_WARN_ENUM_CONVERSION = YES;
259 | CLANG_WARN_INFINITE_RECURSION = YES;
260 | CLANG_WARN_INT_CONVERSION = YES;
261 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
262 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
263 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
264 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
265 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
266 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
267 | CLANG_WARN_STRICT_PROTOTYPES = YES;
268 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
269 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
270 | CLANG_WARN_UNREACHABLE_CODE = YES;
271 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
272 | COPY_PHASE_STRIP = NO;
273 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
274 | ENABLE_NS_ASSERTIONS = NO;
275 | ENABLE_STRICT_OBJC_MSGSEND = YES;
276 | GCC_C_LANGUAGE_STANDARD = gnu11;
277 | GCC_NO_COMMON_BLOCKS = YES;
278 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
279 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
280 | GCC_WARN_UNDECLARED_SELECTOR = YES;
281 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
282 | GCC_WARN_UNUSED_FUNCTION = YES;
283 | GCC_WARN_UNUSED_VARIABLE = YES;
284 | IPHONEOS_DEPLOYMENT_TARGET = 15.4;
285 | MTL_ENABLE_DEBUG_INFO = NO;
286 | MTL_FAST_MATH = YES;
287 | SDKROOT = iphoneos;
288 | SWIFT_COMPILATION_MODE = wholemodule;
289 | SWIFT_OPTIMIZATION_LEVEL = "-O";
290 | VALIDATE_PRODUCT = YES;
291 | };
292 | name = Release;
293 | };
294 | 8997BE9727EB5FDB00CAAC6D /* Debug */ = {
295 | isa = XCBuildConfiguration;
296 | buildSettings = {
297 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
298 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
299 | CODE_SIGN_STYLE = Automatic;
300 | CURRENT_PROJECT_VERSION = 1;
301 | DEVELOPMENT_ASSET_PATHS = "\"SwiftUIPlayground/Preview Content\"";
302 | DEVELOPMENT_TEAM = S4G3GQXM69;
303 | ENABLE_PREVIEWS = YES;
304 | GENERATE_INFOPLIST_FILE = YES;
305 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
306 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
307 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
308 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
309 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
310 | IPHONEOS_DEPLOYMENT_TARGET = 14.4;
311 | LD_RUNPATH_SEARCH_PATHS = (
312 | "$(inherited)",
313 | "@executable_path/Frameworks",
314 | );
315 | MARKETING_VERSION = 1.0;
316 | PRODUCT_BUNDLE_IDENTIFIER = com.mutualmobile.SwiftUIPlayground;
317 | PRODUCT_NAME = SwiftUIPlayground;
318 | SWIFT_EMIT_LOC_STRINGS = YES;
319 | SWIFT_VERSION = 5.0;
320 | TARGETED_DEVICE_FAMILY = "1,2";
321 | };
322 | name = Debug;
323 | };
324 | 8997BE9827EB5FDB00CAAC6D /* Release */ = {
325 | isa = XCBuildConfiguration;
326 | buildSettings = {
327 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
328 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
329 | CODE_SIGN_STYLE = Automatic;
330 | CURRENT_PROJECT_VERSION = 1;
331 | DEVELOPMENT_ASSET_PATHS = "\"SwiftUIPlayground/Preview Content\"";
332 | DEVELOPMENT_TEAM = S4G3GQXM69;
333 | ENABLE_PREVIEWS = YES;
334 | GENERATE_INFOPLIST_FILE = YES;
335 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
336 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
337 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
338 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
339 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
340 | IPHONEOS_DEPLOYMENT_TARGET = 14.4;
341 | LD_RUNPATH_SEARCH_PATHS = (
342 | "$(inherited)",
343 | "@executable_path/Frameworks",
344 | );
345 | MARKETING_VERSION = 1.0;
346 | PRODUCT_BUNDLE_IDENTIFIER = com.mutualmobile.SwiftUIPlayground;
347 | PRODUCT_NAME = SwiftUIPlayground;
348 | SWIFT_EMIT_LOC_STRINGS = YES;
349 | SWIFT_VERSION = 5.0;
350 | TARGETED_DEVICE_FAMILY = "1,2";
351 | };
352 | name = Release;
353 | };
354 | /* End XCBuildConfiguration section */
355 |
356 | /* Begin XCConfigurationList section */
357 | 8997BE8327EB5FDA00CAAC6D /* Build configuration list for PBXProject "SwiftUIPlayground" */ = {
358 | isa = XCConfigurationList;
359 | buildConfigurations = (
360 | 8997BE9427EB5FDB00CAAC6D /* Debug */,
361 | 8997BE9527EB5FDB00CAAC6D /* Release */,
362 | );
363 | defaultConfigurationIsVisible = 0;
364 | defaultConfigurationName = Release;
365 | };
366 | 8997BE9627EB5FDB00CAAC6D /* Build configuration list for PBXNativeTarget "SwiftUIPlayground" */ = {
367 | isa = XCConfigurationList;
368 | buildConfigurations = (
369 | 8997BE9727EB5FDB00CAAC6D /* Debug */,
370 | 8997BE9827EB5FDB00CAAC6D /* Release */,
371 | );
372 | defaultConfigurationIsVisible = 0;
373 | defaultConfigurationName = Release;
374 | };
375 | /* End XCConfigurationList section */
376 | };
377 | rootObject = 8997BE8027EB5FDA00CAAC6D /* Project object */;
378 | }
379 |
--------------------------------------------------------------------------------