Files
ChartView/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift
Andras Samu ac7680320f feat(core): refactoring chart dispalying
now it is possible to add background lines precisely as charts are displayed at correct size
also rewrote basics to conform with Shapes and Animatable protocol
2021-04-04 15:54:15 +02:00

27 lines
1.1 KiB
Swift

import SwiftUI
struct LineShapeView: View, Animatable {
var chartData: ChartData
var geometry: GeometryProxy
var style: ChartStyle
var trimTo: Double = 0
var animatableData: CGFloat {
get { CGFloat(trimTo) }
set { trimTo = Double(newValue) }
}
var body: some View {
LineShape(data: chartData.normalisedPoints)
.trim(from: 0, to: CGFloat(trimTo))
.transform(CGAffineTransform(scaleX: geometry.size.width / CGFloat(chartData.normalisedPoints.count - 1),
y: geometry.size.height / CGFloat(chartData.normalisedRange)))
.stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient,
startPoint: .leading,
endPoint: .trailing),
style: StrokeStyle(lineWidth: 3, lineJoin: .round))
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
}
}