Skip to content

Commit 2f00975

Browse files
committed
ChartMarker is now a protocol, and we have ChartMarkerView/Image helpers
1 parent f49ef5f commit 2f00975

File tree

10 files changed

+241
-46
lines changed

10 files changed

+241
-46
lines changed

Charts/Charts.xcodeproj/project.pbxproj

+16
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@
5858
5B613D9F1D50EC5D000F1E98 /* RadarChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613D9E1D50EC5D000F1E98 /* RadarChartDataEntry.swift */; };
5959
5B613DA01D50EC5D000F1E98 /* RadarChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613D9E1D50EC5D000F1E98 /* RadarChartDataEntry.swift */; };
6060
5B613DA11D50EC5D000F1E98 /* RadarChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613D9E1D50EC5D000F1E98 /* RadarChartDataEntry.swift */; };
61+
5B613DAB1D526B60000F1E98 /* ChartMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAA1D526B60000F1E98 /* ChartMarkerView.swift */; };
62+
5B613DAC1D526B60000F1E98 /* ChartMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAA1D526B60000F1E98 /* ChartMarkerView.swift */; };
63+
5B613DAD1D526B60000F1E98 /* ChartMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAA1D526B60000F1E98 /* ChartMarkerView.swift */; };
64+
5B613DAF1D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAE1D526BBF000F1E98 /* ChartMarkerImage.swift */; };
65+
5B613DB01D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAE1D526BBF000F1E98 /* ChartMarkerImage.swift */; };
66+
5B613DB11D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DAE1D526BBF000F1E98 /* ChartMarkerImage.swift */; };
6167
5B6556F71AB72BA000FFBFD3 /* ChartComponentBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6556F61AB72BA000FFBFD3 /* ChartComponentBase.swift */; };
6268
5B6654D91BB0A86F00890030 /* ChartDefaultAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6654D51BB0A86F00890030 /* ChartDefaultAxisValueFormatter.swift */; };
6369
5B6654DA1BB0A86F00890030 /* ChartFillFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6654D61BB0A86F00890030 /* ChartFillFormatter.swift */; };
@@ -424,6 +430,8 @@
424430
5B613D961D50E597000F1E98 /* PieChartHighlighter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PieChartHighlighter.swift; sourceTree = "<group>"; };
425431
5B613D971D50E597000F1E98 /* RadarChartHighlighter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadarChartHighlighter.swift; sourceTree = "<group>"; };
426432
5B613D9E1D50EC5D000F1E98 /* RadarChartDataEntry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadarChartDataEntry.swift; sourceTree = "<group>"; };
433+
5B613DAA1D526B60000F1E98 /* ChartMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartMarkerView.swift; sourceTree = "<group>"; };
434+
5B613DAE1D526BBF000F1E98 /* ChartMarkerImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartMarkerImage.swift; sourceTree = "<group>"; };
427435
5B6556F61AB72BA000FFBFD3 /* ChartComponentBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartComponentBase.swift; sourceTree = "<group>"; };
428436
5B6654D51BB0A86F00890030 /* ChartDefaultAxisValueFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartDefaultAxisValueFormatter.swift; sourceTree = "<group>"; };
429437
5B6654D61BB0A86F00890030 /* ChartFillFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartFillFormatter.swift; sourceTree = "<group>"; };
@@ -743,6 +751,8 @@
743751
5BA8EC6B1A9D151C00CE82E1 /* ChartLegend.swift */,
744752
5BA8EC6C1A9D151C00CE82E1 /* ChartLimitLine.swift */,
745753
5B6A546A1AA5C23F000F57C2 /* ChartMarker.swift */,
754+
5B613DAE1D526BBF000F1E98 /* ChartMarkerImage.swift */,
755+
5B613DAA1D526B60000F1E98 /* ChartMarkerView.swift */,
746756
5BA8EC6D1A9D151C00CE82E1 /* ChartXAxis.swift */,
747757
5BA8EC6E1A9D151C00CE82E1 /* ChartYAxis.swift */,
748758
);
@@ -1091,6 +1101,7 @@
10911101
659400B61BF463C1004F9C27 /* ChartData.swift in Sources */,
10921102
5B680D221A9D17C30026A057 /* ChartXAxis.swift in Sources */,
10931103
659400A21BF463C1004F9C27 /* BarChartDataEntry.swift in Sources */,
1104+
5B613DAF1D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */,
10941105
5BCAA7501C7CAD4C00F83F3B /* AnimatedViewPortJob.swift in Sources */,
10951106
5B6A54A31AA66B7C000F57C2 /* LineChartView.swift in Sources */,
10961107
5B6A54891AA66A1A000F57C2 /* PieChartRenderer.swift in Sources */,
@@ -1118,6 +1129,7 @@
11181129
5B6A548D1AA66A60000F57C2 /* ChartLegendRenderer.swift in Sources */,
11191130
65F06F941BE812210074498D /* IBarLineScatterCandleBubbleChartDataSet.swift in Sources */,
11201131
5BB6EC1D1ACC28AB006E9C25 /* ChartTransformerHorizontalBarChart.swift in Sources */,
1132+
5B613DAB1D526B60000F1E98 /* ChartMarkerView.swift in Sources */,
11211133
5B613D8F1D50DEE8000F1E98 /* CombinedChartDataProvider.swift in Sources */,
11221134
5B680D271A9D17C30026A057 /* ChartColorTemplates.swift in Sources */,
11231135
659400C21BF463C1004F9C27 /* LineRadarChartDataSet.swift in Sources */,
@@ -1229,6 +1241,7 @@
12291241
65B3F5E91C7370E5000983D0 /* BarChartDataEntry.swift in Sources */,
12301242
65B3F5EA1C7370E5000983D0 /* BarChartDataSet.swift in Sources */,
12311243
65B3F5EB1C7370E5000983D0 /* BarLineScatterCandleBubbleChartData.swift in Sources */,
1244+
5B613DB11D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */,
12321245
65B3F5EC1C7370E5000983D0 /* BarLineScatterCandleBubbleChartDataSet.swift in Sources */,
12331246
65B3F5ED1C7370E5000983D0 /* BubbleChartData.swift in Sources */,
12341247
65B3F5EE1C7370E5000983D0 /* BubbleChartDataEntry.swift in Sources */,
@@ -1306,6 +1319,7 @@
13061319
65B3F62D1C7370E5000983D0 /* ChartTransformer.swift in Sources */,
13071320
65B3F62E1C7370E5000983D0 /* ChartTransformerHorizontalBarChart.swift in Sources */,
13081321
65B3F62F1C7370E5000983D0 /* ChartUtils.swift in Sources */,
1322+
5B613DAD1D526B60000F1E98 /* ChartMarkerView.swift in Sources */,
13091323
65B3F6301C7370E5000983D0 /* ChartViewPortHandler.swift in Sources */,
13101324
);
13111325
runOnlyForDeploymentPostprocessing = 0;
@@ -1354,6 +1368,7 @@
13541368
A52C5C491BAC5D1100594CDD /* PieChartView.swift in Sources */,
13551369
A52C5C4A1BAC5D1100594CDD /* PieRadarChartViewBase.swift in Sources */,
13561370
A52C5C4B1BAC5D1100594CDD /* RadarChartView.swift in Sources */,
1371+
5B613DB01D526BBF000F1E98 /* ChartMarkerImage.swift in Sources */,
13571372
5B4AC1731C4AB2AF0028D1A6 /* ChartBaseDataSet.swift in Sources */,
13581373
659400A51BF463C1004F9C27 /* BarChartDataSet.swift in Sources */,
13591374
A52C5C4C1BAC5D1100594CDD /* ScatterChartView.swift in Sources */,
@@ -1431,6 +1446,7 @@
14311446
A52C5C8D1BAC5D1200594CDD /* ChartTransformerHorizontalBarChart.swift in Sources */,
14321447
5BCAA7571C7CB0DE00F83F3B /* AnimatedZoomViewJob.swift in Sources */,
14331448
A52C5C8E1BAC5D1200594CDD /* ChartUtils.swift in Sources */,
1449+
5B613DAC1D526B60000F1E98 /* ChartMarkerView.swift in Sources */,
14341450
A52C5C8F1BAC5D1200594CDD /* ChartViewPortHandler.swift in Sources */,
14351451
);
14361452
runOnlyForDeploymentPostprocessing = 0;

