Compare commits

..

1 Commits

Author SHA1 Message Date
Andras Samu ebaaf81d19 feat: new protocol for chained functions, and added support for expli… (#252)
* feat: new protocol for chained functions, and added support for explicit Y ranges. X coming as well

* feat: add new axis interface (#253)
2022-10-24 16:07:51 +02:00
10 changed files with 21 additions and 35 deletions
@@ -41,19 +41,11 @@ public class ChartData: ObservableObject {
}
var normalisedYRange: Double {
if let _ = rangeY {
return 1
}
return (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0)
return rangeY == nil ? (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) : 1
}
var normalisedXRange: Double {
if let _ = rangeX {
return 1
}
return (normalisedValues.max() ?? 0.0) - (normalisedValues.min() ?? 0.0)
return rangeX == nil ? (normalisedValues.max() ?? 0.0) - (normalisedValues.min() ?? 0.0) : 1
}
var isInNegativeDomain: Bool {
@@ -201,7 +201,7 @@ extension Path {
let convertedXValues = data.map { CGFloat($0.0) * rect.width }
let convertedYPoints = data.map { CGFloat($0.1) * rect.height }
path.move(to: .zero)
path.move(to: CGPoint(x: convertedXValues[0], y: 0))
var point1 = CGPoint(x: convertedXValues[0], y: convertedYPoints[0])
path.addLine(to: point1)
for pointIndex in 1..<data.count {
@@ -8,4 +8,10 @@ extension View {
public func chartStyle(_ style: ChartStyle) -> some View {
self.environmentObject(style)
}
public func toStandardCoordinateSystem() -> some View {
self
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
}
}
@@ -17,13 +17,11 @@ struct ChartGridShape_Previews: PreviewProvider {
Group {
ChartGridShape(numberOfHorizontalLines: 5, numberOfVerticalLines: 0)
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
ChartGridShape(numberOfHorizontalLines: 4, numberOfVerticalLines: 4)
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
.padding()
}
@@ -43,8 +43,7 @@ public struct Line: View {
IndicatorPoint()
.position(self.getClosestPointOnPath(geometry: geometry,
touchLocation: self.touchLocation))
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
.onAppear {
@@ -14,14 +14,12 @@ struct LineBackgroundShape_Previews: PreviewProvider {
GeometryReader { geometry in
LineBackgroundShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)])
.fill(Color.red)
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
GeometryReader { geometry in
LineBackgroundShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)])
.fill(Color.blue)
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
}
@@ -11,7 +11,6 @@ struct LineBackgroundShapeView: View {
backgroundColor.endColor]),
startPoint: .bottom,
endPoint: .top))
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
@@ -20,13 +20,11 @@ struct LineShape_Previews: PreviewProvider {
Group {
LineShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)])
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
LineShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)], lineStyle: .straight)
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
}
@@ -31,8 +31,7 @@ struct LineShapeView: View, Animatable {
startPoint: .leading,
endPoint: .trailing),
style: StrokeStyle(lineWidth: chartProperties.lineWidth, lineJoin: .round))
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
.clipped()
if chartProperties.showChartMarks {
MarkerShape(data: chartData.normalisedData)
@@ -40,8 +39,7 @@ struct LineShapeView: View, Animatable {
.fill(.white,
strokeBorder: chartMarkColor,
lineWidth: chartProperties.lineWidth)
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
}
@@ -13,13 +13,11 @@ struct MarkerShape_Previews: PreviewProvider {
Group {
MarkerShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)])
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
MarkerShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)])
.stroke()
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
.toStandardCoordinateSystem()
}
}
}