@@ -2,24 +2,33 @@ import SwiftUI
22import Shapes
33
44public struct LineChartStyle : ChartStyle {
5+
56 private let lineType : LineType
67 private let lineColor : Color
78 private let lineWidth : CGFloat
8-
9- public func makeBody( configuration: Self . Configuration ) -> some View {
9+
10+ @Binding private var trimFrom : CGFloat
11+ @Binding private var trimTo : CGFloat
12+
13+ @ViewBuilder
14+ public func makeBody( configuration: Configuration ) -> some View {
1015 switch lineType {
1116 case . line:
12- return AnyView ( Line ( unitData: configuration. dataMatrix. map { $0. reduce ( 0 , + ) } )
13- . stroke ( self . lineColor, style: . init( lineWidth: self . lineWidth, lineCap: . round) ) )
17+ Line ( unitData: configuration. dataMatrix. map { $0. reduce ( 0 , + ) } )
18+ . trim ( from: trimFrom, to: trimTo)
19+ . stroke ( lineColor, style: . init( lineWidth: lineWidth, lineCap: . round) )
1420 case . quadCurve:
15- return AnyView ( QuadCurve ( unitData: configuration. dataMatrix. map { $0. reduce ( 0 , + ) } )
16- . stroke ( self . lineColor, style: . init( lineWidth: self . lineWidth, lineCap: . round) ) )
21+ QuadCurve ( unitData: configuration. dataMatrix. map { $0. reduce ( 0 , + ) } )
22+ . trim ( from: trimFrom, to: trimTo)
23+ . stroke ( lineColor, style: . init( lineWidth: lineWidth, lineCap: . round) )
1724 }
1825 }
1926
20- public init ( _ lineType: LineType = . quadCurve, lineColor: Color = . accentColor, lineWidth: CGFloat = 1 ) {
27+ public init ( _ lineType: LineType = . quadCurve, lineColor: Color = . accentColor, lineWidth: CGFloat = 1 , trimFrom : Binding < CGFloat > = . constant ( 0 ) , trimTo : Binding < CGFloat > = . constant ( 1 ) ) {
2128 self . lineType = lineType
2229 self . lineColor = lineColor
2330 self . lineWidth = lineWidth
31+ _trimFrom = trimFrom
32+ _trimTo = trimTo
2433 }
2534}
0 commit comments