Charts/Classes/Components/ChartMarker.swift

+7-39
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// ChartMarker.swift
33
// Charts
44
//
5-
// Created by Daniel Cohen Gindi on 3/3/15.
6-
//
75
// Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
86
// A port of MPAndroidChart for iOS
97
// Licensed under Apache License 2.0
@@ -14,56 +12,26 @@
1412
import Foundation
1513
import CoreGraphics
1614

17-
18-
public class ChartMarker: NSObject
15+
@objc
16+
public protocol ChartMarker: NSObjectProtocol
1917
{
20-
/// The marker image to render
21-
public var image: NSUIImage?
22-
2318
/// Use this to return the desired offset you wish the MarkerView to have on the x-axis.
24-
public var offset: CGPoint = CGPoint()
19+
var offset: CGPoint { get }
2520

2621
/// The marker's size
27-
public var size: CGSize
28-
{
29-
get
30-
{
31-
return image!.size
32-
}
33-
}
34-
35-
public override init()
36-
{
37-
super.init()
38-
}
22+
var size: CGSize { get }
3923

4024
/// Returns the offset for drawing at the specific `point`
4125
///
4226
/// - parameter point: This is the point at which the marker wants to be drawn. You can adjust the offset conditionally based on this argument.
4327
/// - By default returns the self.offset property. You can return any other value to override that.
44-
public func offsetForDrawingAtPos(point: CGPoint) -> CGPoint
45-
{
46-
return offset
47-
}
28+
func offsetForDrawingAtPos(point: CGPoint) -> CGPoint
4829

4930
/// Draws the ChartMarker on the given position on the given context
50-
public func draw(context context: CGContext, point: CGPoint)
51-
{
52-
let offset = self.offsetForDrawingAtPos(point)
53-
let size = self.size
54-
55-
let rect = CGRect(x: point.x + offset.x, y: point.y + offset.y, width: size.width, height: size.height)
56-
57-
NSUIGraphicsPushContext(context)
58-
image!.drawInRect(rect)
59-
NSUIGraphicsPopContext()
60-
}
31+
func draw(context context: CGContext, point: CGPoint)
6132

6233
/// This method enables a custom ChartMarker to update it's content everytime the MarkerView is redrawn according to the data entry it points to.
6334
///
6435
/// - parameter highlight: the highlight object contains information about the highlighted value such as it's dataset-index, the selected range or stack-index (only stacked bar entries).
65-
public func refreshContent(entry entry: ChartDataEntry, highlight: ChartHighlight)
66-
{
67-
// Do nothing here...
68-
}
36+
func refreshContent(entry entry: ChartDataEntry, highlight: ChartHighlight)
6937
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//
2+
// ChartMarkerImage.swift
3+
// Charts
4+
//
5+
// Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6+
// A port of MPAndroidChart for iOS
7+
// Licensed under Apache License 2.0
8+
//
9+
// https://github.com/danielgindi/Charts
10+
//
11+
12+
import Foundation
13+
import CoreGraphics
14+
15+
16+
public class ChartMarkerImage: NSObject, ChartMarker
17+
{
18+
/// The marker image to render
19+
public var image: NSUIImage?
20+
21+
public var offset: CGPoint = CGPoint()
22+
23+
public var size: CGSize
24+
{
25+
get
26+
{
27+
return image!.size
28+
}
29+
}
30+
31+
public override init()
32+
{
33+
super.init()
34+
}
35+
36+
public func offsetForDrawingAtPos(point: CGPoint) -> CGPoint
37+
{
38+
return offset
39+
}
40+
41+
public func draw(context context: CGContext, point: CGPoint)
42+
{
43+
let offset = self.offsetForDrawingAtPos(point)
44+
let size = self.size
45+
46+
let rect = CGRect(x: point.x + offset.x, y: point.y + offset.y, width: size.width, height: size.height)
47+
48+
NSUIGraphicsPushContext(context)
49+
image!.drawInRect(rect)
50+
NSUIGraphicsPopContext()
51+
}
52+
53+
public func refreshContent(entry entry: ChartDataEntry, highlight: ChartHighlight)
54+
{
55+
// Do nothing here...
56+
}
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
//
2+
// ChartMarkerView.swift
3+
// Charts
4+
//
5+
// Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6+
// A port of MPAndroidChart for iOS
7+
// Licensed under Apache License 2.0
8+
//
9+
// https://github.com/danielgindi/Charts
10+
//
11+
12+
import Foundation
13+
import CoreGraphics
14+
15+
#if !os(OSX)
16+
import UIKit
17+
#endif
18+
19+
public class ChartMarkerView: NSUIView, ChartMarker
20+
{
21+
public var offset: CGPoint = CGPoint()
22+
23+
public var size: CGSize
24+
{
25+
get
26+
{
27+
return self.frame.size
28+
}
29+
}
30+
31+
public func offsetForDrawingAtPos(point: CGPoint) -> CGPoint
32+
{
33+
return offset
34+
}
35+
36+
public func draw(context context: CGContext, point: CGPoint)
37+
{
38+
let offset = self.offsetForDrawingAtPos(point)
39+
let size = self.size
40+
41+
let rect = CGRect(x: point.x + offset.x, y: point.y + offset.y, width: size.width, height: size.height)
42+
43+
CGContextSaveGState(context)
44+
CGContextTranslateCTM(context, rect.origin.x, rect.origin.y)
45+
NSUIGraphicsPushContext(context)
46+
self.nsuiLayer?.renderInContext(context)
47+
NSUIGraphicsPopContext()
48+
CGContextRestoreGState(context)
49+
}
50+
51+
public func refreshContent(entry entry: ChartDataEntry, highlight: ChartHighlight)
52+
{
53+
// Do nothing here...
54+
}
55+
56+
@objc
57+
public class func viewFromXib() -> ChartMarkerView
58+
{
59+
return NSBundle.mainBundle().loadNibNamed(
60+
String(self),
61+
owner: nil,
62+
options: nil)[0] as! ChartMarkerView
63+
}
64+
65+
}

ChartsDemo/ChartsDemo.xcodeproj/project.pbxproj

+20
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
5B57BBB51A9B26AA0036A6CC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB41A9B26AA0036A6CC /* main.m */; };
4040
5B57BBB81A9B26AA0036A6CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */; };
4141
5B57BBBB1A9B26AA0036A6CC /* DemoListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */; };
42+
5B613DA41D526AD5000F1E98 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DA31D526AD5000F1E98 /* [email protected] */; };
43+
5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */; };
44+
5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */; };
4245
5B7B3AD81C437CBC001C109B /* RealmDemoListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7B3AD61C437CBC001C109B /* RealmDemoListViewController.m */; };
4346
5B7B3AD91C437CBC001C109B /* RealmDemoListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B7B3AD71C437CBC001C109B /* RealmDemoListViewController.xib */; };
4447
5B7B3ADF1C437F61001C109B /* RealmCandleChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7B3ADD1C437F61001C109B /* RealmCandleChartViewController.m */; };
@@ -226,6 +229,9 @@
226229
5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
227230
5B57BBB91A9B26AA0036A6CC /* DemoListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DemoListViewController.h; sourceTree = "<group>"; };
228231
5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DemoListViewController.m; sourceTree = "<group>"; };
232+
5B613DA31D526AD5000F1E98 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
233+
5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadarMarkerView.swift; sourceTree = "<group>"; };
234+
5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RadarMarkerView.xib; sourceTree = "<group>"; };
229235
5B7B3AD51C437CBC001C109B /* RealmDemoListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealmDemoListViewController.h; sourceTree = "<group>"; };
230236
5B7B3AD61C437CBC001C109B /* RealmDemoListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RealmDemoListViewController.m; sourceTree = "<group>"; };
231237
5B7B3AD71C437CBC001C109B /* RealmDemoListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RealmDemoListViewController.xib; sourceTree = "<group>"; };
@@ -408,6 +414,14 @@
408414
path = "Supporting Files";
409415
sourceTree = "<group>";
410416
};
417+
5B613DA21D526AD5000F1E98 /* markers */ = {
418+
isa = PBXGroup;
419+
children = (
420+
5B613DA31D526AD5000F1E98 /* [email protected] */,
421+
);
422+
path = markers;
423+
sourceTree = "<group>";
424+
};
411425
5B8E08781C635B5200438BAF /* Products */ = {
412426
isa = PBXGroup;
413427
children = (
@@ -435,6 +449,7 @@
435449
5B8EAF2F1AB32E15009697AA /* Images.xcassets */,
436450
5B43161E1AB8D8AE0009FCAA /* app-icon */,
437451
5B4316301AB8D8B70009FCAA /* launch-image */,
452+
5B613DA21D526AD5000F1E98 /* markers */,
438453
);
439454
path = Resources;
440455
sourceTree = "<group>";
@@ -443,6 +458,8 @@
443458
isa = PBXGroup;
444459
children = (
445460
5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */,
461+
5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */,
462+
5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */,
446463
);
447464
path = Components;
448465
sourceTree = "<group>";
@@ -713,6 +730,7 @@
713730
5B4316281AB8D8AE0009FCAA /* [email protected] in Resources */,
714731
5B4316361AB8D8B70009FCAA /* [email protected] in Resources */,
715732
5BEAED2D1ABC160F0013F194 /* CandleStickChartViewController.xib in Resources */,
733+
5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */,
716734
5BD47E611ABB3C91008FCEC6 /* LineChart2ViewController.xib in Resources */,
717735
5BEAED131ABBFB2B0013F194 /* AnotherBarChartViewController.xib in Resources */,
718736
5BEAED411ABC1AC60013F194 /* SinusBarChartViewController.xib in Resources */,
@@ -727,6 +745,7 @@
727745
5B4AC1571C47EDC50028D1A6 /* RealmRadarChartViewController.xib in Resources */,
728746
5B4316381AB8D8B70009FCAA /* [email protected] in Resources */,
729747
5B9624421B38608C007763E2 /* NegativeStackedBarChartViewController.xib in Resources */,
748+
5B613DA41D526AD5000F1E98 /* [email protected] in Resources */,
730749
5BE7E7631C693098000A0377 /* PositiveNegativeBarChartViewController.xib in Resources */,
731750
65BF12B71BFC9B50005C28D9 /* RealmBarChartViewController.xib in Resources */,
732751
5B0CC7861ABB875400665592 /* PieChartViewController.xib in Resources */,
@@ -775,6 +794,7 @@
775794
5BEAED401ABC1AC60013F194 /* SinusBarChartViewController.m in Sources */,
776795
5BE7E7621C693098000A0377 /* PositiveNegativeBarChartViewController.m in Sources */,
777796
5B7B3AE91C4445E7001C109B /* RealmScatterChartViewController.m in Sources */,
797+
5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */,
778798
5B7B3ADF1C437F61001C109B /* RealmCandleChartViewController.m in Sources */,
779799
5B4AC14C1C47E7250028D1A6 /* RealmBubbleChartViewController.m in Sources */,
780800
65BF125A1BFBC6EE005C28D9 /* RealmDemoBaseViewController.m in Sources */,

ChartsDemo/Classes/Components/BalloonMarker.swift

+2-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// BalloonMarker.swift
33
// ChartsDemo
44
//
5-
// Created by Daniel Cohen Gindi on 19/3/15.
6-
//
75
// Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
86
// A port of MPAndroidChart for iOS
97
// Licensed under Apache License 2.0
@@ -12,10 +10,9 @@
1210
//
1311

1412
import Foundation
15-
;
16-
import Charts;
13+
import Charts
1714

18-
public class BalloonMarker: ChartMarker
15+
public class BalloonMarker: ChartMarkerImage
1916
{
2017
public var color: UIColor?
2118
public var arrowSize = CGSize(width: 15, height: 11)

0 commit comments

Comments
 (0)