| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- //
- // ChartMarkerView.swift
- // Charts
- //
- // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
- // A port of MPAndroidChart for iOS
- // Licensed under Apache License 2.0
- //
- // https://github.com/danielgindi/Charts
- //
- import Foundation
- import CoreGraphics
- #if canImport(AppKit)
- import AppKit
- #endif
- @objc(ChartMarkerView)
- open class MarkerView: NSUIView, Marker
- {
- open var offset: CGPoint = CGPoint()
-
- @objc open weak var chartView: ChartViewBase?
-
- open func offsetForDrawing(atPoint point: CGPoint) -> CGPoint
- {
- guard let chart = chartView else { return self.offset }
-
- var offset = self.offset
-
- let width = self.bounds.size.width
- let height = self.bounds.size.height
-
- if point.x + offset.x < 0.0
- {
- offset.x = -point.x
- }
- else if point.x + width + offset.x > chart.bounds.size.width
- {
- offset.x = chart.bounds.size.width - point.x - width
- }
-
- if point.y + offset.y < 0
- {
- offset.y = -point.y
- }
- else if point.y + height + offset.y > chart.bounds.size.height
- {
- offset.y = chart.bounds.size.height - point.y - height
- }
-
- return offset
- }
-
- open func refreshContent(entry: ChartDataEntry, highlight: Highlight)
- {
- // Do nothing here...
- }
-
- open func draw(context: CGContext, point: CGPoint)
- {
- let offset = self.offsetForDrawing(atPoint: point)
-
- context.saveGState()
- context.translateBy(x: point.x + offset.x,
- y: point.y + offset.y)
- NSUIGraphicsPushContext(context)
- self.nsuiLayer?.render(in: context)
- NSUIGraphicsPopContext()
- context.restoreGState()
- }
-
- @objc
- open class func viewFromXib(in bundle: Bundle = .main) -> MarkerView?
- {
- #if !os(OSX)
-
- return bundle.loadNibNamed(
- String(describing: self),
- owner: nil,
- options: nil)?[0] as? MarkerView
- #else
-
- var loadedObjects = NSArray()
- let loadedObjectsPointer = AutoreleasingUnsafeMutablePointer<NSArray?>(&loadedObjects)
-
- if bundle.loadNibNamed(
- NSNib.Name(String(describing: self)),
- owner: nil,
- topLevelObjects: loadedObjectsPointer)
- {
- return loadedObjects[0] as? MarkerView
- }
-
- return nil
- #endif
- }
-
- }
|