Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. class GradientMaskLineRenderer: LineChartRenderer {
  2. override init(dataProvider: LineChartDataProvider, animator: Animator, viewPortHandler: ViewPortHandler) {
  3. super.init(dataProvider: dataProvider, animator: animator, viewPortHandler: viewPortHandler)
  4. }
  5.  
  6. override func drawFilledPath(context: CGContext, path: CGPath, fill: Fill, fillAlpha: CGFloat) {
  7. let rect = viewPortHandler.contentRect
  8.  
  9. let colorSpace = CGColorSpaceCreateDeviceGray()
  10. let bitmapContext = CGContext(
  11. data: nil,
  12. width: Int(rect.size.width),
  13. height: Int(rect.size.height),
  14. bitsPerComponent: 8,
  15. bytesPerRow: Int(rect.size.width),
  16. space: colorSpace,
  17. bitmapInfo: CGImageAlphaInfo.none.rawValue
  18. )!
  19.  
  20. let colors = [UIColor.white.cgColor, UIColor.black.cgColor] as CFArray
  21. let gradient = CGGradient(colorsSpace: colorSpace, colors: colors, locations: nil)!
  22.  
  23. bitmapContext.drawLinearGradient(
  24. gradient,
  25. start: CGPoint(x: 0, y: 0),
  26. end: CGPoint(x: 0, y: rect.size.height),
  27. options: [.drawsAfterEndLocation, .drawsBeforeStartLocation]
  28. )
  29.  
  30. let mask = bitmapContext.makeImage()!
  31. context.clip(to: rect, mask: mask)
  32.  
  33. super.drawFilledPath(context: context, path: path, fill: fill, fillAlpha: fillAlpha)
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement