Source/Charts/Renderers/DataRenderer.swift (32 lines of code) (raw):

// // DataRenderer.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 @objc(ChartDataRenderer) public protocol DataRenderer: Renderer { /// An array of accessibility elements that are presented to the ChartViewBase accessibility methods. /// /// Note that the order of elements in this array determines the order in which they are presented and navigated by /// Accessibility clients such as VoiceOver. /// /// Renderers should ensure that the order of elements makes sense to a client presenting an audio-only interface to a user. /// Subclasses should populate this array in drawData() or drawDataSet() to make the chart accessible. var accessibleChartElements: [NSUIAccessibilityElement] { get } var animator: Animator { get } func drawData(context: CGContext) func drawValues(context: CGContext) func drawExtras(context: CGContext) /// Draws all highlight indicators for the values that are currently highlighted. /// /// - Parameters: /// - indices: the highlighted values func drawHighlighted(context: CGContext, indices: [Highlight]) /// An opportunity for initializing internal buffers used for rendering with a new size. /// Since this might do memory allocations, it should only be called if necessary. func initBuffers() func isDrawingValuesAllowed(dataProvider: ChartDataProvider?) -> Bool /// Creates an ```NSUIAccessibilityElement``` that acts as the first and primary header describing a chart view. /// /// - Parameters: /// - chart: The chartView object being described /// - data: A non optional data source about the chart /// - defaultDescription: A simple string describing the type/design of Chart. /// - Returns: A header ```NSUIAccessibilityElement``` that can be added to accessibleChartElements. func createAccessibleHeader(usingChart chart: ChartViewBase, andData data: ChartData, withDefaultDescription defaultDescription: String) -> NSUIAccessibilityElement } internal struct AccessibleHeader { static func create(usingChart chart: ChartViewBase, andData data: ChartData, withDefaultDescription defaultDescription: String = "Chart") -> NSUIAccessibilityElement { let chartDescriptionText = chart.chartDescription.text ?? defaultDescription let dataSetDescriptions = data.map { $0.label ?? "" } let dataSetDescriptionText = dataSetDescriptions.joined(separator: ", ") let element = NSUIAccessibilityElement(accessibilityContainer: chart) element.accessibilityLabel = chartDescriptionText + ". \(data.count) dataset\(data.count == 1 ? "" : "s"). \(dataSetDescriptionText)" element.accessibilityFrame = chart.bounds element.isHeader = true return element } }