ChartPointsScatterDownTrianglesLayer.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // ChartPointsScatterDownTrianglesLayer.swift
  3. // Loop
  4. //
  5. // Created by Nate Racklyeft on 9/28/16.
  6. // Copyright © 2016 Nathan Racklyeft. All rights reserved.
  7. //
  8. import SwiftCharts
  9. import CoreGraphics
  10. import UIKit
  11. public class ChartPointsScatterDownTrianglesLayer<T: ChartPoint>: ChartPointsScatterLayer<T> {
  12. public required init(
  13. xAxis: ChartAxis,
  14. yAxis: ChartAxis,
  15. chartPoints: [T],
  16. displayDelay: Float,
  17. itemSize: CGSize,
  18. itemFillColor: UIColor,
  19. optimized: Bool = false,
  20. tapSettings: ChartPointsTapSettings<T>? = nil
  21. ) {
  22. // optimized must be set to false because `generateCGLayer` isn't public and can't be overridden
  23. super.init(
  24. xAxis: xAxis,
  25. yAxis: yAxis,
  26. chartPoints: chartPoints,
  27. displayDelay: displayDelay,
  28. itemSize: itemSize,
  29. itemFillColor: itemFillColor,
  30. optimized: false,
  31. tapSettings: tapSettings
  32. )
  33. }
  34. public override func drawChartPointModel(_ context: CGContext, chartPointModel: ChartPointLayerModel<T>, view: UIView) {
  35. let w = self.itemSize.width
  36. let h = self.itemSize.height
  37. let horizontalOffset = -view.frame.origin.x
  38. let verticalOffset = -view.frame.origin.y
  39. let path = CGMutablePath()
  40. path.move(to: CGPoint(x: chartPointModel.screenLoc.x + horizontalOffset, y: chartPointModel.screenLoc.y + verticalOffset + h / 2))
  41. path.addLine(to: CGPoint(x: chartPointModel.screenLoc.x + horizontalOffset + w / 2, y: chartPointModel.screenLoc.y + verticalOffset - h / 2))
  42. path.addLine(to: CGPoint(x: chartPointModel.screenLoc.x + horizontalOffset - w / 2, y: chartPointModel.screenLoc.y + verticalOffset - h / 2))
  43. path.closeSubpath()
  44. context.setFillColor(self.itemFillColor.cgColor)
  45. context.addPath(path)
  46. context.fillPath()
  47. }
  48. }