changeset 116:5057c45046c1

Add default initializers
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Mon, 09 Aug 2021 16:32:45 +0100
parents f90a675e5e95
children 7cdc06d6a9cc
files Sources/StockCharts/CapsuleChart/CapsuleChartView.swift Sources/StockCharts/LineChart/Helpers/ChartLabel.swift Sources/StockCharts/LineChart/Helpers/IndicatorPoint.swift Sources/StockCharts/LineChart/Helpers/LineView.swift Sources/StockCharts/LineChart/LineChartController.swift Sources/StockCharts/LineChart/LineChartStyle.swift Sources/StockCharts/LineChart/LineChartView.swift Sources/StockChartsTests/Info.plist Sources/StockChartsTests/StockChartsTests.swift Sources/StockChartsWatchOS/Info.plist Sources/StockChartsWatchOS/StockChartsWatchOS.h Sources/StockChartsWatchOSTests/Info.plist Sources/StockChartsWatchOSTests/StockChartsWatchOSTests.swift StockCharts.xcodeproj/project.pbxproj StockChartsWatchOS/Info.plist StockChartsWatchOS/StockChartsWatchOS.h StockChartsWatchOSTests/Info.plist StockChartsWatchOSTests/StockChartsWatchOSTests.swift Tests/StockChartsTests/Info.plist Tests/StockChartsTests/StockChartsTests.swift
diffstat 20 files changed, 261 insertions(+), 252 deletions(-) [+]
line wrap: on
line diff
--- a/Sources/StockCharts/CapsuleChart/CapsuleChartView.swift	Thu Aug 05 15:45:42 2021 +0100
+++ b/Sources/StockCharts/CapsuleChart/CapsuleChartView.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -9,11 +9,11 @@
 
 public struct CapsuleChartView: View {
     public var percentageOfWidth: CGFloat
-    public var style: CapsuleChartStyle
+    public var capsuleChartStyle: CapsuleChartStyle
     
     public init(percentageOfWidth: CGFloat, style: CapsuleChartStyle) {
         self.percentageOfWidth = percentageOfWidth
-        self.style = style
+        self.capsuleChartStyle = style
     }
     
     public var body: some View {
@@ -25,7 +25,7 @@
                         .opacity(0.2)
                     
                     Capsule()
-                        .foregroundColor(style.capsuleColor)
+                        .foregroundColor(capsuleChartStyle.capsuleColor)
                         .frame(width: proxy.size.width * percentageOfWidth)
                 }
                 .frame(height: 10)
--- a/Sources/StockCharts/LineChart/Helpers/ChartLabel.swift	Thu Aug 05 15:45:42 2021 +0100
+++ b/Sources/StockCharts/LineChart/Helpers/ChartLabel.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -8,32 +8,26 @@
 import SwiftUI
 
 public struct ChartLabel: View {
-    public var data: [Double]
-    public var dates: [String]?
-    public var hours: [String]?
-    public var style: LineChartStyle
+    public var lineChartController: LineChartController
     
     @Binding var indexPosition: Int  // Data point position
     
     public var body: some View {
         HStack {
-            Group {
-                if let dates = self.dates {
-                    let date = formatStringDate(dates[indexPosition])
-                    Text(date)
-                        .opacity(0.5)
-                }
-                if let hours = self.hours {
-                    let hour = hours[indexPosition]
-                    Text(hour)
-                        .opacity(0.5)
-                }
-                
-                Text("\(data[indexPosition], specifier: "%.2f")")
-                    .foregroundColor(style.labelColor)
-                
+            if let dates = lineChartController.dates {
+                let date = formatStringDate(dates[indexPosition])
+                Text(date)
+                    .opacity(0.5)
             }
-            .font(.caption)
+            
+            if let hours = lineChartController.hours {
+                let hour = hours[indexPosition]
+                Text(hour)
+                    .opacity(0.5)
+            }
+            
+            Text("\(lineChartController.prices[indexPosition], specifier: "%.2f")")
+                .foregroundColor(lineChartController.labelColor)
         }
     }
     
--- a/Sources/StockCharts/LineChart/Helpers/IndicatorPoint.swift	Thu Aug 05 15:45:42 2021 +0100
+++ b/Sources/StockCharts/LineChart/Helpers/IndicatorPoint.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -8,11 +8,11 @@
 import SwiftUI
 
 public struct IndicatorPoint: View {
-    public var style: LineChartStyle
+    public var lineChartController: LineChartController
     
     public var body: some View {
         Circle()
             .frame(width: 20, height: 20)
-            .foregroundColor(style.indicatorPointColor)
+            .foregroundColor(lineChartController.indicatorPointColor)
     }
 }
--- a/Sources/StockCharts/LineChart/Helpers/LineView.swift	Thu Aug 05 15:45:42 2021 +0100
+++ b/Sources/StockCharts/LineChart/Helpers/LineView.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -8,11 +8,7 @@
 import SwiftUI
 
 public struct LineView: View {
-    public var data: [Double]
-    public var dates: [String]?
-    public var hours: [String]?
-    public var dragGesture: Bool?
-    public var style: LineChartStyle
+    public var lineChartController: LineChartController
     
     @Binding var showingIndicators: Bool
     @Binding var indexPosition: Int
@@ -22,19 +18,19 @@
     public var body: some View {
         ZStack {
             GeometryReader { proxy in
-                LinePath(data: data, width: proxy.size.width, height: proxy.size.height, pathPoints: $pathPoints)
+                LinePath(data: lineChartController.prices, width: proxy.size.width, height: proxy.size.height, pathPoints: $pathPoints)
                     .stroke(colorLine(), lineWidth: 2)
             }
             
             if showingIndicators {
-                IndicatorPoint(style: style)
+                IndicatorPoint(lineChartController: lineChartController)
                     .position(x: IndicatorPointPosition.x, y: IndicatorPointPosition.y)
             }
         }
         .rotationEffect(.degrees(180), anchor: .center)
         .rotation3DEffect(.degrees(180), axis: (x: 0.0, y: 1.0, z: 0.0))
         .contentShape(Rectangle())  // Control tappable area
-        .gesture(dragGesture ?? true ?
+        .gesture(lineChartController.dragGesture ?
             LongPressGesture(minimumDuration: 0.2)
                 .sequenced(before: DragGesture(minimumDistance: 0, coordinateSpace: .local))
                 .onChanged({ value in  // Get value of the gesture
@@ -59,14 +55,14 @@
      Color path depending on data.
      */
     public func colorLine() -> Color {
-        var color = style.uptrendLineColor
+        var color = lineChartController.uptrendLineColor
         
         if showingIndicators {
-            color = style.showingIndicatorLineColor
-        } else if data.first! > data.last! {
-            color = style.downtrendLineColor
-        } else if data.first! == data.last! {
-            color = style.flatTrendLineColor
+            color = lineChartController.showingIndicatorLineColor
+        } else if lineChartController.prices.first! > lineChartController.prices.last! {
+            color = lineChartController.downtrendLineColor
+        } else if lineChartController.prices.first! == lineChartController.prices.last! {
+            color = lineChartController.flatTrendLineColor
         }
         
         return color
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockCharts/LineChart/LineChartController.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,55 @@
+//
+//  LineChartController.swift
+//  StockCharts
+//
+//  Created by Dennis Concepción Martín on 5/8/21.
+//
+
+import SwiftUI
+
+public class LineChartController {
+    
+    // MARK: - Data
+    public var prices: [Double]
+    public var dates: [String]?
+    public var hours: [String]?
+    
+    // MARK: - Style
+    public var labelColor: Color
+    public var indicatorPointColor: Color
+    public var showingIndicatorLineColor: Color
+    public var flatTrendLineColor: Color
+    public var uptrendLineColor: Color
+    public var downtrendLineColor: Color
+    
+    // MARK: - Interactions
+    public var dragGesture: Bool = false
+    
+    public init(
+        prices: [Double],
+        dates: [String]? = nil,
+        hours: [String]? = nil,
+        
+        labelColor: Color = .blue,
+        indicatorPointColor: Color = .blue,
+        showingIndicatorLineColor: Color = .blue,
+        flatTrendLineColor: Color = .purple,
+        uptrendLineColor: Color = .green,
+        downtrendLineColor: Color = .red,
+        
+        dragGesture: Bool = false
+    ) {
+        self.prices = prices
+        self.dates = dates
+        self.hours = hours
+        
+        self.labelColor = labelColor
+        self.indicatorPointColor = indicatorPointColor
+        self.showingIndicatorLineColor = showingIndicatorLineColor
+        self.flatTrendLineColor = flatTrendLineColor
+        self.uptrendLineColor = uptrendLineColor
+        self.downtrendLineColor = downtrendLineColor
+        
+        self.dragGesture = dragGesture
+    }
+}
--- a/Sources/StockCharts/LineChart/LineChartStyle.swift	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-//
-//  LineChartStyle.swift
-//  StockCharts
-//
-//  Created by Dennis Concepción Martín on 04/07/2021.
-//
-
-import SwiftUI
-
-public class LineChartStyle {
-    public var labelColor: Color
-    public var indicatorPointColor: Color
-    public var showingIndicatorLineColor: Color
-    public var flatTrendLineColor: Color
-    public var uptrendLineColor: Color
-    public var downtrendLineColor: Color
-    
-    public init(labelColor: Color, indicatorPointColor: Color, showingIndicatorLineColor: Color, flatTrendLineColor: Color, uptrendLineColor: Color, downtrendLineColor: Color) {
-        self.labelColor = labelColor
-        self.indicatorPointColor = indicatorPointColor
-        self.showingIndicatorLineColor = showingIndicatorLineColor
-        self.flatTrendLineColor = flatTrendLineColor
-        self.uptrendLineColor = uptrendLineColor
-        self.downtrendLineColor = downtrendLineColor
-    }
-}
--- a/Sources/StockCharts/LineChart/LineChartView.swift	Thu Aug 05 15:45:42 2021 +0100
+++ b/Sources/StockCharts/LineChart/LineChartView.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -8,32 +8,30 @@
 import SwiftUI
 
 public struct LineChartView: View {
-    public var data: [Double]
-    public var dates: [String]?
-    public var hours: [String]?
-    public var dragGesture: Bool?
-    public var style: LineChartStyle
+    public var lineChartController: LineChartController
     
     @State var showingIndicators = false
     @State var indexPosition = Int()
     
-    public init(data: [Double], dates: [String]?, hours: [String]?, dragGesture: Bool?, style: LineChartStyle) {
-        self.data = data
-        self.dates = dates
-        self.hours = hours
-        self.dragGesture = dragGesture
-        self.style = style
+    public init(lineChartController: LineChartController) {
+        self.lineChartController = lineChartController
     }
     
     public var body: some View {
-        if !data.isEmpty {
+        if lineChartController.prices.isEmpty {
+            
+        } else {
             VStack {
-                if dragGesture ?? true {
-                    ChartLabel(data: data, dates: dates, hours: hours, style: style, indexPosition: $indexPosition)
+                if lineChartController.dragGesture {
+                    ChartLabel(lineChartController: lineChartController, indexPosition: $indexPosition)
                         .opacity(showingIndicators ? 1: 0)
                 }
-
-                LineView(data: data, dates: dates, hours: hours, dragGesture: dragGesture, style: style, showingIndicators: $showingIndicators, indexPosition: $indexPosition)
+                
+                LineView(
+                    lineChartController: lineChartController,
+                    showingIndicators: $showingIndicators,
+                    indexPosition: $indexPosition
+                )
             }
         }
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsTests/Info.plist	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsTests/StockChartsTests.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,33 @@
+//
+//  StockChartsTests.swift
+//  StockChartsTests
+//
+//  Created by Dennis Concepción Martín on 30/4/21.
+//
+
+import XCTest
+@testable import StockCharts
+
+class StockChartsTests: XCTestCase {
+
+    override func setUpWithError() throws {
+        // Put setup code here. This method is called before the invocation of each test method in the class.
+    }
+
+    override func tearDownWithError() throws {
+        // Put teardown code here. This method is called after the invocation of each test method in the class.
+    }
+
+    func testExample() throws {
+        // This is an example of a functional test case.
+        // Use XCTAssert and related functions to verify your tests produce the correct results.
+    }
+
+    func testPerformanceExample() throws {
+        // This is an example of a performance test case.
+        self.measure {
+            // Put the code you want to measure the time of here.
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsWatchOS/Info.plist	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsWatchOS/StockChartsWatchOS.h	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,18 @@
+//
+//  StockChartsWatchOS.h
+//  StockChartsWatchOS
+//
+//  Created by Dennis Concepción Martín on 5/8/21.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for StockChartsWatchOS.
+FOUNDATION_EXPORT double StockChartsWatchOSVersionNumber;
+
+//! Project version string for StockChartsWatchOS.
+FOUNDATION_EXPORT const unsigned char StockChartsWatchOSVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <StockChartsWatchOS/PublicHeader.h>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsWatchOSTests/Info.plist	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sources/StockChartsWatchOSTests/StockChartsWatchOSTests.swift	Mon Aug 09 16:32:45 2021 +0100
@@ -0,0 +1,33 @@
+//
+//  StockChartsWatchOSTests.swift
+//  StockChartsWatchOSTests
+//
+//  Created by Dennis Concepción Martín on 5/8/21.
+//
+
+import XCTest
+@testable import StockChartsWatchOS
+
+class StockChartsWatchOSTests: XCTestCase {
+
+    override func setUpWithError() throws {
+        // Put setup code here. This method is called before the invocation of each test method in the class.
+    }
+
+    override func tearDownWithError() throws {
+        // Put teardown code here. This method is called after the invocation of each test method in the class.
+    }
+
+    func testExample() throws {
+        // This is an example of a functional test case.
+        // Use XCTAssert and related functions to verify your tests produce the correct results.
+    }
+
+    func testPerformanceExample() throws {
+        // This is an example of a performance test case.
+        self.measure {
+            // Put the code you want to measure the time of here.
+        }
+    }
+
+}
--- a/StockCharts.xcodeproj/project.pbxproj	Thu Aug 05 15:45:42 2021 +0100
+++ b/StockCharts.xcodeproj/project.pbxproj	Mon Aug 09 16:32:45 2021 +0100
@@ -8,13 +8,11 @@
 
 /* Begin PBXBuildFile section */
 		950857AE266BDF62005357BA /* CapsuleChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950857AD266BDF62005357BA /* CapsuleChartView.swift */; };
-		954AA39E269209770006FD14 /* LineChartStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AA39D269209770006FD14 /* LineChartStyle.swift */; };
 		954AA3A026920D060006FD14 /* CapsuleChartStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AA39F26920D060006FD14 /* CapsuleChartStyle.swift */; };
 		954CEBEB26BBEEEB00B6E989 /* StockChartsWatchOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 954CEBE226BBEEEB00B6E989 /* StockChartsWatchOS.framework */; };
 		954CEBF026BBEEEB00B6E989 /* StockChartsWatchOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954CEBEF26BBEEEB00B6E989 /* StockChartsWatchOSTests.swift */; };
 		954CEBF226BBEEEB00B6E989 /* StockChartsWatchOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 954CEBE426BBEEEB00B6E989 /* StockChartsWatchOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		954CEBF926BBEF3100B6E989 /* LineChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770B9F263C590C003FA924 /* LineChartView.swift */; };
-		954CEBFA26BBEF3400B6E989 /* LineChartStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954AA39D269209770006FD14 /* LineChartStyle.swift */; };
 		954CEBFB26BBEF3800B6E989 /* ChartLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA2263C5934003FA924 /* ChartLabel.swift */; };
 		954CEBFC26BBEF3B00B6E989 /* IndicatorPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA4263C594C003FA924 /* IndicatorPoint.swift */; };
 		954CEBFD26BBEF3E00B6E989 /* LinePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA6263C596E003FA924 /* LinePath.swift */; };
@@ -29,6 +27,8 @@
 		95770BA5263C594C003FA924 /* IndicatorPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA4263C594C003FA924 /* IndicatorPoint.swift */; };
 		95770BA7263C596E003FA924 /* LinePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA6263C596E003FA924 /* LinePath.swift */; };
 		95770BA9263C5988003FA924 /* LineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95770BA8263C5988003FA924 /* LineView.swift */; };
+		958E4D3226BC3776003177DD /* LineChartController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958E4D3126BC3776003177DD /* LineChartController.swift */; };
+		958E4D3326BC3776003177DD /* LineChartController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958E4D3126BC3776003177DD /* LineChartController.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -50,7 +50,6 @@
 
 /* Begin PBXFileReference section */
 		950857AD266BDF62005357BA /* CapsuleChartView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapsuleChartView.swift; sourceTree = "<group>"; };
-		954AA39D269209770006FD14 /* LineChartStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartStyle.swift; sourceTree = "<group>"; };
 		954AA39F26920D060006FD14 /* CapsuleChartStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapsuleChartStyle.swift; sourceTree = "<group>"; };
 		954CEBE226BBEEEB00B6E989 /* StockChartsWatchOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = StockChartsWatchOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		954CEBE426BBEEEB00B6E989 /* StockChartsWatchOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StockChartsWatchOS.h; sourceTree = "<group>"; };
@@ -70,6 +69,7 @@
 		95770BA6263C596E003FA924 /* LinePath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinePath.swift; sourceTree = "<group>"; };
 		95770BA8263C5988003FA924 /* LineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineView.swift; sourceTree = "<group>"; };
 		95770BAA263C59A9003FA924 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
+		958E4D3126BC3776003177DD /* LineChartController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartController.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -139,9 +139,6 @@
 				95770BAA263C59A9003FA924 /* Package.swift */,
 				95770B85263C57B5003FA924 /* Info.plist */,
 				95770B9B263C57CA003FA924 /* Sources */,
-				95770B9C263C580C003FA924 /* Tests */,
-				954CEBE326BBEEEB00B6E989 /* StockChartsWatchOS */,
-				954CEBEE26BBEEEB00B6E989 /* StockChartsWatchOSTests */,
 				95770B82263C57B5003FA924 /* Products */,
 			);
 			sourceTree = "<group>";
@@ -180,23 +177,18 @@
 			isa = PBXGroup;
 			children = (
 				95770B83263C57B5003FA924 /* StockCharts */,
+				95770B8E263C57B5003FA924 /* StockChartsTests */,
+				954CEBE326BBEEEB00B6E989 /* StockChartsWatchOS */,
+				954CEBEE26BBEEEB00B6E989 /* StockChartsWatchOSTests */,
 			);
 			path = Sources;
 			sourceTree = "<group>";
 		};
-		95770B9C263C580C003FA924 /* Tests */ = {
-			isa = PBXGroup;
-			children = (
-				95770B8E263C57B5003FA924 /* StockChartsTests */,
-			);
-			path = Tests;
-			sourceTree = "<group>";
-		};
 		95770B9E263C58F4003FA924 /* LineChart */ = {
 			isa = PBXGroup;
 			children = (
 				95770B9F263C590C003FA924 /* LineChartView.swift */,
-				954AA39D269209770006FD14 /* LineChartStyle.swift */,
+				958E4D3126BC3776003177DD /* LineChartController.swift */,
 				95770BA1263C5927003FA924 /* Helpers */,
 			);
 			path = LineChart;
@@ -388,10 +380,10 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				954CEBFA26BBEF3400B6E989 /* LineChartStyle.swift in Sources */,
 				954CEBFD26BBEF3E00B6E989 /* LinePath.swift in Sources */,
 				954CEC0026BBEF4A00B6E989 /* CapsuleChartStyle.swift in Sources */,
 				954CEBFE26BBEF4200B6E989 /* LineView.swift in Sources */,
+				958E4D3326BC3776003177DD /* LineChartController.swift in Sources */,
 				954CEBF926BBEF3100B6E989 /* LineChartView.swift in Sources */,
 				954CEBFC26BBEF3B00B6E989 /* IndicatorPoint.swift in Sources */,
 				954CEBFB26BBEF3800B6E989 /* ChartLabel.swift in Sources */,
@@ -415,10 +407,10 @@
 				95770BA3263C5934003FA924 /* ChartLabel.swift in Sources */,
 				954AA3A026920D060006FD14 /* CapsuleChartStyle.swift in Sources */,
 				95770BA7263C596E003FA924 /* LinePath.swift in Sources */,
+				958E4D3226BC3776003177DD /* LineChartController.swift in Sources */,
 				950857AE266BDF62005357BA /* CapsuleChartView.swift in Sources */,
 				95770BA9263C5988003FA924 /* LineView.swift in Sources */,
 				95770BA5263C594C003FA924 /* IndicatorPoint.swift in Sources */,
-				954AA39E269209770006FD14 /* LineChartStyle.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -456,7 +448,7 @@
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
-				INFOPLIST_FILE = StockChartsWatchOS/Info.plist;
+				INFOPLIST_FILE = Sources/StockChartsWatchOS/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
@@ -483,7 +475,7 @@
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
-				INFOPLIST_FILE = StockChartsWatchOS/Info.plist;
+				INFOPLIST_FILE = Sources/StockChartsWatchOS/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
@@ -506,7 +498,7 @@
 				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = MTX83R5H8X;
-				INFOPLIST_FILE = StockChartsWatchOSTests/Info.plist;
+				INFOPLIST_FILE = Sources/StockChartsWatchOSTests/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -527,7 +519,7 @@
 				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = MTX83R5H8X;
-				INFOPLIST_FILE = StockChartsWatchOSTests/Info.plist;
+				INFOPLIST_FILE = Sources/StockChartsWatchOSTests/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
--- a/StockChartsWatchOS/Info.plist	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleVersion</key>
-	<string>$(CURRENT_PROJECT_VERSION)</string>
-</dict>
-</plist>
--- a/StockChartsWatchOS/StockChartsWatchOS.h	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-//
-//  StockChartsWatchOS.h
-//  StockChartsWatchOS
-//
-//  Created by Dennis Concepción Martín on 5/8/21.
-//
-
-#import <Foundation/Foundation.h>
-
-//! Project version number for StockChartsWatchOS.
-FOUNDATION_EXPORT double StockChartsWatchOSVersionNumber;
-
-//! Project version string for StockChartsWatchOS.
-FOUNDATION_EXPORT const unsigned char StockChartsWatchOSVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import <StockChartsWatchOS/PublicHeader.h>
-
-
--- a/StockChartsWatchOSTests/Info.plist	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
--- a/StockChartsWatchOSTests/StockChartsWatchOSTests.swift	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-//
-//  StockChartsWatchOSTests.swift
-//  StockChartsWatchOSTests
-//
-//  Created by Dennis Concepción Martín on 5/8/21.
-//
-
-import XCTest
-@testable import StockChartsWatchOS
-
-class StockChartsWatchOSTests: XCTestCase {
-
-    override func setUpWithError() throws {
-        // Put setup code here. This method is called before the invocation of each test method in the class.
-    }
-
-    override func tearDownWithError() throws {
-        // Put teardown code here. This method is called after the invocation of each test method in the class.
-    }
-
-    func testExample() throws {
-        // This is an example of a functional test case.
-        // Use XCTAssert and related functions to verify your tests produce the correct results.
-    }
-
-    func testPerformanceExample() throws {
-        // This is an example of a performance test case.
-        self.measure {
-            // Put the code you want to measure the time of here.
-        }
-    }
-
-}
--- a/Tests/StockChartsTests/Info.plist	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
--- a/Tests/StockChartsTests/StockChartsTests.swift	Thu Aug 05 15:45:42 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-//
-//  StockChartsTests.swift
-//  StockChartsTests
-//
-//  Created by Dennis Concepción Martín on 30/4/21.
-//
-
-import XCTest
-@testable import StockCharts
-
-class StockChartsTests: XCTestCase {
-
-    override func setUpWithError() throws {
-        // Put setup code here. This method is called before the invocation of each test method in the class.
-    }
-
-    override func tearDownWithError() throws {
-        // Put teardown code here. This method is called after the invocation of each test method in the class.
-    }
-
-    func testExample() throws {
-        // This is an example of a functional test case.
-        // Use XCTAssert and related functions to verify your tests produce the correct results.
-    }
-
-    func testPerformanceExample() throws {
-        // This is an example of a performance test case.
-        self.measure {
-            // Put the code you want to measure the time of here.
-        }
-    }
-
-}