diff --git a/Charts.xcodeproj/project.pbxproj b/Charts.xcodeproj/project.pbxproj index 1a61360a76..c3c1f24af1 100644 --- a/Charts.xcodeproj/project.pbxproj +++ b/Charts.xcodeproj/project.pbxproj @@ -10,7 +10,7 @@ 00B8BF5901C2D220357B0B2A /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 41DDB768A1D033A34F0EF9E0 /* Media.xcassets */; }; 00BC23EF0E04E17188344403 /* BarChartDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D7184C8A5A60A3522AB9B05 /* BarChartDataProvider.swift */; }; 02A6E6E1A82A27A66B8D08C4 /* MoveViewJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 266E162DA8B29D9AEB6A9397 /* MoveViewJob.swift */; }; - 03960E8148C6AEDACE4B77CC /* IMarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 596963A429D485E3894C4666 /* IMarker.swift */; }; + 03960E8148C6AEDACE4B77CC /* Marker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 596963A429D485E3894C4666 /* Marker.swift */; }; 0511E43EF3FD2CDE7F7F15DB /* ScatterChartDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD37A55B4D85D883E29C744 /* ScatterChartDataProvider.swift */; }; 05253AFC448C107DEF54C2FE /* CombinedChartRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52265C1B343CCC41AF2300E3 /* CombinedChartRenderer.swift */; }; 0529DD51622C8769C1121F90 /* CrossShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 823F7DB281C6C6F069A69605 /* CrossShapeRenderer.swift */; }; @@ -19,14 +19,15 @@ 0A772AEC08246FEC480673E5 /* PieRadarChartViewBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A6C9631C69B2D772BBD9232 /* PieRadarChartViewBase.swift */; }; 0C52C70C6E6EA09BD7426386 /* RadarChartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BBB57D6FA41029B08F26D7B /* RadarChartData.swift */; }; 0CAF514A280FF6A14E2A1A23 /* CombinedChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11EF1FE22549E885C8F40738 /* CombinedChartView.swift */; }; - 0D8A89398F9BD5DCC8D7F976 /* ICandleChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18BFB0A14A5C47A302A597D9 /* ICandleChartDataSet.swift */; }; + 0D8A89398F9BD5DCC8D7F976 /* CandleChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18BFB0A14A5C47A302A597D9 /* CandleChartDataSetProtocol.swift */; }; 11F68AA2EBF822D7208EE002 /* YAxisRendererRadarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA5A16F4A382813C4FE8BDF9 /* YAxisRendererRadarChart.swift */; }; - 1311BEC21E9CC264E971EFAF /* ILineRadarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F7E6A99D82E6AE3804D5A39 /* ILineRadarChartDataSet.swift */; }; - 146EE16342C2BADC92E45BF2 /* ILineScatterCandleRadarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9249AD9AEC8C85772365A128 /* ILineScatterCandleRadarChartDataSet.swift */; }; + 1311BEC21E9CC264E971EFAF /* LineRadarChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F7E6A99D82E6AE3804D5A39 /* LineRadarChartDataSetProtocol.swift */; }; + 146EE16342C2BADC92E45BF2 /* LineScatterCandleRadarChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9249AD9AEC8C85772365A128 /* LineScatterCandleRadarChartDataSetProtocol.swift */; }; 17E994DA88777AA1D8CCFC58 /* BarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31AA65EA27776F8C653C7E8 /* BarChartDataSet.swift */; }; - 203A39685CC96FC625F616E4 /* IHighlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998F2BFE318471AFC05B50AC /* IHighlighter.swift */; }; + 203A39685CC96FC625F616E4 /* Highlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998F2BFE318471AFC05B50AC /* Highlighter.swift */; }; 219192CA6B4895319AB49DCA /* BarLineScatterCandleBubbleRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B1C588E9DF6FFD56D7ADF8E /* BarLineScatterCandleBubbleRenderer.swift */; }; - 224EFF991FBAAC4700CF9B3B /* EquatableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224EFF981FBAAC4700CF9B3B /* EquatableTests.swift */; }; + 2243BBFD1FF156EC00B49D0B /* EquatableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2243BBFB1FF156D000B49D0B /* EquatableTests.swift */; }; + 224EFF991FBAAC4700CF9B3B /* (null) in Sources */ = {isa = PBXBuildFile; }; 23649EFC635A76022F07FFA6 /* PieChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD02157CF8CEE1189BF681DA /* PieChartDataEntry.swift */; }; 23FA50B2730D8C7ACA091C4F /* BarChartRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F279974FE650E57A061B09 /* BarChartRenderer.swift */; }; 24151B0729D77251A8494D70 /* LineRadarRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105FFC9D3773A9C7A60A897F /* LineRadarRenderer.swift */; }; @@ -37,7 +38,7 @@ 2B821AAC3EBD60A73EACBCE6 /* LegendRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F715DB2C56C9E0615542625B /* LegendRenderer.swift */; }; 2BA03CEC36BADCF682F1328B /* LineChartDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFABD027DAF6851088F002AC /* LineChartDataProvider.swift */; }; 2BF85BEA981B359A65E9BF67 /* LineChartTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2E1819D72CD7B6C4A4E8048 /* LineChartTests.swift */; }; - 2C40CFFC8D88BEA70E0A50B0 /* IBubbleChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3788EC55EF908B0805D7C2F /* IBubbleChartDataSet.swift */; }; + 2C40CFFC8D88BEA70E0A50B0 /* BubbleChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3788EC55EF908B0805D7C2F /* BubbleChartDataSetProtocol.swift */; }; 2C879FC24D7A15D70BE4063F /* PieChartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E03A4987F72414A02A0631B /* PieChartData.swift */; }; 2FBA7E982EB57932B9F3E9B5 /* YAxis.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB92A80F861C1362EED8D946 /* YAxis.swift */; }; 3097296AC7FFA994FE4AD312 /* PieRadarHighlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F7B9DF1F2D66E7279771D4 /* PieRadarHighlighter.swift */; }; @@ -57,7 +58,7 @@ 48E875BBD6540BDE1C1B7D3D /* AxisBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7AEFBF4D85B9D2EAAB3071 /* AxisBase.swift */; }; 4E98788ABEF6496C23F3E6C6 /* HorizontalBarHighlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33BE9A97FFA41D3D85CAFFC7 /* HorizontalBarHighlighter.swift */; }; 4FACC6FD308AFB231EB4A93D /* XAxisRendererRadarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC19DC2434D65FFB446A61B7 /* XAxisRendererRadarChart.swift */; }; - 50476F8E6662CAFC1EFE0723 /* IScatterChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 219BC9CEA037F897E92E45D1 /* IScatterChartDataSet.swift */; }; + 50476F8E6662CAFC1EFE0723 /* ScatterChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 219BC9CEA037F897E92E45D1 /* ScatterChartDataSetProtocol.swift */; }; 515E286E6C47594D3FFA3DD1 /* ViewPortHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72EAEBB7CF73E33565FC2896 /* ViewPortHandler.swift */; }; 53A91F6F86740E26FE733639 /* BarLineScatterCandleBubbleChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D717F0808DE7EC8A4AE9C2A /* BarLineScatterCandleBubbleChartDataSet.swift */; }; 56E0F5EA9255B9B92876E040 /* BubbleChartRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2194AA554712E6BA2677F114 /* BubbleChartRenderer.swift */; }; @@ -84,10 +85,10 @@ 7EE6EFE70CF4D8B09CAFCD01 /* AnimatedMoveViewJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA157EFF2F952192C11DF937 /* AnimatedMoveViewJob.swift */; }; 8102A555DD6C93AC1290EA7C /* Fill.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A4CFFFB65819121595F06F1 /* Fill.swift */; }; 81892994002C0640AD858748 /* ChartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = E120E76C6F1B5877D56126DD /* ChartData.swift */; }; - 83BBAF3EDC31FD452F8BF1DB /* IRadarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAD807534620E3B53327F04 /* IRadarChartDataSet.swift */; }; + 83BBAF3EDC31FD452F8BF1DB /* RadarChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAD807534620E3B53327F04 /* RadarChartDataSetProtocol.swift */; }; 846AC09831FA93F66732591B /* YAxisRendererHorizontalBarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAE417AAA0FCA0DD00E77489 /* YAxisRendererHorizontalBarChart.swift */; }; 8A463E2947F211C594CA5E95 /* TransformerHorizontalBarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324C9127B53A8D39C8B49277 /* TransformerHorizontalBarChart.swift */; }; - 8A9FF54E2075A9047CC8E953 /* IShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1D3D13180C2E3893A82546 /* IShapeRenderer.swift */; }; + 8A9FF54E2075A9047CC8E953 /* ShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1D3D13180C2E3893A82546 /* ShapeRenderer.swift */; }; 8BCCD709AACC565613D9DA68 /* CandleStickChartRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD5C6D20243EC2F19069AACD /* CandleStickChartRenderer.swift */; }; 8E1192F7A7152E9DA92C56A9 /* ChartUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AB9062A28AAB9469752A954 /* ChartUtilsTests.swift */; }; 8EF7B3FBE37F72CC030CD865 /* SquareShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FC01A016DFF1BA73AF9182 /* SquareShapeRenderer.swift */; }; @@ -101,14 +102,15 @@ 98E2EEF45E8933E4AD182D58 /* ChartViewBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EFAD7920F76360ADB3B5F5 /* ChartViewBase.swift */; }; 9C91C151608E2D6E19B1EAD1 /* Range.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F099502DA50C56204E7B744 /* Range.swift */; }; 9F760570BCECB0BF5727AF90 /* BarLineChartViewBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45C6D3723C4E001B119CA0C8 /* BarLineChartViewBase.swift */; }; - A40ACF0CCE96EEE104B0463D /* IValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAA8AA30C377D54D22A577A /* IValueFormatter.swift */; }; + A40ACF0CCE96EEE104B0463D /* ValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAA8AA30C377D54D22A577A /* ValueFormatter.swift */; }; A692D8BDE42717F69DB790BE /* HorizontalBarChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6021C9E424C36116AEA78CC9 /* HorizontalBarChartView.swift */; }; AEE9C4E4AC02B8FB3CD21975 /* ZoomViewJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB3A4F5987E58F3E5BE855F9 /* ZoomViewJob.swift */; }; - AF4AAF3709ED9DDF6362EAE8 /* IBarLineScatterCandleBubbleChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5649B272BF3EBFC8A1EF0C1 /* IBarLineScatterCandleBubbleChartDataSet.swift */; }; + AF4AAF3709ED9DDF6362EAE8 /* BarLineScatterCandleBubbleChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5649B272BF3EBFC8A1EF0C1 /* BarLineScatterCandleBubbleChartDataSetProtocol.swift */; }; B0D28C68BB9A958DC56EB214 /* DefaultValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 107D8F8163EE54D6D9E916B0 /* DefaultValueFormatter.swift */; }; - B13C74B4FF705D7B595D01EF /* IAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD9DF16AF59680A3BB49452 /* IAxisValueFormatter.swift */; }; + B13C74B4FF705D7B595D01EF /* AxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD9DF16AF59680A3BB49452 /* AxisValueFormatter.swift */; }; B539114951455C35BADAE3F3 /* PieChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FB5E3761EF8B4D1E1E1014 /* PieChartDataSet.swift */; }; - B6C9F450D937B87224D29D5C /* IFillFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818AC6B12505B7C0A53D62F9 /* IFillFormatter.swift */; }; + B6BF9A561F91993A00E62A5D /* CombinedChartTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6BF9A551F91993A00E62A5D /* CombinedChartTests.swift */; }; + B6C9F450D937B87224D29D5C /* FillFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818AC6B12505B7C0A53D62F9 /* FillFormatter.swift */; }; B6DCC229615EFE706F64A37D /* LineScatterCandleRadarRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 923206233CA89FD03565FF87 /* LineScatterCandleRadarRenderer.swift */; }; B85DEB06B4C1AFFC8A0E3295 /* CircleShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECE1B1623D3AF69CECAE8562 /* CircleShapeRenderer.swift */; }; BEFD9518F3A74ACF8FA33308 /* Charts.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F9922F0641F7955DC6CD324 /* Charts.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -117,7 +119,7 @@ C20A62D8CB9120523D5FB650 /* LegendEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7C673B9ED4340F550A9283 /* LegendEntry.swift */; }; C2EFB4EC8C97FA9987F1B50D /* RadarChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91EEEDE2AB8F2DA3AFCF0733 /* RadarChartDataEntry.swift */; }; C33E1AF5471A60BA42DAF52E /* RadarHighlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F368CF209744D8F3B85B1028 /* RadarHighlighter.swift */; }; - C3F0DDB7F0A922F0BB7EDB8A /* IBarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A53A9E42FC07FFDACA937C1 /* IBarChartDataSet.swift */; }; + C3F0DDB7F0A922F0BB7EDB8A /* BarChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A53A9E42FC07FFDACA937C1 /* BarChartDataSetProtocol.swift */; }; C7B150D740255670DEB9F455 /* Charts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65AD9E95D9ED4DC0BD73A743 /* Charts.framework */; }; CB785FE9B6B312408D17BC3B /* ChartUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDA09EF973925A110506799 /* ChartUtils.swift */; }; CC7F8198A13249B5DEBBF25E /* AnimatedViewPortJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 710D7C9B2F1DB4A331EE405A /* AnimatedViewPortJob.swift */; }; @@ -133,20 +135,20 @@ E4B2F363414E84C4D4B8A885 /* BubbleChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED352A98860E031F13AFB7 /* BubbleChartView.swift */; }; E50D291A6B6E69BF0B56A67C /* ChartBaseDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9FE42E868A225C116537368 /* ChartBaseDataSet.swift */; }; E68CA3DC66EB638C956E09B8 /* BubbleChartData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EDA3AD550AEFC93C8D15B9C /* BubbleChartData.swift */; }; - E8F0F4F47CD7D72B4EE5A794 /* IChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A32510073A303CBB38E094A /* IChartDataSet.swift */; }; + E8F0F4F47CD7D72B4EE5A794 /* ChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A32510073A303CBB38E094A /* ChartDataSetProtocol.swift */; }; E9FF0ECB5E0CA92DBF4C1BC4 /* Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ED23C354AFE81818D78E645 /* Platform.swift */; }; EAEA60D22CA8C1B7E18D3F7D /* ChartDataEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = F22750328058DEC2F019646F /* ChartDataEntry.swift */; }; EB56849433A76B08606B73EB /* ScatterChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1DD1A0F64266A10EE94194 /* ScatterChartDataSet.swift */; }; ECE7EAE7179A7F57CE9BBD8F /* Legend.swift in Sources */ = {isa = PBXBuildFile; fileRef = E64A75540C627E09080B402A /* Legend.swift */; }; - ECECC58CEF03B1718F8267E8 /* AxisRendererBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C75935E899183DDFA181E2CC /* AxisRendererBase.swift */; }; + ECECC58CEF03B1718F8267E8 /* AxisRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C75935E899183DDFA181E2CC /* AxisRenderer.swift */; }; F100D68395F169B93590FA96 /* HorizontalBarChartRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 539382766378B702660FDFB2 /* HorizontalBarChartRenderer.swift */; }; F103D90FC5DEEA0D7BB4407E /* ChevronUpShapeRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA70259ED16FF80D8EEB0F94 /* ChevronUpShapeRenderer.swift */; }; - F37B07008B8AE7F3909FFB9C /* ChartDataRendererBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0216EDC6A1FE272F4EB19FCF /* ChartDataRendererBase.swift */; }; + F37B07008B8AE7F3909FFB9C /* DataRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0216EDC6A1FE272F4EB19FCF /* DataRenderer.swift */; }; F5A209116FAC68F5903D0B46 /* ChartAnimationEasing.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFB762958EE8E6521563665D /* ChartAnimationEasing.swift */; }; F744C510DA9B85C228BBB335 /* DefaultFillFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6C1BEFDF17404666C7B6054 /* DefaultFillFormatter.swift */; }; - F941C88BF814DF51C465CB95 /* ILineChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 429E88F2729735DC092EE556 /* ILineChartDataSet.swift */; }; + F941C88BF814DF51C465CB95 /* LineChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 429E88F2729735DC092EE556 /* LineChartDataSetProtocol.swift */; }; FA07D034D9C3BC7795184ACA /* LineScatterCandleRadarChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58BD7B14BEA440783ED8D2B /* LineScatterCandleRadarChartDataSet.swift */; }; - FAAD9FF6565DED2652188584 /* IPieChartDataSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2AA6CC89F809DCCD7605B4 /* IPieChartDataSet.swift */; }; + FAAD9FF6565DED2652188584 /* PieChartDataSetProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2AA6CC89F809DCCD7605B4 /* PieChartDataSetProtocol.swift */; }; FD37AAC0270F390FFC470A65 /* ChartDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B73FCEDD3841E7B958F6A9 /* ChartDataProvider.swift */; }; FDBDAFA7A5337C6E3992DACE /* ComponentBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C9A105A7DB64F39DDA648B /* ComponentBase.swift */; }; /* End PBXBuildFile section */ @@ -163,11 +165,11 @@ /* Begin PBXFileReference section */ 0108D5925E21A47DA36A66AA /* BarChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarChartData.swift; path = Source/Charts/Data/Implementations/Standard/BarChartData.swift; sourceTree = ""; }; - 0216EDC6A1FE272F4EB19FCF /* ChartDataRendererBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartDataRendererBase.swift; path = Source/Charts/Renderers/ChartDataRendererBase.swift; sourceTree = ""; }; + 0216EDC6A1FE272F4EB19FCF /* DataRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataRenderer.swift; path = Source/Charts/Renderers/DataRenderer.swift; sourceTree = ""; }; 04F7B9DF1F2D66E7279771D4 /* PieRadarHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PieRadarHighlighter.swift; path = Source/Charts/Highlight/PieRadarHighlighter.swift; sourceTree = ""; }; 0619A877C69A95ECCC440A44 /* LineChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartView.swift; path = Source/Charts/Charts/LineChartView.swift; sourceTree = ""; }; 064989451F5C99C7006E8BB3 /* Snapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Snapshot.swift; path = Tests/Charts/Snapshot.swift; sourceTree = ""; }; - 0BD9DF16AF59680A3BB49452 /* IAxisValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IAxisValueFormatter.swift; path = Source/Charts/Formatters/IAxisValueFormatter.swift; sourceTree = ""; }; + 0BD9DF16AF59680A3BB49452 /* AxisValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AxisValueFormatter.swift; path = Source/Charts/Formatters/AxisValueFormatter.swift; sourceTree = ""; }; 0DABDBBCCE6B3620C967F04A /* LineChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartRenderer.swift; path = Source/Charts/Renderers/LineChartRenderer.swift; sourceTree = ""; }; 0DDE409E9ECF54D2C146A6F0 /* CombinedChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombinedChartData.swift; path = Source/Charts/Data/Implementations/Standard/CombinedChartData.swift; sourceTree = ""; }; 0F099502DA50C56204E7B744 /* Range.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Range.swift; path = Source/Charts/Highlight/Range.swift; sourceTree = ""; }; @@ -177,19 +179,19 @@ 11EF1FE22549E885C8F40738 /* CombinedChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombinedChartView.swift; path = Source/Charts/Charts/CombinedChartView.swift; sourceTree = ""; }; 12409C3EA15787C11AF0D2BC /* ChartDataEntryBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartDataEntryBase.swift; path = Source/Charts/Data/Implementations/Standard/ChartDataEntryBase.swift; sourceTree = ""; }; 18462BFDD9DEE76D51D40503 /* ScatterChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScatterChartView.swift; path = Source/Charts/Charts/ScatterChartView.swift; sourceTree = ""; }; - 18BFB0A14A5C47A302A597D9 /* ICandleChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ICandleChartDataSet.swift; path = Source/Charts/Data/Interfaces/ICandleChartDataSet.swift; sourceTree = ""; }; + 18BFB0A14A5C47A302A597D9 /* CandleChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/CandleChartDataSetProtocol.swift; sourceTree = ""; }; 1C02C3AF5C92FCFC18224C35 /* XAxisRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XAxisRenderer.swift; path = Source/Charts/Renderers/XAxisRenderer.swift; sourceTree = ""; }; 1CBBC58C6CE1EBEE9852CE41 /* ChartsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChartsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 1F3D55A7E6176D52DC957D27 /* XAxisRendererHorizontalBarChart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XAxisRendererHorizontalBarChart.swift; path = Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift; sourceTree = ""; }; 2194AA554712E6BA2677F114 /* BubbleChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartRenderer.swift; path = Source/Charts/Renderers/BubbleChartRenderer.swift; sourceTree = ""; }; - 219BC9CEA037F897E92E45D1 /* IScatterChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IScatterChartDataSet.swift; path = Source/Charts/Data/Interfaces/IScatterChartDataSet.swift; sourceTree = ""; }; - 224EFF981FBAAC4700CF9B3B /* EquatableTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = EquatableTests.swift; path = Tests/Charts/EquatableTests.swift; sourceTree = ""; }; + 219BC9CEA037F897E92E45D1 /* ScatterChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScatterChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/ScatterChartDataSetProtocol.swift; sourceTree = ""; }; + 2243BBFB1FF156D000B49D0B /* EquatableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EquatableTests.swift; path = Tests/Charts/EquatableTests.swift; sourceTree = ""; }; 23D35CF6F9177D77B6B97AE1 /* XShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/XShapeRenderer.swift; sourceTree = ""; }; 2440DB759AB93B4A928A3F6F /* RadarChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartView.swift; path = Source/Charts/Charts/RadarChartView.swift; sourceTree = ""; }; 2465CB73738EBAFB46C57288 /* CombinedHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombinedHighlighter.swift; path = Source/Charts/Highlight/CombinedHighlighter.swift; sourceTree = ""; }; 266E162DA8B29D9AEB6A9397 /* MoveViewJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoveViewJob.swift; path = Source/Charts/Jobs/MoveViewJob.swift; sourceTree = ""; }; 274116834B1B0345D622E027 /* CandleChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/CandleChartDataSet.swift; sourceTree = ""; }; - 2EAD807534620E3B53327F04 /* IRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IRadarChartDataSet.swift; path = Source/Charts/Data/Interfaces/IRadarChartDataSet.swift; sourceTree = ""; }; + 2EAD807534620E3B53327F04 /* RadarChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/RadarChartDataSetProtocol.swift; sourceTree = ""; }; 2FD37A55B4D85D883E29C744 /* ScatterChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScatterChartDataProvider.swift; path = Source/Charts/Interfaces/ScatterChartDataProvider.swift; sourceTree = ""; }; 30EFAD7920F76360ADB3B5F5 /* ChartViewBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartViewBase.swift; path = Source/Charts/Charts/ChartViewBase.swift; sourceTree = ""; }; 324C9127B53A8D39C8B49277 /* TransformerHorizontalBarChart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformerHorizontalBarChart.swift; path = Source/Charts/Utils/TransformerHorizontalBarChart.swift; sourceTree = ""; }; @@ -197,13 +199,13 @@ 33BE9A97FFA41D3D85CAFFC7 /* HorizontalBarHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HorizontalBarHighlighter.swift; path = Source/Charts/Highlight/HorizontalBarHighlighter.swift; sourceTree = ""; }; 392AAEB02DD7B351D92907C2 /* MarkerImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MarkerImage.swift; path = Source/Charts/Components/MarkerImage.swift; sourceTree = ""; }; 3976E5F9D60E30CD94CE6156 /* Animator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Animator.swift; path = Source/Charts/Animation/Animator.swift; sourceTree = ""; }; - 3A32510073A303CBB38E094A /* IChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IChartDataSet.swift; path = Source/Charts/Data/Interfaces/IChartDataSet.swift; sourceTree = ""; }; + 3A32510073A303CBB38E094A /* ChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/ChartDataSetProtocol.swift; sourceTree = ""; }; 3D64616883374310C505EC39 /* Highlight.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Highlight.swift; path = Source/Charts/Highlight/Highlight.swift; sourceTree = ""; }; 3ED23C354AFE81818D78E645 /* Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Platform.swift; path = Source/Charts/Utils/Platform.swift; sourceTree = ""; }; 3F8146ABC9FC311AF8CA699C /* CandleChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleChartDataProvider.swift; path = Source/Charts/Interfaces/CandleChartDataProvider.swift; sourceTree = ""; }; 3FDA09EF973925A110506799 /* ChartUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartUtils.swift; path = Source/Charts/Utils/ChartUtils.swift; sourceTree = ""; }; 41DDB768A1D033A34F0EF9E0 /* Media.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Media.xcassets; path = "Tests/Supporting Files/Media.xcassets"; sourceTree = ""; }; - 429E88F2729735DC092EE556 /* ILineChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ILineChartDataSet.swift; path = Source/Charts/Data/Interfaces/ILineChartDataSet.swift; sourceTree = ""; }; + 429E88F2729735DC092EE556 /* LineChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/LineChartDataSetProtocol.swift; sourceTree = ""; }; 45C6D3723C4E001B119CA0C8 /* BarLineChartViewBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarLineChartViewBase.swift; path = Source/Charts/Charts/BarLineChartViewBase.swift; sourceTree = ""; }; 45E31A4356CC6F283C29954B /* LineRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineRadarChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/LineRadarChartDataSet.swift; sourceTree = ""; }; 46D8013D44629521B1746364 /* PieChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PieChartRenderer.swift; path = Source/Charts/Renderers/PieChartRenderer.swift; sourceTree = ""; }; @@ -213,16 +215,16 @@ 4BBB57D6FA41029B08F26D7B /* RadarChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartData.swift; path = Source/Charts/Data/Implementations/Standard/RadarChartData.swift; sourceTree = ""; }; 4C2EA58CB336967198D30D20 /* AnimatedZoomViewJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedZoomViewJob.swift; path = Source/Charts/Jobs/AnimatedZoomViewJob.swift; sourceTree = ""; }; 4C978F31F23C7D21197DC2A1 /* LineChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartData.swift; path = Source/Charts/Data/Implementations/Standard/LineChartData.swift; sourceTree = ""; }; - 4EAA8AA30C377D54D22A577A /* IValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IValueFormatter.swift; path = Source/Charts/Formatters/IValueFormatter.swift; sourceTree = ""; }; + 4EAA8AA30C377D54D22A577A /* ValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValueFormatter.swift; path = Source/Charts/Formatters/ValueFormatter.swift; sourceTree = ""; }; 4EED352A98860E031F13AFB7 /* BubbleChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartView.swift; path = Source/Charts/Charts/BubbleChartView.swift; sourceTree = ""; }; - 4F7E6A99D82E6AE3804D5A39 /* ILineRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ILineRadarChartDataSet.swift; path = Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift; sourceTree = ""; }; + 4F7E6A99D82E6AE3804D5A39 /* LineRadarChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineRadarChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/LineRadarChartDataSetProtocol.swift; sourceTree = ""; }; 4F9922F0641F7955DC6CD324 /* Charts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Charts.h; path = "Source/Supporting Files/Charts.h"; sourceTree = ""; }; 5225ABC3C0C2F65FC094EEBB /* XAxis.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XAxis.swift; path = Source/Charts/Components/XAxis.swift; sourceTree = ""; }; 52265C1B343CCC41AF2300E3 /* CombinedChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombinedChartRenderer.swift; path = Source/Charts/Renderers/CombinedChartRenderer.swift; sourceTree = ""; }; 539382766378B702660FDFB2 /* HorizontalBarChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HorizontalBarChartRenderer.swift; path = Source/Charts/Renderers/HorizontalBarChartRenderer.swift; sourceTree = ""; }; 543729805D897CC03E5F78D3 /* BarHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarHighlighter.swift; path = Source/Charts/Highlight/BarHighlighter.swift; sourceTree = ""; }; 559DB735FEA17AB90676D6CA /* BarLineScatterCandleBubbleChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarLineScatterCandleBubbleChartData.swift; path = Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift; sourceTree = ""; }; - 596963A429D485E3894C4666 /* IMarker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IMarker.swift; path = Source/Charts/Components/IMarker.swift; sourceTree = ""; }; + 596963A429D485E3894C4666 /* Marker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Marker.swift; path = Source/Charts/Components/Marker.swift; sourceTree = ""; }; 5983826927D825EF5F855C28 /* ChartHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartHighlighter.swift; path = Source/Charts/Highlight/ChartHighlighter.swift; sourceTree = ""; }; 5A4CFFFB65819121595F06F1 /* Fill.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Fill.swift; path = Source/Charts/Utils/Fill.swift; sourceTree = ""; }; 5B1C588E9DF6FFD56D7ADF8E /* BarLineScatterCandleBubbleRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarLineScatterCandleBubbleRenderer.swift; path = Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift; sourceTree = ""; }; @@ -240,32 +242,33 @@ 710D7C9B2F1DB4A331EE405A /* AnimatedViewPortJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedViewPortJob.swift; path = Source/Charts/Jobs/AnimatedViewPortJob.swift; sourceTree = ""; }; 72EAEBB7CF73E33565FC2896 /* ViewPortHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewPortHandler.swift; path = Source/Charts/Utils/ViewPortHandler.swift; sourceTree = ""; }; 75F279974FE650E57A061B09 /* BarChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarChartRenderer.swift; path = Source/Charts/Renderers/BarChartRenderer.swift; sourceTree = ""; }; - 7A53A9E42FC07FFDACA937C1 /* IBarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBarChartDataSet.swift; path = Source/Charts/Data/Interfaces/IBarChartDataSet.swift; sourceTree = ""; }; + 7A53A9E42FC07FFDACA937C1 /* BarChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/BarChartDataSetProtocol.swift; sourceTree = ""; }; 7AB9062A28AAB9469752A954 /* ChartUtilsTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartUtilsTests.swift; path = Tests/Charts/ChartUtilsTests.swift; sourceTree = ""; }; 7AC9C3D69ACB5BDE22421E15 /* RadarChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartRenderer.swift; path = Source/Charts/Renderers/RadarChartRenderer.swift; sourceTree = ""; }; 7EDA3AD550AEFC93C8D15B9C /* BubbleChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartData.swift; path = Source/Charts/Data/Implementations/Standard/BubbleChartData.swift; sourceTree = ""; }; 80D5B764EC0AE1E17E55DC67 /* ScatterChartRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScatterChartRenderer.swift; path = Source/Charts/Renderers/ScatterChartRenderer.swift; sourceTree = ""; }; - 818AC6B12505B7C0A53D62F9 /* IFillFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IFillFormatter.swift; path = Source/Charts/Formatters/IFillFormatter.swift; sourceTree = ""; }; + 818AC6B12505B7C0A53D62F9 /* FillFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FillFormatter.swift; path = Source/Charts/Formatters/FillFormatter.swift; sourceTree = ""; }; 823F7DB281C6C6F069A69605 /* CrossShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CrossShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift; sourceTree = ""; }; 8FF03960A871A092F5B54315 /* BarLineScatterCandleBubbleChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarLineScatterCandleBubbleChartDataProvider.swift; path = Source/Charts/Interfaces/BarLineScatterCandleBubbleChartDataProvider.swift; sourceTree = ""; }; 910DBFE1DA1B2CA237A736DF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Source/Supporting Files/Info.plist"; sourceTree = ""; }; 91EEEDE2AB8F2DA3AFCF0733 /* RadarChartDataEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartDataEntry.swift; path = Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift; sourceTree = ""; }; 923206233CA89FD03565FF87 /* LineScatterCandleRadarRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineScatterCandleRadarRenderer.swift; path = Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift; sourceTree = ""; }; - 9249AD9AEC8C85772365A128 /* ILineScatterCandleRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ILineScatterCandleRadarChartDataSet.swift; path = Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift; sourceTree = ""; }; + 9249AD9AEC8C85772365A128 /* LineScatterCandleRadarChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineScatterCandleRadarChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/LineScatterCandleRadarChartDataSetProtocol.swift; sourceTree = ""; }; 93EF9709CF635BEE70D1ABC5 /* DataApproximator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataApproximator.swift; path = Source/Charts/Filters/DataApproximator.swift; sourceTree = ""; }; - 998F2BFE318471AFC05B50AC /* IHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IHighlighter.swift; path = Source/Charts/Highlight/IHighlighter.swift; sourceTree = ""; }; + 998F2BFE318471AFC05B50AC /* Highlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Highlighter.swift; path = Source/Charts/Highlight/Highlighter.swift; sourceTree = ""; }; 9D7184C8A5A60A3522AB9B05 /* BarChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarChartDataProvider.swift; path = Source/Charts/Interfaces/BarChartDataProvider.swift; sourceTree = ""; }; 9DCD13D558BA177D5952AD66 /* PieChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PieChartView.swift; path = Source/Charts/Charts/PieChartView.swift; sourceTree = ""; }; 9E7C673B9ED4340F550A9283 /* LegendEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LegendEntry.swift; path = Source/Charts/Components/LegendEntry.swift; sourceTree = ""; }; A140F644332704916947B58C /* CombinedChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombinedChartDataProvider.swift; path = Source/Charts/Interfaces/CombinedChartDataProvider.swift; sourceTree = ""; }; A4FB5E3761EF8B4D1E1E1014 /* PieChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PieChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/PieChartDataSet.swift; sourceTree = ""; }; - A5649B272BF3EBFC8A1EF0C1 /* IBarLineScatterCandleBubbleChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBarLineScatterCandleBubbleChartDataSet.swift; path = Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift; sourceTree = ""; }; + A5649B272BF3EBFC8A1EF0C1 /* BarLineScatterCandleBubbleChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BarLineScatterCandleBubbleChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/BarLineScatterCandleBubbleChartDataSetProtocol.swift; sourceTree = ""; }; A5A75AA73C5AA381DA517959 /* LineChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift; sourceTree = ""; }; AA5A16F4A382813C4FE8BDF9 /* YAxisRendererRadarChart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YAxisRendererRadarChart.swift; path = Source/Charts/Renderers/YAxisRendererRadarChart.swift; sourceTree = ""; }; AA70259ED16FF80D8EEB0F94 /* ChevronUpShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChevronUpShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift; sourceTree = ""; }; B137428B41C143D5115726C4 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Source/Charts/Components/Description.swift; sourceTree = ""; }; B1BA6B21CBDF77A15848994F /* RadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift; sourceTree = ""; }; B44829AF0ADA583F1F0279B7 /* BubbleChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift; sourceTree = ""; }; + B6BF9A551F91993A00E62A5D /* CombinedChartTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CombinedChartTests.swift; path = Tests/Charts/CombinedChartTests.swift; sourceTree = ""; }; BA157EFF2F952192C11DF937 /* AnimatedMoveViewJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedMoveViewJob.swift; path = Source/Charts/Jobs/AnimatedMoveViewJob.swift; sourceTree = ""; }; BA1A58428DC4780BAB4EAADC /* CandleStickChartView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleStickChartView.swift; path = Source/Charts/Charts/CandleStickChartView.swift; sourceTree = ""; }; BC19DC2434D65FFB446A61B7 /* XAxisRendererRadarChart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XAxisRendererRadarChart.swift; path = Source/Charts/Renderers/XAxisRendererRadarChart.swift; sourceTree = ""; }; @@ -276,7 +279,7 @@ C52E8344160B5E689DA3C25C /* ChevronDownShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChevronDownShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift; sourceTree = ""; }; C574E1BC7E12D937A5471EF8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Tests/Supporting Files/Info.plist"; sourceTree = ""; }; C58BD7B14BEA440783ED8D2B /* LineScatterCandleRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineScatterCandleRadarChartDataSet.swift; path = Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift; sourceTree = ""; }; - C75935E899183DDFA181E2CC /* AxisRendererBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AxisRendererBase.swift; path = Source/Charts/Renderers/AxisRendererBase.swift; sourceTree = ""; }; + C75935E899183DDFA181E2CC /* AxisRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AxisRenderer.swift; path = Source/Charts/Renderers/AxisRenderer.swift; sourceTree = ""; }; C8C9A105A7DB64F39DDA648B /* ComponentBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComponentBase.swift; path = Source/Charts/Components/ComponentBase.swift; sourceTree = ""; }; C8FB6219B143F8F7DA762950 /* TriangleShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TriangleShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/TriangleShapeRenderer.swift; sourceTree = ""; }; C9FE42E868A225C116537368 /* ChartBaseDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartBaseDataSet.swift; path = Source/Charts/Data/Implementations/ChartBaseDataSet.swift; sourceTree = ""; }; @@ -284,7 +287,7 @@ D2E1819D72CD7B6C4A4E8048 /* LineChartTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LineChartTests.swift; path = Tests/Charts/LineChartTests.swift; sourceTree = ""; }; D2E698FF540029B70AC97AD7 /* CandleChartDataEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleChartDataEntry.swift; path = Source/Charts/Data/Implementations/Standard/CandleChartDataEntry.swift; sourceTree = ""; }; D6C1BEFDF17404666C7B6054 /* DefaultFillFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultFillFormatter.swift; path = Source/Charts/Formatters/DefaultFillFormatter.swift; sourceTree = ""; }; - DA2AA6CC89F809DCCD7605B4 /* IPieChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IPieChartDataSet.swift; path = Source/Charts/Data/Interfaces/IPieChartDataSet.swift; sourceTree = ""; }; + DA2AA6CC89F809DCCD7605B4 /* PieChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PieChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/PieChartDataSetProtocol.swift; sourceTree = ""; }; DD8ED233775EEC31243A6919 /* BubbleChartDataEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartDataEntry.swift; path = Source/Charts/Data/Implementations/Standard/BubbleChartDataEntry.swift; sourceTree = ""; }; DFB762958EE8E6521563665D /* ChartAnimationEasing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartAnimationEasing.swift; path = Source/Charts/Animation/ChartAnimationEasing.swift; sourceTree = ""; }; E120E76C6F1B5877D56126DD /* ChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartData.swift; path = Source/Charts/Data/Implementations/Standard/ChartData.swift; sourceTree = ""; }; @@ -297,12 +300,12 @@ EDEAF554FD0D68EA4C0E7E49 /* BubbleChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartDataProvider.swift; path = Source/Charts/Interfaces/BubbleChartDataProvider.swift; sourceTree = ""; }; F22750328058DEC2F019646F /* ChartDataEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartDataEntry.swift; path = Source/Charts/Data/Implementations/Standard/ChartDataEntry.swift; sourceTree = ""; }; F368CF209744D8F3B85B1028 /* RadarHighlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarHighlighter.swift; path = Source/Charts/Highlight/RadarHighlighter.swift; sourceTree = ""; }; - F3788EC55EF908B0805D7C2F /* IBubbleChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBubbleChartDataSet.swift; path = Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift; sourceTree = ""; }; + F3788EC55EF908B0805D7C2F /* BubbleChartDataSetProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartDataSetProtocol.swift; path = Source/Charts/Data/Interfaces/BubbleChartDataSetProtocol.swift; sourceTree = ""; }; F4785FEACAE4367F36FB8868 /* CandleChartData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CandleChartData.swift; path = Source/Charts/Data/Implementations/Standard/CandleChartData.swift; sourceTree = ""; }; F6227A646166E248F90F86AD /* ChartColorTemplates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartColorTemplates.swift; path = Source/Charts/Utils/ChartColorTemplates.swift; sourceTree = ""; }; F6DEBFAB1D73E944ED430B4F /* ChartLimitLine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartLimitLine.swift; path = Source/Charts/Components/ChartLimitLine.swift; sourceTree = ""; }; F715DB2C56C9E0615542625B /* LegendRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LegendRenderer.swift; path = Source/Charts/Renderers/LegendRenderer.swift; sourceTree = ""; }; - FA1D3D13180C2E3893A82546 /* IShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/IShapeRenderer.swift; sourceTree = ""; }; + FA1D3D13180C2E3893A82546 /* ShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/ShapeRenderer.swift; sourceTree = ""; }; FA7BDB22C97F39A4B33E38A7 /* ViewPortJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewPortJob.swift; path = Source/Charts/Jobs/ViewPortJob.swift; sourceTree = ""; }; FB3A4F5987E58F3E5BE855F9 /* ZoomViewJob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZoomViewJob.swift; path = Source/Charts/Jobs/ZoomViewJob.swift; sourceTree = ""; }; FB92A80F861C1362EED8D946 /* YAxis.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YAxis.swift; path = Source/Charts/Components/YAxis.swift; sourceTree = ""; }; @@ -328,7 +331,7 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 031D7C33F3BF172E30664862 /* Interfaces */ = { + 031D7C33F3BF172E30664862 /* DataProviders */ = { isa = PBXGroup; children = ( 9D7184C8A5A60A3522AB9B05 /* BarChartDataProvider.swift */, @@ -340,7 +343,7 @@ BFABD027DAF6851088F002AC /* LineChartDataProvider.swift */, 2FD37A55B4D85D883E29C744 /* ScatterChartDataProvider.swift */, ); - name = Interfaces; + name = DataProviders; sourceTree = ""; }; 033FD152BB2F906750106A85 /* Frameworks */ = { @@ -354,7 +357,7 @@ isa = PBXGroup; children = ( 3B9DD76FCE8D873300A822C7 /* Implementations */, - DB2D9648877455028EBEAA8F /* Interfaces */, + DB2D9648877455028EBEAA8F /* DataSet Protocols */, ); name = Data; sourceTree = ""; @@ -368,6 +371,40 @@ name = Source; sourceTree = ""; }; + 2227EA571FF1F219007D98D9 /* AxisRenderers */ = { + isa = PBXGroup; + children = ( + C75935E899183DDFA181E2CC /* AxisRenderer.swift */, + 1C02C3AF5C92FCFC18224C35 /* XAxisRenderer.swift */, + 1F3D55A7E6176D52DC957D27 /* XAxisRendererHorizontalBarChart.swift */, + BC19DC2434D65FFB446A61B7 /* XAxisRendererRadarChart.swift */, + 688B80F1AA88AE54152BE768 /* YAxisRenderer.swift */, + EAE417AAA0FCA0DD00E77489 /* YAxisRendererHorizontalBarChart.swift */, + AA5A16F4A382813C4FE8BDF9 /* YAxisRendererRadarChart.swift */, + ); + name = AxisRenderers; + sourceTree = ""; + }; + 2227EA581FF1F224007D98D9 /* ChartRenderers */ = { + isa = PBXGroup; + children = ( + 0216EDC6A1FE272F4EB19FCF /* DataRenderer.swift */, + 75F279974FE650E57A061B09 /* BarChartRenderer.swift */, + 5B1C588E9DF6FFD56D7ADF8E /* BarLineScatterCandleBubbleRenderer.swift */, + 2194AA554712E6BA2677F114 /* BubbleChartRenderer.swift */, + BD5C6D20243EC2F19069AACD /* CandleStickChartRenderer.swift */, + 52265C1B343CCC41AF2300E3 /* CombinedChartRenderer.swift */, + 539382766378B702660FDFB2 /* HorizontalBarChartRenderer.swift */, + 0DABDBBCCE6B3620C967F04A /* LineChartRenderer.swift */, + 105FFC9D3773A9C7A60A897F /* LineRadarRenderer.swift */, + 923206233CA89FD03565FF87 /* LineScatterCandleRadarRenderer.swift */, + 46D8013D44629521B1746364 /* PieChartRenderer.swift */, + 7AC9C3D69ACB5BDE22421E15 /* RadarChartRenderer.swift */, + 80D5B764EC0AE1E17E55DC67 /* ScatterChartRenderer.swift */, + ); + name = ChartRenderers; + sourceTree = ""; + }; 2647844720BC6574A544A337 /* Charts */ = { isa = PBXGroup; children = ( @@ -378,7 +415,7 @@ AA79AB82B0ADCA926510B73E /* Filters */, 74A391010038924F637D6752 /* Formatters */, 42824E1F334B0C484AF4C594 /* Highlight */, - 031D7C33F3BF172E30664862 /* Interfaces */, + 031D7C33F3BF172E30664862 /* DataProviders */, AD1224C45A29A5C88D6B7450 /* Jobs */, E7589D3E7C2BD2449960AD59 /* Renderers */, D047819AB7170595896D6FE8 /* Utils */, @@ -403,7 +440,7 @@ 2465CB73738EBAFB46C57288 /* CombinedHighlighter.swift */, 3D64616883374310C505EC39 /* Highlight.swift */, 33BE9A97FFA41D3D85CAFFC7 /* HorizontalBarHighlighter.swift */, - 998F2BFE318471AFC05B50AC /* IHighlighter.swift */, + 998F2BFE318471AFC05B50AC /* Highlighter.swift */, 7036F11832C017E26AC750A4 /* PieHighlighter.swift */, 04F7B9DF1F2D66E7279771D4 /* PieRadarHighlighter.swift */, F368CF209744D8F3B85B1028 /* RadarHighlighter.swift */, @@ -419,7 +456,7 @@ F6DEBFAB1D73E944ED430B4F /* ChartLimitLine.swift */, C8C9A105A7DB64F39DDA648B /* ComponentBase.swift */, B137428B41C143D5115726C4 /* Description.swift */, - 596963A429D485E3894C4666 /* IMarker.swift */, + 596963A429D485E3894C4666 /* Marker.swift */, E64A75540C627E09080B402A /* Legend.swift */, 9E7C673B9ED4340F550A9283 /* LegendEntry.swift */, 392AAEB02DD7B351D92907C2 /* MarkerImage.swift */, @@ -471,10 +508,10 @@ 6A4770E0F75EFFC30707A7C8 /* DefaultAxisValueFormatter.swift */, D6C1BEFDF17404666C7B6054 /* DefaultFillFormatter.swift */, 107D8F8163EE54D6D9E916B0 /* DefaultValueFormatter.swift */, - 0BD9DF16AF59680A3BB49452 /* IAxisValueFormatter.swift */, - 818AC6B12505B7C0A53D62F9 /* IFillFormatter.swift */, + 0BD9DF16AF59680A3BB49452 /* AxisValueFormatter.swift */, + 818AC6B12505B7C0A53D62F9 /* FillFormatter.swift */, 10DD0A02E3CF611BD11EBA9B /* IndexAxisValueFormatter.swift */, - 4EAA8AA30C377D54D22A577A /* IValueFormatter.swift */, + 4EAA8AA30C377D54D22A577A /* ValueFormatter.swift */, ); name = Formatters; sourceTree = ""; @@ -512,8 +549,9 @@ isa = PBXGroup; children = ( 5C3F5E1A69EC06E86505F7B1 /* BarChartTests.swift */, - 224EFF981FBAAC4700CF9B3B /* EquatableTests.swift */, 7AB9062A28AAB9469752A954 /* ChartUtilsTests.swift */, + B6BF9A551F91993A00E62A5D /* CombinedChartTests.swift */, + 2243BBFB1FF156D000B49D0B /* EquatableTests.swift */, D2E1819D72CD7B6C4A4E8048 /* LineChartTests.swift */, 064989451F5C99C7006E8BB3 /* Snapshot.swift */, ); @@ -591,50 +629,32 @@ name = Tests; sourceTree = ""; }; - DB2D9648877455028EBEAA8F /* Interfaces */ = { + DB2D9648877455028EBEAA8F /* DataSet Protocols */ = { isa = PBXGroup; children = ( - 7A53A9E42FC07FFDACA937C1 /* IBarChartDataSet.swift */, - A5649B272BF3EBFC8A1EF0C1 /* IBarLineScatterCandleBubbleChartDataSet.swift */, - F3788EC55EF908B0805D7C2F /* IBubbleChartDataSet.swift */, - 18BFB0A14A5C47A302A597D9 /* ICandleChartDataSet.swift */, - 3A32510073A303CBB38E094A /* IChartDataSet.swift */, - 429E88F2729735DC092EE556 /* ILineChartDataSet.swift */, - 4F7E6A99D82E6AE3804D5A39 /* ILineRadarChartDataSet.swift */, - 9249AD9AEC8C85772365A128 /* ILineScatterCandleRadarChartDataSet.swift */, - DA2AA6CC89F809DCCD7605B4 /* IPieChartDataSet.swift */, - 2EAD807534620E3B53327F04 /* IRadarChartDataSet.swift */, - 219BC9CEA037F897E92E45D1 /* IScatterChartDataSet.swift */, + 7A53A9E42FC07FFDACA937C1 /* BarChartDataSetProtocol.swift */, + A5649B272BF3EBFC8A1EF0C1 /* BarLineScatterCandleBubbleChartDataSetProtocol.swift */, + F3788EC55EF908B0805D7C2F /* BubbleChartDataSetProtocol.swift */, + 18BFB0A14A5C47A302A597D9 /* CandleChartDataSetProtocol.swift */, + 3A32510073A303CBB38E094A /* ChartDataSetProtocol.swift */, + 429E88F2729735DC092EE556 /* LineChartDataSetProtocol.swift */, + 4F7E6A99D82E6AE3804D5A39 /* LineRadarChartDataSetProtocol.swift */, + 9249AD9AEC8C85772365A128 /* LineScatterCandleRadarChartDataSetProtocol.swift */, + DA2AA6CC89F809DCCD7605B4 /* PieChartDataSetProtocol.swift */, + 2EAD807534620E3B53327F04 /* RadarChartDataSetProtocol.swift */, + 219BC9CEA037F897E92E45D1 /* ScatterChartDataSetProtocol.swift */, ); - name = Interfaces; + name = "DataSet Protocols"; sourceTree = ""; }; E7589D3E7C2BD2449960AD59 /* Renderers */ = { isa = PBXGroup; children = ( - C75935E899183DDFA181E2CC /* AxisRendererBase.swift */, - 75F279974FE650E57A061B09 /* BarChartRenderer.swift */, - 5B1C588E9DF6FFD56D7ADF8E /* BarLineScatterCandleBubbleRenderer.swift */, - 2194AA554712E6BA2677F114 /* BubbleChartRenderer.swift */, - BD5C6D20243EC2F19069AACD /* CandleStickChartRenderer.swift */, - 0216EDC6A1FE272F4EB19FCF /* ChartDataRendererBase.swift */, - 52265C1B343CCC41AF2300E3 /* CombinedChartRenderer.swift */, - 539382766378B702660FDFB2 /* HorizontalBarChartRenderer.swift */, F715DB2C56C9E0615542625B /* LegendRenderer.swift */, - 0DABDBBCCE6B3620C967F04A /* LineChartRenderer.swift */, - 105FFC9D3773A9C7A60A897F /* LineRadarRenderer.swift */, - 923206233CA89FD03565FF87 /* LineScatterCandleRadarRenderer.swift */, - 46D8013D44629521B1746364 /* PieChartRenderer.swift */, - 7AC9C3D69ACB5BDE22421E15 /* RadarChartRenderer.swift */, 6F66B32AD8A878CBD6DB6ED2 /* Renderer.swift */, - F7059584CB30EF419CFB3335 /* Scatter */, - 80D5B764EC0AE1E17E55DC67 /* ScatterChartRenderer.swift */, - 1C02C3AF5C92FCFC18224C35 /* XAxisRenderer.swift */, - 1F3D55A7E6176D52DC957D27 /* XAxisRendererHorizontalBarChart.swift */, - BC19DC2434D65FFB446A61B7 /* XAxisRendererRadarChart.swift */, - 688B80F1AA88AE54152BE768 /* YAxisRenderer.swift */, - EAE417AAA0FCA0DD00E77489 /* YAxisRendererHorizontalBarChart.swift */, - AA5A16F4A382813C4FE8BDF9 /* YAxisRendererRadarChart.swift */, + 2227EA571FF1F219007D98D9 /* AxisRenderers */, + 2227EA581FF1F224007D98D9 /* ChartRenderers */, + F7059584CB30EF419CFB3335 /* ShapeRenderer */, ); name = Renderers; sourceTree = ""; @@ -648,19 +668,19 @@ name = "Supporting Files"; sourceTree = ""; }; - F7059584CB30EF419CFB3335 /* Scatter */ = { + F7059584CB30EF419CFB3335 /* ShapeRenderer */ = { isa = PBXGroup; children = ( C52E8344160B5E689DA3C25C /* ChevronDownShapeRenderer.swift */, AA70259ED16FF80D8EEB0F94 /* ChevronUpShapeRenderer.swift */, ECE1B1623D3AF69CECAE8562 /* CircleShapeRenderer.swift */, 823F7DB281C6C6F069A69605 /* CrossShapeRenderer.swift */, - FA1D3D13180C2E3893A82546 /* IShapeRenderer.swift */, + FA1D3D13180C2E3893A82546 /* ShapeRenderer.swift */, 32FC01A016DFF1BA73AF9182 /* SquareShapeRenderer.swift */, C8FB6219B143F8F7DA762950 /* TriangleShapeRenderer.swift */, 23D35CF6F9177D77B6B97AE1 /* XShapeRenderer.swift */, ); - name = Scatter; + name = ShapeRenderer; sourceTree = ""; }; /* End PBXGroup section */ @@ -821,7 +841,7 @@ 4390D74986A92DEF4F4F2BF0 /* ChartLimitLine.swift in Sources */, FDBDAFA7A5337C6E3992DACE /* ComponentBase.swift in Sources */, DBC9DB402CC9BB84B76968C4 /* Description.swift in Sources */, - 03960E8148C6AEDACE4B77CC /* IMarker.swift in Sources */, + 03960E8148C6AEDACE4B77CC /* Marker.swift in Sources */, ECE7EAE7179A7F57CE9BBD8F /* Legend.swift in Sources */, C20A62D8CB9120523D5FB650 /* LegendEntry.swift in Sources */, 369DEB23452CB436A3A1A644 /* MarkerImage.swift in Sources */, @@ -857,31 +877,31 @@ E3B28EA1E21279DF3889BCE8 /* RadarChartDataSet.swift in Sources */, 2B791E64E7C4523B1A63F72A /* ScatterChartData.swift in Sources */, EB56849433A76B08606B73EB /* ScatterChartDataSet.swift in Sources */, - C3F0DDB7F0A922F0BB7EDB8A /* IBarChartDataSet.swift in Sources */, - AF4AAF3709ED9DDF6362EAE8 /* IBarLineScatterCandleBubbleChartDataSet.swift in Sources */, - 2C40CFFC8D88BEA70E0A50B0 /* IBubbleChartDataSet.swift in Sources */, - 0D8A89398F9BD5DCC8D7F976 /* ICandleChartDataSet.swift in Sources */, - E8F0F4F47CD7D72B4EE5A794 /* IChartDataSet.swift in Sources */, - F941C88BF814DF51C465CB95 /* ILineChartDataSet.swift in Sources */, - 1311BEC21E9CC264E971EFAF /* ILineRadarChartDataSet.swift in Sources */, - 146EE16342C2BADC92E45BF2 /* ILineScatterCandleRadarChartDataSet.swift in Sources */, - FAAD9FF6565DED2652188584 /* IPieChartDataSet.swift in Sources */, - 83BBAF3EDC31FD452F8BF1DB /* IRadarChartDataSet.swift in Sources */, - 50476F8E6662CAFC1EFE0723 /* IScatterChartDataSet.swift in Sources */, + C3F0DDB7F0A922F0BB7EDB8A /* BarChartDataSetProtocol.swift in Sources */, + AF4AAF3709ED9DDF6362EAE8 /* BarLineScatterCandleBubbleChartDataSetProtocol.swift in Sources */, + 2C40CFFC8D88BEA70E0A50B0 /* BubbleChartDataSetProtocol.swift in Sources */, + 0D8A89398F9BD5DCC8D7F976 /* CandleChartDataSetProtocol.swift in Sources */, + E8F0F4F47CD7D72B4EE5A794 /* ChartDataSetProtocol.swift in Sources */, + F941C88BF814DF51C465CB95 /* LineChartDataSetProtocol.swift in Sources */, + 1311BEC21E9CC264E971EFAF /* LineRadarChartDataSetProtocol.swift in Sources */, + 146EE16342C2BADC92E45BF2 /* LineScatterCandleRadarChartDataSetProtocol.swift in Sources */, + FAAD9FF6565DED2652188584 /* PieChartDataSetProtocol.swift in Sources */, + 83BBAF3EDC31FD452F8BF1DB /* RadarChartDataSetProtocol.swift in Sources */, + 50476F8E6662CAFC1EFE0723 /* ScatterChartDataSetProtocol.swift in Sources */, 97E033CC0ABEF0F448DAFA8E /* DataApproximator.swift in Sources */, 779B46E9F13A087BFA47D539 /* DefaultAxisValueFormatter.swift in Sources */, F744C510DA9B85C228BBB335 /* DefaultFillFormatter.swift in Sources */, B0D28C68BB9A958DC56EB214 /* DefaultValueFormatter.swift in Sources */, - B13C74B4FF705D7B595D01EF /* IAxisValueFormatter.swift in Sources */, - B6C9F450D937B87224D29D5C /* IFillFormatter.swift in Sources */, + B13C74B4FF705D7B595D01EF /* AxisValueFormatter.swift in Sources */, + B6C9F450D937B87224D29D5C /* FillFormatter.swift in Sources */, 967EE2EDDE3337C5C4337C59 /* IndexAxisValueFormatter.swift in Sources */, - A40ACF0CCE96EEE104B0463D /* IValueFormatter.swift in Sources */, + A40ACF0CCE96EEE104B0463D /* ValueFormatter.swift in Sources */, 3CBE95F1E9394FA08CDCF31E /* BarHighlighter.swift in Sources */, D326491E8BCDE54A0921E137 /* ChartHighlighter.swift in Sources */, 64FA1EDB4DC1F65727D52D10 /* CombinedHighlighter.swift in Sources */, 758EB1C75063ED3373542F3B /* Highlight.swift in Sources */, 4E98788ABEF6496C23F3E6C6 /* HorizontalBarHighlighter.swift in Sources */, - 203A39685CC96FC625F616E4 /* IHighlighter.swift in Sources */, + 203A39685CC96FC625F616E4 /* Highlighter.swift in Sources */, 73EDF662AD989E930D365B72 /* PieHighlighter.swift in Sources */, 3097296AC7FFA994FE4AD312 /* PieRadarHighlighter.swift in Sources */, C33E1AF5471A60BA42DAF52E /* RadarHighlighter.swift in Sources */, @@ -900,12 +920,12 @@ 02A6E6E1A82A27A66B8D08C4 /* MoveViewJob.swift in Sources */, 9400725714D0DA707DDECD2E /* ViewPortJob.swift in Sources */, AEE9C4E4AC02B8FB3CD21975 /* ZoomViewJob.swift in Sources */, - ECECC58CEF03B1718F8267E8 /* AxisRendererBase.swift in Sources */, + ECECC58CEF03B1718F8267E8 /* AxisRenderer.swift in Sources */, 23FA50B2730D8C7ACA091C4F /* BarChartRenderer.swift in Sources */, 219192CA6B4895319AB49DCA /* BarLineScatterCandleBubbleRenderer.swift in Sources */, 56E0F5EA9255B9B92876E040 /* BubbleChartRenderer.swift in Sources */, 8BCCD709AACC565613D9DA68 /* CandleStickChartRenderer.swift in Sources */, - F37B07008B8AE7F3909FFB9C /* ChartDataRendererBase.swift in Sources */, + F37B07008B8AE7F3909FFB9C /* DataRenderer.swift in Sources */, 05253AFC448C107DEF54C2FE /* CombinedChartRenderer.swift in Sources */, F100D68395F169B93590FA96 /* HorizontalBarChartRenderer.swift in Sources */, 2B821AAC3EBD60A73EACBCE6 /* LegendRenderer.swift in Sources */, @@ -919,7 +939,7 @@ F103D90FC5DEEA0D7BB4407E /* ChevronUpShapeRenderer.swift in Sources */, B85DEB06B4C1AFFC8A0E3295 /* CircleShapeRenderer.swift in Sources */, 0529DD51622C8769C1121F90 /* CrossShapeRenderer.swift in Sources */, - 8A9FF54E2075A9047CC8E953 /* IShapeRenderer.swift in Sources */, + 8A9FF54E2075A9047CC8E953 /* ShapeRenderer.swift in Sources */, 8EF7B3FBE37F72CC030CD865 /* SquareShapeRenderer.swift in Sources */, 8F4B1A9060472764073DFA0B /* TriangleShapeRenderer.swift in Sources */, 93A94E1FF55041A6032891FE /* XShapeRenderer.swift in Sources */, @@ -946,9 +966,11 @@ files = ( 3B11556EB7DC034E2FC958E4 /* BarChartTests.swift in Sources */, 8E1192F7A7152E9DA92C56A9 /* ChartUtilsTests.swift in Sources */, + B6BF9A561F91993A00E62A5D /* CombinedChartTests.swift in Sources */, + 2243BBFD1FF156EC00B49D0B /* EquatableTests.swift in Sources */, 2BF85BEA981B359A65E9BF67 /* LineChartTests.swift in Sources */, 064989461F5C99C7006E8BB3 /* Snapshot.swift in Sources */, - 224EFF991FBAAC4700CF9B3B /* EquatableTests.swift in Sources */, + 224EFF991FBAAC4700CF9B3B /* (null) in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ChartsDemo/ChartsDemo.xcodeproj/project.pbxproj b/ChartsDemo/ChartsDemo.xcodeproj/project.pbxproj index 28674b1c25..6b834aab14 100644 --- a/ChartsDemo/ChartsDemo.xcodeproj/project.pbxproj +++ b/ChartsDemo/ChartsDemo.xcodeproj/project.pbxproj @@ -1,1109 +1,1104 @@ // !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { /* Begin PBXBuildFile section */ - 0439A3541C9FF95F00496F83 /* PiePolylineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */; }; - 0471CBFC1CA1090A00E52DBC /* PiePolylineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */; }; - 0630AE511D81271B008859B0 /* Charts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; }; - 0630AE521D81271B008859B0 /* Charts.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 068A9B191FBBF351003CF1AD /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF2F1AB32E15009697AA /* Images.xcassets */; }; - 068A9B1A1FBBF355003CF1AD /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B64D06EA1FB199130067418D /* Launch Screen.storyboard */; }; - 068A9B1B1FBBF366003CF1AD /* radar_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */; }; - 225B36201F6EB9A50005B3D5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */; }; - 225B36311F6EB9EE0005B3D5 /* DemoBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */; }; - 225B36321F6EB9EE0005B3D5 /* DemoListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */; }; - 225B36381F6EBA040005B3D5 /* IntAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */; }; - 225B36391F6EBA040005B3D5 /* DayAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */; }; - 225B363A1F6EBA040005B3D5 /* DateValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */; }; - 225B363B1F6EBA040005B3D5 /* LargeValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */; }; - 225B36401F6EBA1D0005B3D5 /* XYMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */; }; - 225B36411F6EBA1D0005B3D5 /* BalloonMarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */; }; - 225B36421F6EBA1D0005B3D5 /* RadarMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */; }; - 225B365B1F6EBA470005B3D5 /* MultipleLinesChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */; }; - 225B365C1F6EBA470005B3D5 /* MultipleBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */; }; - 225B365D1F6EBA470005B3D5 /* HalfPieChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */; }; - 225B365E1F6EBA470005B3D5 /* LineChartTimeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */; }; - 225B365F1F6EBA470005B3D5 /* ColoredLineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */; }; - 225B36601F6EBA470005B3D5 /* LineChart2ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */; }; - 225B36611F6EBA470005B3D5 /* LineChart1ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */; }; - 225B36621F6EBA470005B3D5 /* NegativeStackedBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */; }; - 225B36631F6EBA470005B3D5 /* ScatterChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */; }; - 225B36641F6EBA470005B3D5 /* StackedBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */; }; - 225B36651F6EBA470005B3D5 /* BubbleChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */; }; - 225B36661F6EBA470005B3D5 /* LineChartFilledViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */; }; - 225B36671F6EBA470005B3D5 /* PositiveNegativeBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */; }; - 225B36681F6EBA470005B3D5 /* AnotherBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */; }; - 225B36691F6EBA470005B3D5 /* PieChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */; }; - 225B366A1F6EBA470005B3D5 /* CubicLineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */; }; - 225B366B1F6EBA470005B3D5 /* RadarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */; }; - 225B366C1F6EBA470005B3D5 /* HorizontalBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */; }; - 225B366D1F6EBA470005B3D5 /* PiePolylineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */; }; - 225B366E1F6EBA470005B3D5 /* CombinedChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */; }; - 225B366F1F6EBA470005B3D5 /* BarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */; }; - 225B36701F6EBA470005B3D5 /* SinusBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */; }; - 225B36711F6EBA470005B3D5 /* CandleStickChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */; }; - 225B36721F6EBA5E0005B3D5 /* DemoListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */; }; - 225B36731F6EBA5E0005B3D5 /* RadarMarkerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */; }; - 225B36741F6EBA640005B3D5 /* AnotherBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */; }; - 225B36751F6EBA640005B3D5 /* BarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */; }; - 225B36761F6EBA640005B3D5 /* BubbleChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */; }; - 225B36771F6EBA640005B3D5 /* CandleStickChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */; }; - 225B36781F6EBA640005B3D5 /* ColoredLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */; }; - 225B36791F6EBA640005B3D5 /* CombinedChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */; }; - 225B367A1F6EBA640005B3D5 /* CubicLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */; }; - 225B367B1F6EBA640005B3D5 /* HalfPieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */; }; - 225B367C1F6EBA640005B3D5 /* HorizontalBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */; }; - 225B367D1F6EBA640005B3D5 /* LineChart1ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */; }; - 225B367E1F6EBA640005B3D5 /* LineChart2ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */; }; - 225B367F1F6EBA640005B3D5 /* LineChartFilledViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */; }; - 225B36801F6EBA640005B3D5 /* LineChartTimeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */; }; - 225B36811F6EBA640005B3D5 /* MultipleBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */; }; - 225B36821F6EBA640005B3D5 /* MultipleLinesChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */; }; - 225B36831F6EBA640005B3D5 /* NegativeStackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */; }; - 225B36841F6EBA640005B3D5 /* PieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0CC7841ABB875400665592 /* PieChartViewController.xib */; }; - 225B36851F6EBA640005B3D5 /* PiePolylineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */; }; - 225B36861F6EBA640005B3D5 /* PositiveNegativeBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */; }; - 225B36871F6EBA640005B3D5 /* RadarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */; }; - 225B36881F6EBA640005B3D5 /* RealmDemosViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */; }; - 225B36891F6EBA640005B3D5 /* ScatterChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */; }; - 225B368A1F6EBA640005B3D5 /* SinusBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */; }; - 225B368B1F6EBA640005B3D5 /* StackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */; }; - 225B368C1F6EBBB00005B3D5 /* Charts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; }; - 225B368D1F6EBBB00005B3D5 /* Charts.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 55E356501ADC638F00A57971 /* BubbleChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */; }; - 55E356511ADC638F00A57971 /* BubbleChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */; }; - 5B0CC7851ABB875400665592 /* PieChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B0CC7831ABB875400665592 /* PieChartViewController.m */; }; - 5B0CC7861ABB875400665592 /* PieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0CC7841ABB875400665592 /* PieChartViewController.xib */; }; - 5B1B5DAB1E911A15006D1375 /* RealmDemosViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */; }; - 5B57BBB51A9B26AA0036A6CC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB41A9B26AA0036A6CC /* main.m */; }; - 5B57BBB81A9B26AA0036A6CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */; }; - 5B57BBBB1A9B26AA0036A6CC /* DemoListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */; }; - 5B613DA41D526AD5000F1E98 /* radar_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */; }; - 5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */; }; - 5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */; }; - 5B613DF01D5A50B6000F1E98 /* XYMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */; }; - 5B613DF21D5A60DF000F1E98 /* LargeValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */; }; - 5B8EAF241AB3271B009697AA /* DemoListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */; }; - 5B8EAF281AB32CF5009697AA /* DemoBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */; }; - 5B8EAF301AB32E15009697AA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF2F1AB32E15009697AA /* Images.xcassets */; }; - 5B9624411B38608C007763E2 /* NegativeStackedBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */; }; - 5B9624421B38608C007763E2 /* NegativeStackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */; }; - 5BD47E5B1ABB0263008FCEC6 /* BalloonMarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */; }; - 5BD47E601ABB3C91008FCEC6 /* LineChart2ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */; }; - 5BD47E611ABB3C91008FCEC6 /* LineChart2ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */; }; - 5BD47E651ABB424E008FCEC6 /* BarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */; }; - 5BD47E661ABB424E008FCEC6 /* BarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */; }; - 5BD8F0741AB89CE500566E05 /* LineChart1ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */; }; - 5BD8F0751AB89CE500566E05 /* LineChart1ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */; }; - 5BDEDC411ABB7F73007D3A60 /* HorizontalBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */; }; - 5BDEDC421ABB7F73007D3A60 /* HorizontalBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */; }; - 5BDEDC471ABB871E007D3A60 /* CombinedChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */; }; - 5BDEDC481ABB871E007D3A60 /* CombinedChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */; }; - 5BE377DE1D425151006EB34F /* DayAxisValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */; }; - 5BE377F21D47FDF1006EB34F /* IntAxisValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */; }; - 5BE673801D5B496500A87BA2 /* HalfPieChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */; }; - 5BE673811D5B496500A87BA2 /* HalfPieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */; }; - 5BE673921D5B4E0900A87BA2 /* LineChartFilledViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */; }; - 5BE673931D5B4E0900A87BA2 /* LineChartFilledViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */; }; - 5BE673941D5B4E0900A87BA2 /* LineChartTimeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */; }; - 5BE673951D5B4E0900A87BA2 /* LineChartTimeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */; }; - 5BE6739A1D5BAD7E00A87BA2 /* DateValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */; }; - 5BE7E7621C693098000A0377 /* PositiveNegativeBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */; }; - 5BE7E7631C693098000A0377 /* PositiveNegativeBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */; }; - 5BEAED121ABBFB2B0013F194 /* AnotherBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */; }; - 5BEAED131ABBFB2B0013F194 /* AnotherBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */; }; - 5BEAED1B1ABBFB340013F194 /* ScatterChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */; }; - 5BEAED1C1ABBFB340013F194 /* ScatterChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */; }; - 5BEAED1D1ABBFB340013F194 /* StackedBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */; }; - 5BEAED1E1ABBFB340013F194 /* StackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */; }; - 5BEAED251ABC0BE20013F194 /* MultipleBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */; }; - 5BEAED261ABC0BE20013F194 /* MultipleBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */; }; - 5BEAED271ABC0BE20013F194 /* MultipleLinesChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */; }; - 5BEAED281ABC0BE20013F194 /* MultipleLinesChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */; }; - 5BEAED2C1ABC160F0013F194 /* CandleStickChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */; }; - 5BEAED2D1ABC160F0013F194 /* CandleStickChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */; }; - 5BEAED311ABC18F00013F194 /* CubicLineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */; }; - 5BEAED321ABC18F00013F194 /* CubicLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */; }; - 5BEAED361ABC192F0013F194 /* RadarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */; }; - 5BEAED371ABC192F0013F194 /* RadarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */; }; - 5BEAED3B1ABC199F0013F194 /* ColoredLineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */; }; - 5BEAED3C1ABC199F0013F194 /* ColoredLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */; }; - 5BEAED401ABC1AC60013F194 /* SinusBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */; }; - 5BEAED411ABC1AC60013F194 /* SinusBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */; }; - B64D06EB1FB199130067418D /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B64D06EA1FB199130067418D /* Launch Screen.storyboard */; }; + 0439A3541C9FF95F00496F83 /* PiePolylineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */; }; + 0471CBFC1CA1090A00E52DBC /* PiePolylineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */; }; + 068A9B191FBBF351003CF1AD /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF2F1AB32E15009697AA /* Images.xcassets */; }; + 068A9B1A1FBBF355003CF1AD /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B64D06EA1FB199130067418D /* Launch Screen.storyboard */; }; + 068A9B1B1FBBF366003CF1AD /* radar_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */; }; + 225B36201F6EB9A50005B3D5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */; }; + 225B36311F6EB9EE0005B3D5 /* DemoBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */; }; + 225B36321F6EB9EE0005B3D5 /* DemoListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */; }; + 225B36381F6EBA040005B3D5 /* IntAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */; }; + 225B36391F6EBA040005B3D5 /* DayAxisValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */; }; + 225B363A1F6EBA040005B3D5 /* DateValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */; }; + 225B363B1F6EBA040005B3D5 /* LargeValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */; }; + 225B36401F6EBA1D0005B3D5 /* XYMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */; }; + 225B36411F6EBA1D0005B3D5 /* BalloonMarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */; }; + 225B36421F6EBA1D0005B3D5 /* RadarMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */; }; + 225B365B1F6EBA470005B3D5 /* MultipleLinesChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */; }; + 225B365C1F6EBA470005B3D5 /* MultipleBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */; }; + 225B365D1F6EBA470005B3D5 /* HalfPieChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */; }; + 225B365E1F6EBA470005B3D5 /* LineChartTimeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */; }; + 225B365F1F6EBA470005B3D5 /* ColoredLineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */; }; + 225B36601F6EBA470005B3D5 /* LineChart2ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */; }; + 225B36611F6EBA470005B3D5 /* LineChart1ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */; }; + 225B36621F6EBA470005B3D5 /* NegativeStackedBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */; }; + 225B36631F6EBA470005B3D5 /* ScatterChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */; }; + 225B36641F6EBA470005B3D5 /* StackedBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */; }; + 225B36651F6EBA470005B3D5 /* BubbleChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */; }; + 225B36661F6EBA470005B3D5 /* LineChartFilledViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */; }; + 225B36671F6EBA470005B3D5 /* PositiveNegativeBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */; }; + 225B36681F6EBA470005B3D5 /* AnotherBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */; }; + 225B36691F6EBA470005B3D5 /* PieChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */; }; + 225B366A1F6EBA470005B3D5 /* CubicLineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */; }; + 225B366B1F6EBA470005B3D5 /* RadarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */; }; + 225B366C1F6EBA470005B3D5 /* HorizontalBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */; }; + 225B366D1F6EBA470005B3D5 /* PiePolylineChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */; }; + 225B366E1F6EBA470005B3D5 /* CombinedChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */; }; + 225B366F1F6EBA470005B3D5 /* BarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */; }; + 225B36701F6EBA470005B3D5 /* SinusBarChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */; }; + 225B36711F6EBA470005B3D5 /* CandleStickChartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */; }; + 225B36721F6EBA5E0005B3D5 /* DemoListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */; }; + 225B36731F6EBA5E0005B3D5 /* RadarMarkerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */; }; + 225B36741F6EBA640005B3D5 /* AnotherBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */; }; + 225B36751F6EBA640005B3D5 /* BarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */; }; + 225B36761F6EBA640005B3D5 /* BubbleChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */; }; + 225B36771F6EBA640005B3D5 /* CandleStickChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */; }; + 225B36781F6EBA640005B3D5 /* ColoredLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */; }; + 225B36791F6EBA640005B3D5 /* CombinedChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */; }; + 225B367A1F6EBA640005B3D5 /* CubicLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */; }; + 225B367B1F6EBA640005B3D5 /* HalfPieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */; }; + 225B367C1F6EBA640005B3D5 /* HorizontalBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */; }; + 225B367D1F6EBA640005B3D5 /* LineChart1ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */; }; + 225B367E1F6EBA640005B3D5 /* LineChart2ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */; }; + 225B367F1F6EBA640005B3D5 /* LineChartFilledViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */; }; + 225B36801F6EBA640005B3D5 /* LineChartTimeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */; }; + 225B36811F6EBA640005B3D5 /* MultipleBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */; }; + 225B36821F6EBA640005B3D5 /* MultipleLinesChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */; }; + 225B36831F6EBA640005B3D5 /* NegativeStackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */; }; + 225B36841F6EBA640005B3D5 /* PieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0CC7841ABB875400665592 /* PieChartViewController.xib */; }; + 225B36851F6EBA640005B3D5 /* PiePolylineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */; }; + 225B36861F6EBA640005B3D5 /* PositiveNegativeBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */; }; + 225B36871F6EBA640005B3D5 /* RadarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */; }; + 225B36881F6EBA640005B3D5 /* RealmDemosViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */; }; + 225B36891F6EBA640005B3D5 /* ScatterChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */; }; + 225B368A1F6EBA640005B3D5 /* SinusBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */; }; + 225B368B1F6EBA640005B3D5 /* StackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */; }; + 225B368C1F6EBBB00005B3D5 /* Charts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; }; + 225B368D1F6EBBB00005B3D5 /* Charts.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0630AE411D8126C0008859B0 /* Charts.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 55E356501ADC638F00A57971 /* BubbleChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */; }; + 55E356511ADC638F00A57971 /* BubbleChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */; }; + 5B0CC7851ABB875400665592 /* PieChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B0CC7831ABB875400665592 /* PieChartViewController.m */; }; + 5B0CC7861ABB875400665592 /* PieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0CC7841ABB875400665592 /* PieChartViewController.xib */; }; + 5B1B5DAB1E911A15006D1375 /* RealmDemosViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */; }; + 5B57BBB51A9B26AA0036A6CC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB41A9B26AA0036A6CC /* main.m */; }; + 5B57BBB81A9B26AA0036A6CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */; }; + 5B57BBBB1A9B26AA0036A6CC /* DemoListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */; }; + 5B613DA41D526AD5000F1E98 /* radar_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */; }; + 5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */; }; + 5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */; }; + 5B613DF01D5A50B6000F1E98 /* XYMarkerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */; }; + 5B613DF21D5A60DF000F1E98 /* LargeValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */; }; + 5B8EAF241AB3271B009697AA /* DemoListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */; }; + 5B8EAF281AB32CF5009697AA /* DemoBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */; }; + 5B8EAF301AB32E15009697AA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5B8EAF2F1AB32E15009697AA /* Images.xcassets */; }; + 5B9624411B38608C007763E2 /* NegativeStackedBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */; }; + 5B9624421B38608C007763E2 /* NegativeStackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */; }; + 5BD47E5B1ABB0263008FCEC6 /* BalloonMarker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */; }; + 5BD47E601ABB3C91008FCEC6 /* LineChart2ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */; }; + 5BD47E611ABB3C91008FCEC6 /* LineChart2ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */; }; + 5BD47E651ABB424E008FCEC6 /* BarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */; }; + 5BD47E661ABB424E008FCEC6 /* BarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */; }; + 5BD8F0741AB89CE500566E05 /* LineChart1ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */; }; + 5BD8F0751AB89CE500566E05 /* LineChart1ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */; }; + 5BDEDC411ABB7F73007D3A60 /* HorizontalBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */; }; + 5BDEDC421ABB7F73007D3A60 /* HorizontalBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */; }; + 5BDEDC471ABB871E007D3A60 /* CombinedChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */; }; + 5BDEDC481ABB871E007D3A60 /* CombinedChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */; }; + 5BE377DE1D425151006EB34F /* DayAxisValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */; }; + 5BE377F21D47FDF1006EB34F /* IntAxisValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */; }; + 5BE673801D5B496500A87BA2 /* HalfPieChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */; }; + 5BE673811D5B496500A87BA2 /* HalfPieChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */; }; + 5BE673921D5B4E0900A87BA2 /* LineChartFilledViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */; }; + 5BE673931D5B4E0900A87BA2 /* LineChartFilledViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */; }; + 5BE673941D5B4E0900A87BA2 /* LineChartTimeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */; }; + 5BE673951D5B4E0900A87BA2 /* LineChartTimeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */; }; + 5BE6739A1D5BAD7E00A87BA2 /* DateValueFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */; }; + 5BE7E7621C693098000A0377 /* PositiveNegativeBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */; }; + 5BE7E7631C693098000A0377 /* PositiveNegativeBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */; }; + 5BEAED121ABBFB2B0013F194 /* AnotherBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */; }; + 5BEAED131ABBFB2B0013F194 /* AnotherBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */; }; + 5BEAED1B1ABBFB340013F194 /* ScatterChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */; }; + 5BEAED1C1ABBFB340013F194 /* ScatterChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */; }; + 5BEAED1D1ABBFB340013F194 /* StackedBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */; }; + 5BEAED1E1ABBFB340013F194 /* StackedBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */; }; + 5BEAED251ABC0BE20013F194 /* MultipleBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */; }; + 5BEAED261ABC0BE20013F194 /* MultipleBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */; }; + 5BEAED271ABC0BE20013F194 /* MultipleLinesChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */; }; + 5BEAED281ABC0BE20013F194 /* MultipleLinesChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */; }; + 5BEAED2C1ABC160F0013F194 /* CandleStickChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */; }; + 5BEAED2D1ABC160F0013F194 /* CandleStickChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */; }; + 5BEAED311ABC18F00013F194 /* CubicLineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */; }; + 5BEAED321ABC18F00013F194 /* CubicLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */; }; + 5BEAED361ABC192F0013F194 /* RadarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */; }; + 5BEAED371ABC192F0013F194 /* RadarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */; }; + 5BEAED3B1ABC199F0013F194 /* ColoredLineChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */; }; + 5BEAED3C1ABC199F0013F194 /* ColoredLineChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */; }; + 5BEAED401ABC1AC60013F194 /* SinusBarChartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */; }; + 5BEAED411ABC1AC60013F194 /* SinusBarChartViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */; }; + B64D06EB1FB199130067418D /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B64D06EA1FB199130067418D /* Launch Screen.storyboard */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0630AE401D8126C0008859B0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 06165F241D8110E600722320; - remoteInfo = Charts; - }; - 0630AE421D8126C0008859B0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 06165F2E1D8110E600722320; - remoteInfo = ChartsTests; - }; - 0630AE531D81271B008859B0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = A58A4ED274A941CA248EA921; - remoteInfo = Charts; - }; - 225B368E1F6EBBB00005B3D5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = A58A4ED274A941CA248EA921; - remoteInfo = Charts; - }; + 0630AE401D8126C0008859B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 06165F241D8110E600722320; + remoteInfo = Charts; + }; + 0630AE421D8126C0008859B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 06165F2E1D8110E600722320; + remoteInfo = ChartsTests; + }; + 225B368E1F6EBBB00005B3D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A58A4ED274A941CA248EA921; + remoteInfo = Charts; + }; + 22A4867B1FBA6D7000EC9A0F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A58A4ED274A941CA248EA921; + remoteInfo = Charts; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 225B36901F6EBBB10005B3D5 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 225B368D1F6EBBB00005B3D5 /* Charts.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - 5BB4B0751ACA710D00E2EF4D /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 0630AE521D81271B008859B0 /* Charts.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; + 225B36901F6EBBB10005B3D5 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 225B368D1F6EBBB00005B3D5 /* Charts.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0439A3511C9FF95F00496F83 /* PiePolylineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiePolylineChartViewController.h; sourceTree = ""; }; - 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PiePolylineChartViewController.m; sourceTree = ""; }; - 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PiePolylineChartViewController.xib; sourceTree = ""; }; - 0630AE391D8126C0008859B0 /* Charts.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Charts.xcodeproj; path = ../Charts.xcodeproj; sourceTree = ""; }; - 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ChartsDemo-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoBaseViewController.swift; sourceTree = ""; }; - 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoListViewController.swift; sourceTree = ""; }; - 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntAxisValueFormatter.swift; sourceTree = ""; }; - 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayAxisValueFormatter.swift; sourceTree = ""; }; - 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateValueFormatter.swift; sourceTree = ""; }; - 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LargeValueFormatter.swift; sourceTree = ""; }; - 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XYMarkerView.swift; sourceTree = ""; }; - 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalloonMarker.swift; sourceTree = ""; }; - 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarMarkerView.swift; sourceTree = ""; }; - 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleLinesChartViewController.swift; sourceTree = ""; }; - 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleBarChartViewController.swift; sourceTree = ""; }; - 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HalfPieChartViewController.swift; sourceTree = ""; }; - 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartTimeViewController.swift; sourceTree = ""; }; - 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColoredLineChartViewController.swift; sourceTree = ""; }; - 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChart2ViewController.swift; sourceTree = ""; }; - 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChart1ViewController.swift; sourceTree = ""; }; - 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NegativeStackedBarChartViewController.swift; sourceTree = ""; }; - 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScatterChartViewController.swift; sourceTree = ""; }; - 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StackedBarChartViewController.swift; sourceTree = ""; }; - 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleChartViewController.swift; sourceTree = ""; }; - 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartFilledViewController.swift; sourceTree = ""; }; - 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositiveNegativeBarChartViewController.swift; sourceTree = ""; }; - 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnotherBarChartViewController.swift; sourceTree = ""; }; - 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PieChartViewController.swift; sourceTree = ""; }; - 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CubicLineChartViewController.swift; sourceTree = ""; }; - 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarChartViewController.swift; sourceTree = ""; }; - 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HorizontalBarChartViewController.swift; sourceTree = ""; }; - 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiePolylineChartViewController.swift; sourceTree = ""; }; - 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CombinedChartViewController.swift; sourceTree = ""; }; - 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarChartViewController.swift; sourceTree = ""; }; - 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SinusBarChartViewController.swift; sourceTree = ""; }; - 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CandleStickChartViewController.swift; sourceTree = ""; }; - 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleChartViewController.xib; sourceTree = ""; }; - 55E3564E1ADC638F00A57971 /* BubbleChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BubbleChartViewController.h; sourceTree = ""; }; - 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BubbleChartViewController.m; sourceTree = ""; }; - 5B0CC7821ABB875400665592 /* PieChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PieChartViewController.h; sourceTree = ""; }; - 5B0CC7831ABB875400665592 /* PieChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PieChartViewController.m; sourceTree = ""; }; - 5B0CC7841ABB875400665592 /* PieChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PieChartViewController.xib; sourceTree = ""; }; - 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = RealmDemosViewController.xib; path = XIBs/Demos/RealmDemosViewController.xib; sourceTree = SOURCE_ROOT; }; - 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChartsDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B57BBB31A9B26AA0036A6CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5B57BBB41A9B26AA0036A6CC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 5B57BBB61A9B26AA0036A6CC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 5B57BBB91A9B26AA0036A6CC /* DemoListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DemoListViewController.h; sourceTree = ""; }; - 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DemoListViewController.m; sourceTree = ""; }; - 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radar_marker@3x.png"; sourceTree = ""; }; - 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadarMarkerView.swift; sourceTree = ""; }; - 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RadarMarkerView.xib; sourceTree = ""; }; - 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XYMarkerView.swift; sourceTree = ""; }; - 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LargeValueFormatter.swift; sourceTree = ""; }; - 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoListViewController.xib; sourceTree = ""; }; - 5B8EAF251AB32CF5009697AA /* DemoBaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoBaseViewController.h; sourceTree = ""; }; - 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoBaseViewController.m; sourceTree = ""; }; - 5B8EAF2F1AB32E15009697AA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 5B96243E1B38608C007763E2 /* NegativeStackedBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NegativeStackedBarChartViewController.h; sourceTree = ""; }; - 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NegativeStackedBarChartViewController.m; sourceTree = ""; }; - 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NegativeStackedBarChartViewController.xib; sourceTree = ""; }; - 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BalloonMarker.swift; sourceTree = ""; }; - 5BD47E5C1ABB0273008FCEC6 /* ChartsDemo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ChartsDemo-Bridging-Header.h"; sourceTree = ""; }; - 5BD47E5D1ABB3C91008FCEC6 /* LineChart2ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChart2ViewController.h; sourceTree = ""; }; - 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChart2ViewController.m; sourceTree = ""; }; - 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChart2ViewController.xib; sourceTree = ""; }; - 5BD47E621ABB424E008FCEC6 /* BarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BarChartViewController.h; sourceTree = ""; }; - 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BarChartViewController.m; sourceTree = ""; }; - 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BarChartViewController.xib; sourceTree = ""; }; - 5BD8F0711AB89CE500566E05 /* LineChart1ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChart1ViewController.h; sourceTree = ""; }; - 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChart1ViewController.m; sourceTree = ""; }; - 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChart1ViewController.xib; sourceTree = ""; }; - 5BDEDC3E1ABB7F73007D3A60 /* HorizontalBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HorizontalBarChartViewController.h; sourceTree = ""; }; - 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HorizontalBarChartViewController.m; sourceTree = ""; }; - 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HorizontalBarChartViewController.xib; sourceTree = ""; }; - 5BDEDC441ABB871E007D3A60 /* CombinedChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CombinedChartViewController.h; sourceTree = ""; }; - 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CombinedChartViewController.m; sourceTree = ""; }; - 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CombinedChartViewController.xib; sourceTree = ""; }; - 5BE377DC1D425151006EB34F /* DayAxisValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DayAxisValueFormatter.h; sourceTree = ""; }; - 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DayAxisValueFormatter.m; sourceTree = ""; }; - 5BE377F01D47FDF1006EB34F /* IntAxisValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntAxisValueFormatter.h; sourceTree = ""; }; - 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IntAxisValueFormatter.m; sourceTree = ""; }; - 5BE6737D1D5B496500A87BA2 /* HalfPieChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HalfPieChartViewController.h; sourceTree = ""; }; - 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HalfPieChartViewController.m; sourceTree = ""; }; - 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HalfPieChartViewController.xib; sourceTree = ""; }; - 5BE6738C1D5B4E0900A87BA2 /* LineChartFilledViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChartFilledViewController.h; sourceTree = ""; }; - 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChartFilledViewController.m; sourceTree = ""; }; - 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChartFilledViewController.xib; sourceTree = ""; }; - 5BE6738F1D5B4E0900A87BA2 /* LineChartTimeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChartTimeViewController.h; sourceTree = ""; }; - 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChartTimeViewController.m; sourceTree = ""; }; - 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChartTimeViewController.xib; sourceTree = ""; }; - 5BE673981D5BAD7E00A87BA2 /* DateValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateValueFormatter.h; sourceTree = ""; }; - 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DateValueFormatter.m; sourceTree = ""; }; - 5BE7E75F1C693098000A0377 /* PositiveNegativeBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PositiveNegativeBarChartViewController.h; sourceTree = ""; }; - 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PositiveNegativeBarChartViewController.m; sourceTree = ""; }; - 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PositiveNegativeBarChartViewController.xib; sourceTree = ""; }; - 5BEAED0F1ABBFB2B0013F194 /* AnotherBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnotherBarChartViewController.h; sourceTree = ""; }; - 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnotherBarChartViewController.m; sourceTree = ""; }; - 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AnotherBarChartViewController.xib; sourceTree = ""; }; - 5BEAED151ABBFB340013F194 /* ScatterChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScatterChartViewController.h; sourceTree = ""; }; - 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScatterChartViewController.m; sourceTree = ""; }; - 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ScatterChartViewController.xib; sourceTree = ""; }; - 5BEAED181ABBFB340013F194 /* StackedBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackedBarChartViewController.h; sourceTree = ""; }; - 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StackedBarChartViewController.m; sourceTree = ""; }; - 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StackedBarChartViewController.xib; sourceTree = ""; }; - 5BEAED1F1ABC0BE20013F194 /* MultipleBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipleBarChartViewController.h; sourceTree = ""; }; - 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipleBarChartViewController.m; sourceTree = ""; }; - 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MultipleBarChartViewController.xib; sourceTree = ""; }; - 5BEAED221ABC0BE20013F194 /* MultipleLinesChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipleLinesChartViewController.h; sourceTree = ""; }; - 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipleLinesChartViewController.m; sourceTree = ""; }; - 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MultipleLinesChartViewController.xib; sourceTree = ""; }; - 5BEAED291ABC160F0013F194 /* CandleStickChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CandleStickChartViewController.h; sourceTree = ""; }; - 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CandleStickChartViewController.m; sourceTree = ""; }; - 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CandleStickChartViewController.xib; sourceTree = ""; }; - 5BEAED2E1ABC18F00013F194 /* CubicLineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CubicLineChartViewController.h; sourceTree = ""; }; - 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CubicLineChartViewController.m; sourceTree = ""; }; - 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CubicLineChartViewController.xib; sourceTree = ""; }; - 5BEAED331ABC192F0013F194 /* RadarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RadarChartViewController.h; sourceTree = ""; }; - 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RadarChartViewController.m; sourceTree = ""; }; - 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RadarChartViewController.xib; sourceTree = ""; }; - 5BEAED381ABC199F0013F194 /* ColoredLineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColoredLineChartViewController.h; sourceTree = ""; }; - 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColoredLineChartViewController.m; sourceTree = ""; }; - 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ColoredLineChartViewController.xib; sourceTree = ""; }; - 5BEAED3D1ABC1AC60013F194 /* SinusBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinusBarChartViewController.h; sourceTree = ""; }; - 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SinusBarChartViewController.m; sourceTree = ""; }; - 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SinusBarChartViewController.xib; sourceTree = ""; }; - B64D06EA1FB199130067418D /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; + 0439A3511C9FF95F00496F83 /* PiePolylineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PiePolylineChartViewController.h; sourceTree = ""; }; + 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PiePolylineChartViewController.m; sourceTree = ""; }; + 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PiePolylineChartViewController.xib; sourceTree = ""; }; + 0630AE391D8126C0008859B0 /* Charts.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Charts.xcodeproj; path = ../Charts.xcodeproj; sourceTree = ""; }; + 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ChartsDemo-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoBaseViewController.swift; sourceTree = ""; }; + 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoListViewController.swift; sourceTree = ""; }; + 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntAxisValueFormatter.swift; sourceTree = ""; }; + 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayAxisValueFormatter.swift; sourceTree = ""; }; + 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateValueFormatter.swift; sourceTree = ""; }; + 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LargeValueFormatter.swift; sourceTree = ""; }; + 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XYMarkerView.swift; sourceTree = ""; }; + 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalloonMarker.swift; sourceTree = ""; }; + 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarMarkerView.swift; sourceTree = ""; }; + 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleLinesChartViewController.swift; sourceTree = ""; }; + 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleBarChartViewController.swift; sourceTree = ""; }; + 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HalfPieChartViewController.swift; sourceTree = ""; }; + 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartTimeViewController.swift; sourceTree = ""; }; + 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColoredLineChartViewController.swift; sourceTree = ""; }; + 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChart2ViewController.swift; sourceTree = ""; }; + 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChart1ViewController.swift; sourceTree = ""; }; + 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NegativeStackedBarChartViewController.swift; sourceTree = ""; }; + 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScatterChartViewController.swift; sourceTree = ""; }; + 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StackedBarChartViewController.swift; sourceTree = ""; }; + 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleChartViewController.swift; sourceTree = ""; }; + 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartFilledViewController.swift; sourceTree = ""; }; + 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositiveNegativeBarChartViewController.swift; sourceTree = ""; }; + 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnotherBarChartViewController.swift; sourceTree = ""; }; + 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PieChartViewController.swift; sourceTree = ""; }; + 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CubicLineChartViewController.swift; sourceTree = ""; }; + 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarChartViewController.swift; sourceTree = ""; }; + 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HorizontalBarChartViewController.swift; sourceTree = ""; }; + 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiePolylineChartViewController.swift; sourceTree = ""; }; + 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CombinedChartViewController.swift; sourceTree = ""; }; + 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarChartViewController.swift; sourceTree = ""; }; + 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SinusBarChartViewController.swift; sourceTree = ""; }; + 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CandleStickChartViewController.swift; sourceTree = ""; }; + 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleChartViewController.xib; sourceTree = ""; }; + 55E3564E1ADC638F00A57971 /* BubbleChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BubbleChartViewController.h; sourceTree = ""; }; + 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BubbleChartViewController.m; sourceTree = ""; }; + 5B0CC7821ABB875400665592 /* PieChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PieChartViewController.h; sourceTree = ""; }; + 5B0CC7831ABB875400665592 /* PieChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PieChartViewController.m; sourceTree = ""; }; + 5B0CC7841ABB875400665592 /* PieChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PieChartViewController.xib; sourceTree = ""; }; + 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = RealmDemosViewController.xib; path = XIBs/Demos/RealmDemosViewController.xib; sourceTree = SOURCE_ROOT; }; + 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChartsDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5B57BBB31A9B26AA0036A6CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5B57BBB41A9B26AA0036A6CC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 5B57BBB61A9B26AA0036A6CC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 5B57BBB91A9B26AA0036A6CC /* DemoListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DemoListViewController.h; sourceTree = ""; }; + 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DemoListViewController.m; sourceTree = ""; }; + 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "radar_marker@3x.png"; sourceTree = ""; }; + 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadarMarkerView.swift; sourceTree = ""; }; + 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RadarMarkerView.xib; sourceTree = ""; }; + 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XYMarkerView.swift; sourceTree = ""; }; + 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LargeValueFormatter.swift; sourceTree = ""; }; + 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoListViewController.xib; sourceTree = ""; }; + 5B8EAF251AB32CF5009697AA /* DemoBaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoBaseViewController.h; sourceTree = ""; }; + 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoBaseViewController.m; sourceTree = ""; }; + 5B8EAF2F1AB32E15009697AA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 5B96243E1B38608C007763E2 /* NegativeStackedBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NegativeStackedBarChartViewController.h; sourceTree = ""; }; + 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NegativeStackedBarChartViewController.m; sourceTree = ""; }; + 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NegativeStackedBarChartViewController.xib; sourceTree = ""; }; + 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BalloonMarker.swift; sourceTree = ""; }; + 5BD47E5C1ABB0273008FCEC6 /* ChartsDemo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ChartsDemo-Bridging-Header.h"; sourceTree = ""; }; + 5BD47E5D1ABB3C91008FCEC6 /* LineChart2ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChart2ViewController.h; sourceTree = ""; }; + 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChart2ViewController.m; sourceTree = ""; }; + 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChart2ViewController.xib; sourceTree = ""; }; + 5BD47E621ABB424E008FCEC6 /* BarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BarChartViewController.h; sourceTree = ""; }; + 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BarChartViewController.m; sourceTree = ""; }; + 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BarChartViewController.xib; sourceTree = ""; }; + 5BD8F0711AB89CE500566E05 /* LineChart1ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChart1ViewController.h; sourceTree = ""; }; + 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChart1ViewController.m; sourceTree = ""; }; + 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChart1ViewController.xib; sourceTree = ""; }; + 5BDEDC3E1ABB7F73007D3A60 /* HorizontalBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HorizontalBarChartViewController.h; sourceTree = ""; }; + 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HorizontalBarChartViewController.m; sourceTree = ""; }; + 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HorizontalBarChartViewController.xib; sourceTree = ""; }; + 5BDEDC441ABB871E007D3A60 /* CombinedChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CombinedChartViewController.h; sourceTree = ""; }; + 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CombinedChartViewController.m; sourceTree = ""; }; + 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CombinedChartViewController.xib; sourceTree = ""; }; + 5BE377DC1D425151006EB34F /* DayAxisValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DayAxisValueFormatter.h; sourceTree = ""; }; + 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DayAxisValueFormatter.m; sourceTree = ""; }; + 5BE377F01D47FDF1006EB34F /* IntAxisValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntAxisValueFormatter.h; sourceTree = ""; }; + 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IntAxisValueFormatter.m; sourceTree = ""; }; + 5BE6737D1D5B496500A87BA2 /* HalfPieChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HalfPieChartViewController.h; sourceTree = ""; }; + 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HalfPieChartViewController.m; sourceTree = ""; }; + 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HalfPieChartViewController.xib; sourceTree = ""; }; + 5BE6738C1D5B4E0900A87BA2 /* LineChartFilledViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChartFilledViewController.h; sourceTree = ""; }; + 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChartFilledViewController.m; sourceTree = ""; }; + 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChartFilledViewController.xib; sourceTree = ""; }; + 5BE6738F1D5B4E0900A87BA2 /* LineChartTimeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineChartTimeViewController.h; sourceTree = ""; }; + 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineChartTimeViewController.m; sourceTree = ""; }; + 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LineChartTimeViewController.xib; sourceTree = ""; }; + 5BE673981D5BAD7E00A87BA2 /* DateValueFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateValueFormatter.h; sourceTree = ""; }; + 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DateValueFormatter.m; sourceTree = ""; }; + 5BE7E75F1C693098000A0377 /* PositiveNegativeBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PositiveNegativeBarChartViewController.h; sourceTree = ""; }; + 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PositiveNegativeBarChartViewController.m; sourceTree = ""; }; + 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PositiveNegativeBarChartViewController.xib; sourceTree = ""; }; + 5BEAED0F1ABBFB2B0013F194 /* AnotherBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnotherBarChartViewController.h; sourceTree = ""; }; + 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnotherBarChartViewController.m; sourceTree = ""; }; + 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AnotherBarChartViewController.xib; sourceTree = ""; }; + 5BEAED151ABBFB340013F194 /* ScatterChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScatterChartViewController.h; sourceTree = ""; }; + 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScatterChartViewController.m; sourceTree = ""; }; + 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ScatterChartViewController.xib; sourceTree = ""; }; + 5BEAED181ABBFB340013F194 /* StackedBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackedBarChartViewController.h; sourceTree = ""; }; + 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StackedBarChartViewController.m; sourceTree = ""; }; + 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StackedBarChartViewController.xib; sourceTree = ""; }; + 5BEAED1F1ABC0BE20013F194 /* MultipleBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipleBarChartViewController.h; sourceTree = ""; }; + 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipleBarChartViewController.m; sourceTree = ""; }; + 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MultipleBarChartViewController.xib; sourceTree = ""; }; + 5BEAED221ABC0BE20013F194 /* MultipleLinesChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipleLinesChartViewController.h; sourceTree = ""; }; + 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipleLinesChartViewController.m; sourceTree = ""; }; + 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MultipleLinesChartViewController.xib; sourceTree = ""; }; + 5BEAED291ABC160F0013F194 /* CandleStickChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CandleStickChartViewController.h; sourceTree = ""; }; + 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CandleStickChartViewController.m; sourceTree = ""; }; + 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CandleStickChartViewController.xib; sourceTree = ""; }; + 5BEAED2E1ABC18F00013F194 /* CubicLineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CubicLineChartViewController.h; sourceTree = ""; }; + 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CubicLineChartViewController.m; sourceTree = ""; }; + 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CubicLineChartViewController.xib; sourceTree = ""; }; + 5BEAED331ABC192F0013F194 /* RadarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RadarChartViewController.h; sourceTree = ""; }; + 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RadarChartViewController.m; sourceTree = ""; }; + 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RadarChartViewController.xib; sourceTree = ""; }; + 5BEAED381ABC199F0013F194 /* ColoredLineChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColoredLineChartViewController.h; sourceTree = ""; }; + 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColoredLineChartViewController.m; sourceTree = ""; }; + 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ColoredLineChartViewController.xib; sourceTree = ""; }; + 5BEAED3D1ABC1AC60013F194 /* SinusBarChartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinusBarChartViewController.h; sourceTree = ""; }; + 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SinusBarChartViewController.m; sourceTree = ""; }; + 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SinusBarChartViewController.xib; sourceTree = ""; }; + B64D06EA1FB199130067418D /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 225B361A1F6EB9A50005B3D5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 225B368C1F6EBBB00005B3D5 /* Charts.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5B57BBAC1A9B26AA0036A6CC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0630AE511D81271B008859B0 /* Charts.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; + 225B361A1F6EB9A50005B3D5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 225B368C1F6EBBB00005B3D5 /* Charts.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5B57BBAC1A9B26AA0036A6CC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 22A486791FBA6D7000EC9A0F /* Charts.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0630AE3A1D8126C0008859B0 /* Products */ = { - isa = PBXGroup; - children = ( - 0630AE411D8126C0008859B0 /* Charts.framework */, - 0630AE431D8126C0008859B0 /* ChartsTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 225B361E1F6EB9A50005B3D5 /* Swift */ = { - isa = PBXGroup; - children = ( - 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */, - 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */, - 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */, - 225B363C1F6EBA180005B3D5 /* Components */, - 225B36331F6EB9FE0005B3D5 /* Formatters */, - 225B36431F6EBA410005B3D5 /* Demos */, - ); - path = Swift; - sourceTree = ""; - }; - 225B36331F6EB9FE0005B3D5 /* Formatters */ = { - isa = PBXGroup; - children = ( - 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */, - 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */, - 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */, - 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */, - ); - path = Formatters; - sourceTree = ""; - }; - 225B363C1F6EBA180005B3D5 /* Components */ = { - isa = PBXGroup; - children = ( - 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */, - 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */, - 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */, - ); - path = Components; - sourceTree = ""; - }; - 225B36431F6EBA410005B3D5 /* Demos */ = { - isa = PBXGroup; - children = ( - 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */, - 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */, - 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */, - 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */, - 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */, - 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */, - 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */, - 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */, - 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */, - 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */, - 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */, - 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */, - 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */, - 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */, - 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */, - 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */, - 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */, - 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */, - 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */, - 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */, - 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */, - 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */, - 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */, - ); - path = Demos; - sourceTree = ""; - }; - 227136F41F6EB665006D2A11 /* XIBs */ = { - isa = PBXGroup; - children = ( - 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */, - 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */, - 227136F61F6EB69D006D2A11 /* Demos */, - ); - path = XIBs; - sourceTree = ""; - }; - 227136F61F6EB69D006D2A11 /* Demos */ = { - isa = PBXGroup; - children = ( - 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */, - 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */, - 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */, - 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */, - 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */, - 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */, - 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */, - 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */, - 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */, - 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */, - 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */, - 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */, - 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */, - 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */, - 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */, - 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */, - 5B0CC7841ABB875400665592 /* PieChartViewController.xib */, - 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */, - 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */, - 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */, - 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */, - 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */, - 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */, - 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */, - ); - path = Demos; - sourceTree = ""; - }; - 5B57BBA61A9B26AA0036A6CC = { - isa = PBXGroup; - children = ( - 5B57BBB11A9B26AA0036A6CC /* Objective-C */, - 225B361E1F6EB9A50005B3D5 /* Swift */, - 227136F41F6EB665006D2A11 /* XIBs */, - 5B8EAF2E1AB32E15009697AA /* Resources */, - 5B57BBB21A9B26AA0036A6CC /* Supporting Files */, - 5B57BBB01A9B26AA0036A6CC /* Products */, - 0630AE391D8126C0008859B0 /* Charts.xcodeproj */, - ); - sourceTree = ""; - }; - 5B57BBB01A9B26AA0036A6CC /* Products */ = { - isa = PBXGroup; - children = ( - 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */, - 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */, - ); - name = Products; - sourceTree = ""; - }; - 5B57BBB11A9B26AA0036A6CC /* Objective-C */ = { - isa = PBXGroup; - children = ( - 5B57BBB61A9B26AA0036A6CC /* AppDelegate.h */, - 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */, - 5B57BBB91A9B26AA0036A6CC /* DemoListViewController.h */, - 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */, - 5B8EAF251AB32CF5009697AA /* DemoBaseViewController.h */, - 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */, - 5BE377D41D42511A006EB34F /* Formatters */, - 5BD47E541ABB0177008FCEC6 /* Components */, - 5BD8F06F1AB89C7100566E05 /* Demos */, - ); - path = "Objective-C"; - sourceTree = ""; - }; - 5B57BBB21A9B26AA0036A6CC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 5B57BBB31A9B26AA0036A6CC /* Info.plist */, - 5B57BBB41A9B26AA0036A6CC /* main.m */, - 5BD47E5C1ABB0273008FCEC6 /* ChartsDemo-Bridging-Header.h */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - 5B613DA21D526AD5000F1E98 /* markers */ = { - isa = PBXGroup; - children = ( - 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */, - ); - path = markers; - sourceTree = ""; - }; - 5B8EAF2E1AB32E15009697AA /* Resources */ = { - isa = PBXGroup; - children = ( - B64D06EA1FB199130067418D /* Launch Screen.storyboard */, - 5B8EAF2F1AB32E15009697AA /* Images.xcassets */, - 5B613DA21D526AD5000F1E98 /* markers */, - ); - path = Resources; - sourceTree = ""; - }; - 5BD47E541ABB0177008FCEC6 /* Components */ = { - isa = PBXGroup; - children = ( - 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */, - 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */, - 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */, - ); - path = Components; - sourceTree = ""; - }; - 5BD8F06F1AB89C7100566E05 /* Demos */ = { - isa = PBXGroup; - children = ( - 5BEAED0F1ABBFB2B0013F194 /* AnotherBarChartViewController.h */, - 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */, - 5BD47E621ABB424E008FCEC6 /* BarChartViewController.h */, - 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */, - 55E3564E1ADC638F00A57971 /* BubbleChartViewController.h */, - 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */, - 5BEAED291ABC160F0013F194 /* CandleStickChartViewController.h */, - 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */, - 5BEAED381ABC199F0013F194 /* ColoredLineChartViewController.h */, - 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */, - 5BDEDC441ABB871E007D3A60 /* CombinedChartViewController.h */, - 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */, - 5BEAED2E1ABC18F00013F194 /* CubicLineChartViewController.h */, - 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */, - 5BE6737D1D5B496500A87BA2 /* HalfPieChartViewController.h */, - 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */, - 5BDEDC3E1ABB7F73007D3A60 /* HorizontalBarChartViewController.h */, - 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */, - 5BD8F0711AB89CE500566E05 /* LineChart1ViewController.h */, - 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */, - 5BD47E5D1ABB3C91008FCEC6 /* LineChart2ViewController.h */, - 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */, - 5BE6738C1D5B4E0900A87BA2 /* LineChartFilledViewController.h */, - 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */, - 5BE6738F1D5B4E0900A87BA2 /* LineChartTimeViewController.h */, - 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */, - 5BEAED1F1ABC0BE20013F194 /* MultipleBarChartViewController.h */, - 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */, - 5BEAED221ABC0BE20013F194 /* MultipleLinesChartViewController.h */, - 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */, - 5B96243E1B38608C007763E2 /* NegativeStackedBarChartViewController.h */, - 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */, - 5B0CC7821ABB875400665592 /* PieChartViewController.h */, - 5B0CC7831ABB875400665592 /* PieChartViewController.m */, - 0439A3511C9FF95F00496F83 /* PiePolylineChartViewController.h */, - 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */, - 5BE7E75F1C693098000A0377 /* PositiveNegativeBarChartViewController.h */, - 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */, - 5BEAED331ABC192F0013F194 /* RadarChartViewController.h */, - 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */, - 5BEAED151ABBFB340013F194 /* ScatterChartViewController.h */, - 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */, - 5BEAED3D1ABC1AC60013F194 /* SinusBarChartViewController.h */, - 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */, - 5BEAED181ABBFB340013F194 /* StackedBarChartViewController.h */, - 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */, - ); - path = Demos; - sourceTree = ""; - }; - 5BE377D41D42511A006EB34F /* Formatters */ = { - isa = PBXGroup; - children = ( - 5BE377DC1D425151006EB34F /* DayAxisValueFormatter.h */, - 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */, - 5BE377F01D47FDF1006EB34F /* IntAxisValueFormatter.h */, - 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */, - 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */, - 5BE673981D5BAD7E00A87BA2 /* DateValueFormatter.h */, - 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */, - ); - path = Formatters; - sourceTree = ""; - }; + 0630AE3A1D8126C0008859B0 /* Products */ = { + isa = PBXGroup; + children = ( + 0630AE411D8126C0008859B0 /* Charts.framework */, + 0630AE431D8126C0008859B0 /* ChartsTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 225B361E1F6EB9A50005B3D5 /* Swift */ = { + isa = PBXGroup; + children = ( + 225B361F1F6EB9A50005B3D5 /* AppDelegate.swift */, + 225B362F1F6EB9EE0005B3D5 /* DemoBaseViewController.swift */, + 225B36301F6EB9EE0005B3D5 /* DemoListViewController.swift */, + 225B363C1F6EBA180005B3D5 /* Components */, + 225B36331F6EB9FE0005B3D5 /* Formatters */, + 225B36431F6EBA410005B3D5 /* Demos */, + ); + path = Swift; + sourceTree = ""; + }; + 225B36331F6EB9FE0005B3D5 /* Formatters */ = { + isa = PBXGroup; + children = ( + 225B36351F6EB9FE0005B3D5 /* DayAxisValueFormatter.swift */, + 225B36361F6EB9FE0005B3D5 /* DateValueFormatter.swift */, + 225B36341F6EB9FE0005B3D5 /* IntAxisValueFormatter.swift */, + 225B36371F6EB9FE0005B3D5 /* LargeValueFormatter.swift */, + ); + path = Formatters; + sourceTree = ""; + }; + 225B363C1F6EBA180005B3D5 /* Components */ = { + isa = PBXGroup; + children = ( + 225B363E1F6EBA180005B3D5 /* BalloonMarker.swift */, + 225B363F1F6EBA180005B3D5 /* RadarMarkerView.swift */, + 225B363D1F6EBA180005B3D5 /* XYMarkerView.swift */, + ); + path = Components; + sourceTree = ""; + }; + 225B36431F6EBA410005B3D5 /* Demos */ = { + isa = PBXGroup; + children = ( + 225B36511F6EBA410005B3D5 /* AnotherBarChartViewController.swift */, + 225B36581F6EBA410005B3D5 /* BarChartViewController.swift */, + 225B364E1F6EBA410005B3D5 /* BubbleChartViewController.swift */, + 225B365A1F6EBA410005B3D5 /* CandleStickChartViewController.swift */, + 225B36481F6EBA410005B3D5 /* ColoredLineChartViewController.swift */, + 225B36571F6EBA410005B3D5 /* CombinedChartViewController.swift */, + 225B36531F6EBA410005B3D5 /* CubicLineChartViewController.swift */, + 225B36461F6EBA410005B3D5 /* HalfPieChartViewController.swift */, + 225B36551F6EBA410005B3D5 /* HorizontalBarChartViewController.swift */, + 225B364A1F6EBA410005B3D5 /* LineChart1ViewController.swift */, + 225B36491F6EBA410005B3D5 /* LineChart2ViewController.swift */, + 225B364F1F6EBA410005B3D5 /* LineChartFilledViewController.swift */, + 225B36471F6EBA410005B3D5 /* LineChartTimeViewController.swift */, + 225B36441F6EBA410005B3D5 /* MultipleLinesChartViewController.swift */, + 225B36451F6EBA410005B3D5 /* MultipleBarChartViewController.swift */, + 225B364B1F6EBA410005B3D5 /* NegativeStackedBarChartViewController.swift */, + 225B36521F6EBA410005B3D5 /* PieChartViewController.swift */, + 225B36561F6EBA410005B3D5 /* PiePolylineChartViewController.swift */, + 225B36501F6EBA410005B3D5 /* PositiveNegativeBarChartViewController.swift */, + 225B36541F6EBA410005B3D5 /* RadarChartViewController.swift */, + 225B364C1F6EBA410005B3D5 /* ScatterChartViewController.swift */, + 225B36591F6EBA410005B3D5 /* SinusBarChartViewController.swift */, + 225B364D1F6EBA410005B3D5 /* StackedBarChartViewController.swift */, + ); + path = Demos; + sourceTree = ""; + }; + 227136F41F6EB665006D2A11 /* XIBs */ = { + isa = PBXGroup; + children = ( + 5B8EAF231AB3271B009697AA /* DemoListViewController.xib */, + 5B613DB41D526EA8000F1E98 /* RadarMarkerView.xib */, + 227136F61F6EB69D006D2A11 /* Demos */, + ); + path = XIBs; + sourceTree = ""; + }; + 227136F61F6EB69D006D2A11 /* Demos */ = { + isa = PBXGroup; + children = ( + 5BEAED111ABBFB2B0013F194 /* AnotherBarChartViewController.xib */, + 5BD47E641ABB424E008FCEC6 /* BarChartViewController.xib */, + 55E3564D1ADC638F00A57971 /* BubbleChartViewController.xib */, + 5BEAED2B1ABC160F0013F194 /* CandleStickChartViewController.xib */, + 5BEAED3A1ABC199F0013F194 /* ColoredLineChartViewController.xib */, + 5BDEDC461ABB871E007D3A60 /* CombinedChartViewController.xib */, + 5BEAED301ABC18F00013F194 /* CubicLineChartViewController.xib */, + 5BE6737F1D5B496500A87BA2 /* HalfPieChartViewController.xib */, + 5BDEDC401ABB7F73007D3A60 /* HorizontalBarChartViewController.xib */, + 5BD8F0731AB89CE500566E05 /* LineChart1ViewController.xib */, + 5BD47E5F1ABB3C91008FCEC6 /* LineChart2ViewController.xib */, + 5BE6738E1D5B4E0900A87BA2 /* LineChartFilledViewController.xib */, + 5BE673911D5B4E0900A87BA2 /* LineChartTimeViewController.xib */, + 5BEAED211ABC0BE20013F194 /* MultipleBarChartViewController.xib */, + 5BEAED241ABC0BE20013F194 /* MultipleLinesChartViewController.xib */, + 5B9624401B38608C007763E2 /* NegativeStackedBarChartViewController.xib */, + 5B0CC7841ABB875400665592 /* PieChartViewController.xib */, + 0471CBFB1CA1090A00E52DBC /* PiePolylineChartViewController.xib */, + 5BE7E7611C693098000A0377 /* PositiveNegativeBarChartViewController.xib */, + 5BEAED351ABC192F0013F194 /* RadarChartViewController.xib */, + 5B1B5DA91E911A15006D1375 /* RealmDemosViewController.xib */, + 5BEAED171ABBFB340013F194 /* ScatterChartViewController.xib */, + 5BEAED3F1ABC1AC60013F194 /* SinusBarChartViewController.xib */, + 5BEAED1A1ABBFB340013F194 /* StackedBarChartViewController.xib */, + ); + path = Demos; + sourceTree = ""; + }; + 5B57BBA61A9B26AA0036A6CC = { + isa = PBXGroup; + children = ( + 5B57BBB11A9B26AA0036A6CC /* Objective-C */, + 225B361E1F6EB9A50005B3D5 /* Swift */, + 227136F41F6EB665006D2A11 /* XIBs */, + 5B8EAF2E1AB32E15009697AA /* Resources */, + 5B57BBB21A9B26AA0036A6CC /* Supporting Files */, + 5B57BBB01A9B26AA0036A6CC /* Products */, + 0630AE391D8126C0008859B0 /* Charts.xcodeproj */, + ); + sourceTree = ""; + }; + 5B57BBB01A9B26AA0036A6CC /* Products */ = { + isa = PBXGroup; + children = ( + 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */, + 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */, + ); + name = Products; + sourceTree = ""; + }; + 5B57BBB11A9B26AA0036A6CC /* Objective-C */ = { + isa = PBXGroup; + children = ( + 5B57BBB61A9B26AA0036A6CC /* AppDelegate.h */, + 5B57BBB71A9B26AA0036A6CC /* AppDelegate.m */, + 5B57BBB91A9B26AA0036A6CC /* DemoListViewController.h */, + 5B57BBBA1A9B26AA0036A6CC /* DemoListViewController.m */, + 5B8EAF251AB32CF5009697AA /* DemoBaseViewController.h */, + 5B8EAF261AB32CF5009697AA /* DemoBaseViewController.m */, + 5BE377D41D42511A006EB34F /* Formatters */, + 5BD47E541ABB0177008FCEC6 /* Components */, + 5BD8F06F1AB89C7100566E05 /* Demos */, + ); + path = "Objective-C"; + sourceTree = ""; + }; + 5B57BBB21A9B26AA0036A6CC /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 5B57BBB31A9B26AA0036A6CC /* Info.plist */, + 5B57BBB41A9B26AA0036A6CC /* main.m */, + 5BD47E5C1ABB0273008FCEC6 /* ChartsDemo-Bridging-Header.h */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 5B613DA21D526AD5000F1E98 /* markers */ = { + isa = PBXGroup; + children = ( + 5B613DA31D526AD5000F1E98 /* radar_marker@3x.png */, + ); + path = markers; + sourceTree = ""; + }; + 5B8EAF2E1AB32E15009697AA /* Resources */ = { + isa = PBXGroup; + children = ( + B64D06EA1FB199130067418D /* Launch Screen.storyboard */, + 5B8EAF2F1AB32E15009697AA /* Images.xcassets */, + 5B613DA21D526AD5000F1E98 /* markers */, + ); + path = Resources; + sourceTree = ""; + }; + 5BD47E541ABB0177008FCEC6 /* Components */ = { + isa = PBXGroup; + children = ( + 5BD47E5A1ABB0263008FCEC6 /* BalloonMarker.swift */, + 5B613DB21D526DED000F1E98 /* RadarMarkerView.swift */, + 5B613DEF1D5A50B6000F1E98 /* XYMarkerView.swift */, + ); + path = Components; + sourceTree = ""; + }; + 5BD8F06F1AB89C7100566E05 /* Demos */ = { + isa = PBXGroup; + children = ( + 5BEAED0F1ABBFB2B0013F194 /* AnotherBarChartViewController.h */, + 5BEAED101ABBFB2B0013F194 /* AnotherBarChartViewController.m */, + 5BD47E621ABB424E008FCEC6 /* BarChartViewController.h */, + 5BD47E631ABB424E008FCEC6 /* BarChartViewController.m */, + 55E3564E1ADC638F00A57971 /* BubbleChartViewController.h */, + 55E3564F1ADC638F00A57971 /* BubbleChartViewController.m */, + 5BEAED291ABC160F0013F194 /* CandleStickChartViewController.h */, + 5BEAED2A1ABC160F0013F194 /* CandleStickChartViewController.m */, + 5BEAED381ABC199F0013F194 /* ColoredLineChartViewController.h */, + 5BEAED391ABC199F0013F194 /* ColoredLineChartViewController.m */, + 5BDEDC441ABB871E007D3A60 /* CombinedChartViewController.h */, + 5BDEDC451ABB871E007D3A60 /* CombinedChartViewController.m */, + 5BEAED2E1ABC18F00013F194 /* CubicLineChartViewController.h */, + 5BEAED2F1ABC18F00013F194 /* CubicLineChartViewController.m */, + 5BE6737D1D5B496500A87BA2 /* HalfPieChartViewController.h */, + 5BE6737E1D5B496500A87BA2 /* HalfPieChartViewController.m */, + 5BDEDC3E1ABB7F73007D3A60 /* HorizontalBarChartViewController.h */, + 5BDEDC3F1ABB7F73007D3A60 /* HorizontalBarChartViewController.m */, + 5BD8F0711AB89CE500566E05 /* LineChart1ViewController.h */, + 5BD8F0721AB89CE500566E05 /* LineChart1ViewController.m */, + 5BD47E5D1ABB3C91008FCEC6 /* LineChart2ViewController.h */, + 5BD47E5E1ABB3C91008FCEC6 /* LineChart2ViewController.m */, + 5BE6738C1D5B4E0900A87BA2 /* LineChartFilledViewController.h */, + 5BE6738D1D5B4E0900A87BA2 /* LineChartFilledViewController.m */, + 5BE6738F1D5B4E0900A87BA2 /* LineChartTimeViewController.h */, + 5BE673901D5B4E0900A87BA2 /* LineChartTimeViewController.m */, + 5BEAED1F1ABC0BE20013F194 /* MultipleBarChartViewController.h */, + 5BEAED201ABC0BE20013F194 /* MultipleBarChartViewController.m */, + 5BEAED221ABC0BE20013F194 /* MultipleLinesChartViewController.h */, + 5BEAED231ABC0BE20013F194 /* MultipleLinesChartViewController.m */, + 5B96243E1B38608C007763E2 /* NegativeStackedBarChartViewController.h */, + 5B96243F1B38608C007763E2 /* NegativeStackedBarChartViewController.m */, + 5B0CC7821ABB875400665592 /* PieChartViewController.h */, + 5B0CC7831ABB875400665592 /* PieChartViewController.m */, + 0439A3511C9FF95F00496F83 /* PiePolylineChartViewController.h */, + 0439A3521C9FF95F00496F83 /* PiePolylineChartViewController.m */, + 5BE7E75F1C693098000A0377 /* PositiveNegativeBarChartViewController.h */, + 5BE7E7601C693098000A0377 /* PositiveNegativeBarChartViewController.m */, + 5BEAED331ABC192F0013F194 /* RadarChartViewController.h */, + 5BEAED341ABC192F0013F194 /* RadarChartViewController.m */, + 5BEAED151ABBFB340013F194 /* ScatterChartViewController.h */, + 5BEAED161ABBFB340013F194 /* ScatterChartViewController.m */, + 5BEAED3D1ABC1AC60013F194 /* SinusBarChartViewController.h */, + 5BEAED3E1ABC1AC60013F194 /* SinusBarChartViewController.m */, + 5BEAED181ABBFB340013F194 /* StackedBarChartViewController.h */, + 5BEAED191ABBFB340013F194 /* StackedBarChartViewController.m */, + ); + path = Demos; + sourceTree = ""; + }; + 5BE377D41D42511A006EB34F /* Formatters */ = { + isa = PBXGroup; + children = ( + 5BE377DC1D425151006EB34F /* DayAxisValueFormatter.h */, + 5BE377DD1D425151006EB34F /* DayAxisValueFormatter.m */, + 5BE377F01D47FDF1006EB34F /* IntAxisValueFormatter.h */, + 5BE377F11D47FDF1006EB34F /* IntAxisValueFormatter.m */, + 5B613DF11D5A60DF000F1E98 /* LargeValueFormatter.swift */, + 5BE673981D5BAD7E00A87BA2 /* DateValueFormatter.h */, + 5BE673991D5BAD7E00A87BA2 /* DateValueFormatter.m */, + ); + path = Formatters; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 225B361C1F6EB9A50005B3D5 /* ChartsDemo-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 225B362C1F6EB9A50005B3D5 /* Build configuration list for PBXNativeTarget "ChartsDemo-Swift" */; - buildPhases = ( - 225B36191F6EB9A50005B3D5 /* Sources */, - 225B361A1F6EB9A50005B3D5 /* Frameworks */, - 225B361B1F6EB9A50005B3D5 /* Resources */, - 225B36901F6EBBB10005B3D5 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 225B368F1F6EBBB00005B3D5 /* PBXTargetDependency */, - ); - name = "ChartsDemo-Swift"; - productName = "ChartsDemo-Swift"; - productReference = 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */; - productType = "com.apple.product-type.application"; - }; - 5B57BBAE1A9B26AA0036A6CC /* ChartsDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5B57BBD21A9B26AA0036A6CC /* Build configuration list for PBXNativeTarget "ChartsDemo" */; - buildPhases = ( - 5B57BBAB1A9B26AA0036A6CC /* Sources */, - 5B57BBAC1A9B26AA0036A6CC /* Frameworks */, - 5B57BBAD1A9B26AA0036A6CC /* Resources */, - 5BB4B0751ACA710D00E2EF4D /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 0630AE541D81271B008859B0 /* PBXTargetDependency */, - ); - name = ChartsDemo; - productName = chartstest; - productReference = 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */; - productType = "com.apple.product-type.application"; - }; + 225B361C1F6EB9A50005B3D5 /* ChartsDemo-Swift */ = { + isa = PBXNativeTarget; + buildConfigurationList = 225B362C1F6EB9A50005B3D5 /* Build configuration list for PBXNativeTarget "ChartsDemo-Swift" */; + buildPhases = ( + 225B36191F6EB9A50005B3D5 /* Sources */, + 225B361A1F6EB9A50005B3D5 /* Frameworks */, + 225B361B1F6EB9A50005B3D5 /* Resources */, + 225B36901F6EBBB10005B3D5 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 225B368F1F6EBBB00005B3D5 /* PBXTargetDependency */, + ); + name = "ChartsDemo-Swift"; + productName = "ChartsDemo-Swift"; + productReference = 225B361D1F6EB9A50005B3D5 /* ChartsDemo-Swift.app */; + productType = "com.apple.product-type.application"; + }; + 5B57BBAE1A9B26AA0036A6CC /* ChartsDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5B57BBD21A9B26AA0036A6CC /* Build configuration list for PBXNativeTarget "ChartsDemo" */; + buildPhases = ( + 5B57BBAB1A9B26AA0036A6CC /* Sources */, + 5B57BBAC1A9B26AA0036A6CC /* Frameworks */, + 5B57BBAD1A9B26AA0036A6CC /* Resources */, + 22A4867D1FBA6D7100EC9A0F /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 22A4867C1FBA6D7000EC9A0F /* PBXTargetDependency */, + ); + name = ChartsDemo; + productName = chartstest; + productReference = 5B57BBAF1A9B26AA0036A6CC /* ChartsDemo.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 5B57BBA71A9B26AA0036A6CC /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftMigration = 0700; - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0900; - ORGANIZATIONNAME = dcg; - TargetAttributes = { - 225B361C1F6EB9A50005B3D5 = { - CreatedOnToolsVersion = 9.0; - }; - 5B57BBAE1A9B26AA0036A6CC = { - CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0900; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 5B57BBAA1A9B26AA0036A6CC /* Build configuration list for PBXProject "ChartsDemo" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 5B57BBA61A9B26AA0036A6CC; - productRefGroup = 5B57BBB01A9B26AA0036A6CC /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 0630AE3A1D8126C0008859B0 /* Products */; - ProjectRef = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 5B57BBAE1A9B26AA0036A6CC /* ChartsDemo */, - 225B361C1F6EB9A50005B3D5 /* ChartsDemo-Swift */, - ); - }; + 5B57BBA71A9B26AA0036A6CC /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = dcg; + TargetAttributes = { + 225B361C1F6EB9A50005B3D5 = { + CreatedOnToolsVersion = 9.0; + }; + 5B57BBAE1A9B26AA0036A6CC = { + CreatedOnToolsVersion = 6.1.1; + LastSwiftMigration = 0900; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 5B57BBAA1A9B26AA0036A6CC /* Build configuration list for PBXProject "ChartsDemo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5B57BBA61A9B26AA0036A6CC; + productRefGroup = 5B57BBB01A9B26AA0036A6CC /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0630AE3A1D8126C0008859B0 /* Products */; + ProjectRef = 0630AE391D8126C0008859B0 /* Charts.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5B57BBAE1A9B26AA0036A6CC /* ChartsDemo */, + 225B361C1F6EB9A50005B3D5 /* ChartsDemo-Swift */, + ); + }; /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 0630AE411D8126C0008859B0 /* Charts.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Charts.framework; - remoteRef = 0630AE401D8126C0008859B0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 0630AE431D8126C0008859B0 /* ChartsTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = ChartsTests.xctest; - remoteRef = 0630AE421D8126C0008859B0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; + 0630AE411D8126C0008859B0 /* Charts.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Charts.framework; + remoteRef = 0630AE401D8126C0008859B0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0630AE431D8126C0008859B0 /* ChartsTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ChartsTests.xctest; + remoteRef = 0630AE421D8126C0008859B0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 225B361B1F6EB9A50005B3D5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 225B367C1F6EBA640005B3D5 /* HorizontalBarChartViewController.xib in Resources */, - 225B36841F6EBA640005B3D5 /* PieChartViewController.xib in Resources */, - 225B36741F6EBA640005B3D5 /* AnotherBarChartViewController.xib in Resources */, - 225B36781F6EBA640005B3D5 /* ColoredLineChartViewController.xib in Resources */, - 225B36791F6EBA640005B3D5 /* CombinedChartViewController.xib in Resources */, - 225B367B1F6EBA640005B3D5 /* HalfPieChartViewController.xib in Resources */, - 068A9B1A1FBBF355003CF1AD /* Launch Screen.storyboard in Resources */, - 225B367A1F6EBA640005B3D5 /* CubicLineChartViewController.xib in Resources */, - 225B368B1F6EBA640005B3D5 /* StackedBarChartViewController.xib in Resources */, - 225B36821F6EBA640005B3D5 /* MultipleLinesChartViewController.xib in Resources */, - 068A9B191FBBF351003CF1AD /* Images.xcassets in Resources */, - 225B36751F6EBA640005B3D5 /* BarChartViewController.xib in Resources */, - 225B367F1F6EBA640005B3D5 /* LineChartFilledViewController.xib in Resources */, - 225B36801F6EBA640005B3D5 /* LineChartTimeViewController.xib in Resources */, - 225B36811F6EBA640005B3D5 /* MultipleBarChartViewController.xib in Resources */, - 225B367D1F6EBA640005B3D5 /* LineChart1ViewController.xib in Resources */, - 068A9B1B1FBBF366003CF1AD /* radar_marker@3x.png in Resources */, - 225B36721F6EBA5E0005B3D5 /* DemoListViewController.xib in Resources */, - 225B36891F6EBA640005B3D5 /* ScatterChartViewController.xib in Resources */, - 225B36851F6EBA640005B3D5 /* PiePolylineChartViewController.xib in Resources */, - 225B36771F6EBA640005B3D5 /* CandleStickChartViewController.xib in Resources */, - 225B36871F6EBA640005B3D5 /* RadarChartViewController.xib in Resources */, - 225B368A1F6EBA640005B3D5 /* SinusBarChartViewController.xib in Resources */, - 225B36731F6EBA5E0005B3D5 /* RadarMarkerView.xib in Resources */, - 225B367E1F6EBA640005B3D5 /* LineChart2ViewController.xib in Resources */, - 225B36881F6EBA640005B3D5 /* RealmDemosViewController.xib in Resources */, - 225B36861F6EBA640005B3D5 /* PositiveNegativeBarChartViewController.xib in Resources */, - 225B36831F6EBA640005B3D5 /* NegativeStackedBarChartViewController.xib in Resources */, - 225B36761F6EBA640005B3D5 /* BubbleChartViewController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5B57BBAD1A9B26AA0036A6CC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5B8EAF301AB32E15009697AA /* Images.xcassets in Resources */, - 5BE673931D5B4E0900A87BA2 /* LineChartFilledViewController.xib in Resources */, - 5BEAED2D1ABC160F0013F194 /* CandleStickChartViewController.xib in Resources */, - 5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */, - 5BD47E611ABB3C91008FCEC6 /* LineChart2ViewController.xib in Resources */, - 5BEAED131ABBFB2B0013F194 /* AnotherBarChartViewController.xib in Resources */, - 5BEAED411ABC1AC60013F194 /* SinusBarChartViewController.xib in Resources */, - 5BEAED371ABC192F0013F194 /* RadarChartViewController.xib in Resources */, - 5B8EAF241AB3271B009697AA /* DemoListViewController.xib in Resources */, - 5BEAED261ABC0BE20013F194 /* MultipleBarChartViewController.xib in Resources */, - 5BEAED3C1ABC199F0013F194 /* ColoredLineChartViewController.xib in Resources */, - 5BEAED321ABC18F00013F194 /* CubicLineChartViewController.xib in Resources */, - 5BEAED281ABC0BE20013F194 /* MultipleLinesChartViewController.xib in Resources */, - 5B9624421B38608C007763E2 /* NegativeStackedBarChartViewController.xib in Resources */, - 5B613DA41D526AD5000F1E98 /* radar_marker@3x.png in Resources */, - 5BE7E7631C693098000A0377 /* PositiveNegativeBarChartViewController.xib in Resources */, - 5B0CC7861ABB875400665592 /* PieChartViewController.xib in Resources */, - 5BEAED1C1ABBFB340013F194 /* ScatterChartViewController.xib in Resources */, - 0471CBFC1CA1090A00E52DBC /* PiePolylineChartViewController.xib in Resources */, - 5BD8F0751AB89CE500566E05 /* LineChart1ViewController.xib in Resources */, - 5BE673811D5B496500A87BA2 /* HalfPieChartViewController.xib in Resources */, - B64D06EB1FB199130067418D /* Launch Screen.storyboard in Resources */, - 5BD47E661ABB424E008FCEC6 /* BarChartViewController.xib in Resources */, - 5BDEDC421ABB7F73007D3A60 /* HorizontalBarChartViewController.xib in Resources */, - 5BDEDC481ABB871E007D3A60 /* CombinedChartViewController.xib in Resources */, - 5BE673951D5B4E0900A87BA2 /* LineChartTimeViewController.xib in Resources */, - 5BEAED1E1ABBFB340013F194 /* StackedBarChartViewController.xib in Resources */, - 5B1B5DAB1E911A15006D1375 /* RealmDemosViewController.xib in Resources */, - 55E356501ADC638F00A57971 /* BubbleChartViewController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; + 225B361B1F6EB9A50005B3D5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 225B367C1F6EBA640005B3D5 /* HorizontalBarChartViewController.xib in Resources */, + 225B36841F6EBA640005B3D5 /* PieChartViewController.xib in Resources */, + 225B36741F6EBA640005B3D5 /* AnotherBarChartViewController.xib in Resources */, + 225B36781F6EBA640005B3D5 /* ColoredLineChartViewController.xib in Resources */, + 225B36791F6EBA640005B3D5 /* CombinedChartViewController.xib in Resources */, + 225B367B1F6EBA640005B3D5 /* HalfPieChartViewController.xib in Resources */, + 068A9B1A1FBBF355003CF1AD /* Launch Screen.storyboard in Resources */, + 225B367A1F6EBA640005B3D5 /* CubicLineChartViewController.xib in Resources */, + 225B368B1F6EBA640005B3D5 /* StackedBarChartViewController.xib in Resources */, + 225B36821F6EBA640005B3D5 /* MultipleLinesChartViewController.xib in Resources */, + 068A9B191FBBF351003CF1AD /* Images.xcassets in Resources */, + 225B36751F6EBA640005B3D5 /* BarChartViewController.xib in Resources */, + 225B367F1F6EBA640005B3D5 /* LineChartFilledViewController.xib in Resources */, + 225B36801F6EBA640005B3D5 /* LineChartTimeViewController.xib in Resources */, + 225B36811F6EBA640005B3D5 /* MultipleBarChartViewController.xib in Resources */, + 225B367D1F6EBA640005B3D5 /* LineChart1ViewController.xib in Resources */, + 068A9B1B1FBBF366003CF1AD /* radar_marker@3x.png in Resources */, + 225B36721F6EBA5E0005B3D5 /* DemoListViewController.xib in Resources */, + 225B36891F6EBA640005B3D5 /* ScatterChartViewController.xib in Resources */, + 225B36851F6EBA640005B3D5 /* PiePolylineChartViewController.xib in Resources */, + 225B36771F6EBA640005B3D5 /* CandleStickChartViewController.xib in Resources */, + 225B36871F6EBA640005B3D5 /* RadarChartViewController.xib in Resources */, + 225B368A1F6EBA640005B3D5 /* SinusBarChartViewController.xib in Resources */, + 225B36731F6EBA5E0005B3D5 /* RadarMarkerView.xib in Resources */, + 225B367E1F6EBA640005B3D5 /* LineChart2ViewController.xib in Resources */, + 225B36881F6EBA640005B3D5 /* RealmDemosViewController.xib in Resources */, + 225B36861F6EBA640005B3D5 /* PositiveNegativeBarChartViewController.xib in Resources */, + 225B36831F6EBA640005B3D5 /* NegativeStackedBarChartViewController.xib in Resources */, + 225B36761F6EBA640005B3D5 /* BubbleChartViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5B57BBAD1A9B26AA0036A6CC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5B8EAF301AB32E15009697AA /* Images.xcassets in Resources */, + 5BE673931D5B4E0900A87BA2 /* LineChartFilledViewController.xib in Resources */, + 5BEAED2D1ABC160F0013F194 /* CandleStickChartViewController.xib in Resources */, + 5B613DB51D526EA8000F1E98 /* RadarMarkerView.xib in Resources */, + 5BD47E611ABB3C91008FCEC6 /* LineChart2ViewController.xib in Resources */, + 5BEAED131ABBFB2B0013F194 /* AnotherBarChartViewController.xib in Resources */, + 5BEAED411ABC1AC60013F194 /* SinusBarChartViewController.xib in Resources */, + 5BEAED371ABC192F0013F194 /* RadarChartViewController.xib in Resources */, + 5B8EAF241AB3271B009697AA /* DemoListViewController.xib in Resources */, + 5BEAED261ABC0BE20013F194 /* MultipleBarChartViewController.xib in Resources */, + 5BEAED3C1ABC199F0013F194 /* ColoredLineChartViewController.xib in Resources */, + 5BEAED321ABC18F00013F194 /* CubicLineChartViewController.xib in Resources */, + 5BEAED281ABC0BE20013F194 /* MultipleLinesChartViewController.xib in Resources */, + 5B9624421B38608C007763E2 /* NegativeStackedBarChartViewController.xib in Resources */, + 5B613DA41D526AD5000F1E98 /* radar_marker@3x.png in Resources */, + 5BE7E7631C693098000A0377 /* PositiveNegativeBarChartViewController.xib in Resources */, + 5B0CC7861ABB875400665592 /* PieChartViewController.xib in Resources */, + 5BEAED1C1ABBFB340013F194 /* ScatterChartViewController.xib in Resources */, + 0471CBFC1CA1090A00E52DBC /* PiePolylineChartViewController.xib in Resources */, + 5BD8F0751AB89CE500566E05 /* LineChart1ViewController.xib in Resources */, + 5BE673811D5B496500A87BA2 /* HalfPieChartViewController.xib in Resources */, + B64D06EB1FB199130067418D /* Launch Screen.storyboard in Resources */, + 5BD47E661ABB424E008FCEC6 /* BarChartViewController.xib in Resources */, + 5BDEDC421ABB7F73007D3A60 /* HorizontalBarChartViewController.xib in Resources */, + 5BDEDC481ABB871E007D3A60 /* CombinedChartViewController.xib in Resources */, + 5BE673951D5B4E0900A87BA2 /* LineChartTimeViewController.xib in Resources */, + 5BEAED1E1ABBFB340013F194 /* StackedBarChartViewController.xib in Resources */, + 5B1B5DAB1E911A15006D1375 /* RealmDemosViewController.xib in Resources */, + 55E356501ADC638F00A57971 /* BubbleChartViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 225B36191F6EB9A50005B3D5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 225B365E1F6EBA470005B3D5 /* LineChartTimeViewController.swift in Sources */, - 225B36311F6EB9EE0005B3D5 /* DemoBaseViewController.swift in Sources */, - 225B36391F6EBA040005B3D5 /* DayAxisValueFormatter.swift in Sources */, - 225B36661F6EBA470005B3D5 /* LineChartFilledViewController.swift in Sources */, - 225B366A1F6EBA470005B3D5 /* CubicLineChartViewController.swift in Sources */, - 225B36671F6EBA470005B3D5 /* PositiveNegativeBarChartViewController.swift in Sources */, - 225B363A1F6EBA040005B3D5 /* DateValueFormatter.swift in Sources */, - 225B366D1F6EBA470005B3D5 /* PiePolylineChartViewController.swift in Sources */, - 225B366F1F6EBA470005B3D5 /* BarChartViewController.swift in Sources */, - 225B36601F6EBA470005B3D5 /* LineChart2ViewController.swift in Sources */, - 225B36411F6EBA1D0005B3D5 /* BalloonMarker.swift in Sources */, - 225B366C1F6EBA470005B3D5 /* HorizontalBarChartViewController.swift in Sources */, - 225B36401F6EBA1D0005B3D5 /* XYMarkerView.swift in Sources */, - 225B36421F6EBA1D0005B3D5 /* RadarMarkerView.swift in Sources */, - 225B366B1F6EBA470005B3D5 /* RadarChartViewController.swift in Sources */, - 225B36611F6EBA470005B3D5 /* LineChart1ViewController.swift in Sources */, - 225B36691F6EBA470005B3D5 /* PieChartViewController.swift in Sources */, - 225B365B1F6EBA470005B3D5 /* MultipleLinesChartViewController.swift in Sources */, - 225B365F1F6EBA470005B3D5 /* ColoredLineChartViewController.swift in Sources */, - 225B36201F6EB9A50005B3D5 /* AppDelegate.swift in Sources */, - 225B36321F6EB9EE0005B3D5 /* DemoListViewController.swift in Sources */, - 225B36711F6EBA470005B3D5 /* CandleStickChartViewController.swift in Sources */, - 225B36631F6EBA470005B3D5 /* ScatterChartViewController.swift in Sources */, - 225B365C1F6EBA470005B3D5 /* MultipleBarChartViewController.swift in Sources */, - 225B366E1F6EBA470005B3D5 /* CombinedChartViewController.swift in Sources */, - 225B36641F6EBA470005B3D5 /* StackedBarChartViewController.swift in Sources */, - 225B36651F6EBA470005B3D5 /* BubbleChartViewController.swift in Sources */, - 225B36381F6EBA040005B3D5 /* IntAxisValueFormatter.swift in Sources */, - 225B365D1F6EBA470005B3D5 /* HalfPieChartViewController.swift in Sources */, - 225B36701F6EBA470005B3D5 /* SinusBarChartViewController.swift in Sources */, - 225B36681F6EBA470005B3D5 /* AnotherBarChartViewController.swift in Sources */, - 225B36621F6EBA470005B3D5 /* NegativeStackedBarChartViewController.swift in Sources */, - 225B363B1F6EBA040005B3D5 /* LargeValueFormatter.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5B57BBAB1A9B26AA0036A6CC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5B613DF21D5A60DF000F1E98 /* LargeValueFormatter.swift in Sources */, - 5BEAED1B1ABBFB340013F194 /* ScatterChartViewController.m in Sources */, - 5B0CC7851ABB875400665592 /* PieChartViewController.m in Sources */, - 0439A3541C9FF95F00496F83 /* PiePolylineChartViewController.m in Sources */, - 5B57BBBB1A9B26AA0036A6CC /* DemoListViewController.m in Sources */, - 5BD47E651ABB424E008FCEC6 /* BarChartViewController.m in Sources */, - 5BDEDC471ABB871E007D3A60 /* CombinedChartViewController.m in Sources */, - 5BE377F21D47FDF1006EB34F /* IntAxisValueFormatter.m in Sources */, - 5BD8F0741AB89CE500566E05 /* LineChart1ViewController.m in Sources */, - 5BE377DE1D425151006EB34F /* DayAxisValueFormatter.m in Sources */, - 5BEAED401ABC1AC60013F194 /* SinusBarChartViewController.m in Sources */, - 5BE7E7621C693098000A0377 /* PositiveNegativeBarChartViewController.m in Sources */, - 5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */, - 5BEAED251ABC0BE20013F194 /* MultipleBarChartViewController.m in Sources */, - 5B57BBB81A9B26AA0036A6CC /* AppDelegate.m in Sources */, - 55E356511ADC638F00A57971 /* BubbleChartViewController.m in Sources */, - 5BD47E5B1ABB0263008FCEC6 /* BalloonMarker.swift in Sources */, - 5BEAED2C1ABC160F0013F194 /* CandleStickChartViewController.m in Sources */, - 5BEAED271ABC0BE20013F194 /* MultipleLinesChartViewController.m in Sources */, - 5BE6739A1D5BAD7E00A87BA2 /* DateValueFormatter.m in Sources */, - 5BE673801D5B496500A87BA2 /* HalfPieChartViewController.m in Sources */, - 5BE673921D5B4E0900A87BA2 /* LineChartFilledViewController.m in Sources */, - 5B8EAF281AB32CF5009697AA /* DemoBaseViewController.m in Sources */, - 5BE673941D5B4E0900A87BA2 /* LineChartTimeViewController.m in Sources */, - 5B613DF01D5A50B6000F1E98 /* XYMarkerView.swift in Sources */, - 5BEAED3B1ABC199F0013F194 /* ColoredLineChartViewController.m in Sources */, - 5BDEDC411ABB7F73007D3A60 /* HorizontalBarChartViewController.m in Sources */, - 5BEAED121ABBFB2B0013F194 /* AnotherBarChartViewController.m in Sources */, - 5BEAED311ABC18F00013F194 /* CubicLineChartViewController.m in Sources */, - 5BEAED1D1ABBFB340013F194 /* StackedBarChartViewController.m in Sources */, - 5BD47E601ABB3C91008FCEC6 /* LineChart2ViewController.m in Sources */, - 5B57BBB51A9B26AA0036A6CC /* main.m in Sources */, - 5BEAED361ABC192F0013F194 /* RadarChartViewController.m in Sources */, - 5B9624411B38608C007763E2 /* NegativeStackedBarChartViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; + 225B36191F6EB9A50005B3D5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 225B365E1F6EBA470005B3D5 /* LineChartTimeViewController.swift in Sources */, + 225B36311F6EB9EE0005B3D5 /* DemoBaseViewController.swift in Sources */, + 225B36391F6EBA040005B3D5 /* DayAxisValueFormatter.swift in Sources */, + 225B36661F6EBA470005B3D5 /* LineChartFilledViewController.swift in Sources */, + 225B366A1F6EBA470005B3D5 /* CubicLineChartViewController.swift in Sources */, + 225B36671F6EBA470005B3D5 /* PositiveNegativeBarChartViewController.swift in Sources */, + 225B363A1F6EBA040005B3D5 /* DateValueFormatter.swift in Sources */, + 225B366D1F6EBA470005B3D5 /* PiePolylineChartViewController.swift in Sources */, + 225B366F1F6EBA470005B3D5 /* BarChartViewController.swift in Sources */, + 225B36601F6EBA470005B3D5 /* LineChart2ViewController.swift in Sources */, + 225B36411F6EBA1D0005B3D5 /* BalloonMarker.swift in Sources */, + 225B366C1F6EBA470005B3D5 /* HorizontalBarChartViewController.swift in Sources */, + 225B36401F6EBA1D0005B3D5 /* XYMarkerView.swift in Sources */, + 225B36421F6EBA1D0005B3D5 /* RadarMarkerView.swift in Sources */, + 225B366B1F6EBA470005B3D5 /* RadarChartViewController.swift in Sources */, + 225B36611F6EBA470005B3D5 /* LineChart1ViewController.swift in Sources */, + 225B36691F6EBA470005B3D5 /* PieChartViewController.swift in Sources */, + 225B365B1F6EBA470005B3D5 /* MultipleLinesChartViewController.swift in Sources */, + 225B365F1F6EBA470005B3D5 /* ColoredLineChartViewController.swift in Sources */, + 225B36201F6EB9A50005B3D5 /* AppDelegate.swift in Sources */, + 225B36321F6EB9EE0005B3D5 /* DemoListViewController.swift in Sources */, + 225B36711F6EBA470005B3D5 /* CandleStickChartViewController.swift in Sources */, + 225B36631F6EBA470005B3D5 /* ScatterChartViewController.swift in Sources */, + 225B365C1F6EBA470005B3D5 /* MultipleBarChartViewController.swift in Sources */, + 225B366E1F6EBA470005B3D5 /* CombinedChartViewController.swift in Sources */, + 225B36641F6EBA470005B3D5 /* StackedBarChartViewController.swift in Sources */, + 225B36651F6EBA470005B3D5 /* BubbleChartViewController.swift in Sources */, + 225B36381F6EBA040005B3D5 /* IntAxisValueFormatter.swift in Sources */, + 225B365D1F6EBA470005B3D5 /* HalfPieChartViewController.swift in Sources */, + 225B36701F6EBA470005B3D5 /* SinusBarChartViewController.swift in Sources */, + 225B36681F6EBA470005B3D5 /* AnotherBarChartViewController.swift in Sources */, + 225B36621F6EBA470005B3D5 /* NegativeStackedBarChartViewController.swift in Sources */, + 225B363B1F6EBA040005B3D5 /* LargeValueFormatter.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5B57BBAB1A9B26AA0036A6CC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5B613DF21D5A60DF000F1E98 /* LargeValueFormatter.swift in Sources */, + 5BEAED1B1ABBFB340013F194 /* ScatterChartViewController.m in Sources */, + 5B0CC7851ABB875400665592 /* PieChartViewController.m in Sources */, + 0439A3541C9FF95F00496F83 /* PiePolylineChartViewController.m in Sources */, + 5B57BBBB1A9B26AA0036A6CC /* DemoListViewController.m in Sources */, + 5BD47E651ABB424E008FCEC6 /* BarChartViewController.m in Sources */, + 5BDEDC471ABB871E007D3A60 /* CombinedChartViewController.m in Sources */, + 5BE377F21D47FDF1006EB34F /* IntAxisValueFormatter.m in Sources */, + 5BD8F0741AB89CE500566E05 /* LineChart1ViewController.m in Sources */, + 5BE377DE1D425151006EB34F /* DayAxisValueFormatter.m in Sources */, + 5BEAED401ABC1AC60013F194 /* SinusBarChartViewController.m in Sources */, + 5BE7E7621C693098000A0377 /* PositiveNegativeBarChartViewController.m in Sources */, + 5B613DB31D526DED000F1E98 /* RadarMarkerView.swift in Sources */, + 5BEAED251ABC0BE20013F194 /* MultipleBarChartViewController.m in Sources */, + 5B57BBB81A9B26AA0036A6CC /* AppDelegate.m in Sources */, + 55E356511ADC638F00A57971 /* BubbleChartViewController.m in Sources */, + 5BD47E5B1ABB0263008FCEC6 /* BalloonMarker.swift in Sources */, + 5BEAED2C1ABC160F0013F194 /* CandleStickChartViewController.m in Sources */, + 5BEAED271ABC0BE20013F194 /* MultipleLinesChartViewController.m in Sources */, + 5BE6739A1D5BAD7E00A87BA2 /* DateValueFormatter.m in Sources */, + 5BE673801D5B496500A87BA2 /* HalfPieChartViewController.m in Sources */, + 5BE673921D5B4E0900A87BA2 /* LineChartFilledViewController.m in Sources */, + 5B8EAF281AB32CF5009697AA /* DemoBaseViewController.m in Sources */, + 5BE673941D5B4E0900A87BA2 /* LineChartTimeViewController.m in Sources */, + 5B613DF01D5A50B6000F1E98 /* XYMarkerView.swift in Sources */, + 5BEAED3B1ABC199F0013F194 /* ColoredLineChartViewController.m in Sources */, + 5BDEDC411ABB7F73007D3A60 /* HorizontalBarChartViewController.m in Sources */, + 5BEAED121ABBFB2B0013F194 /* AnotherBarChartViewController.m in Sources */, + 5BEAED311ABC18F00013F194 /* CubicLineChartViewController.m in Sources */, + 5BEAED1D1ABBFB340013F194 /* StackedBarChartViewController.m in Sources */, + 5BD47E601ABB3C91008FCEC6 /* LineChart2ViewController.m in Sources */, + 5B57BBB51A9B26AA0036A6CC /* main.m in Sources */, + 5BEAED361ABC192F0013F194 /* RadarChartViewController.m in Sources */, + 5B9624411B38608C007763E2 /* NegativeStackedBarChartViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0630AE541D81271B008859B0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Charts; - targetProxy = 0630AE531D81271B008859B0 /* PBXContainerItemProxy */; - }; - 225B368F1F6EBBB00005B3D5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Charts; - targetProxy = 225B368E1F6EBBB00005B3D5 /* PBXContainerItemProxy */; - }; + 225B368F1F6EBBB00005B3D5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Charts; + targetProxy = 225B368E1F6EBBB00005B3D5 /* PBXContainerItemProxy */; + }; + 22A4867C1FBA6D7000EC9A0F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Charts; + targetProxy = 22A4867B1FBA6D7000EC9A0F /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 225B362D1F6EB9A50005B3D5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "$(SRCROOT)/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.ChartsDemo-Swift"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Debug; - }; - 225B362E1F6EB9A50005B3D5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "$(SRCROOT)/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.ChartsDemo-Swift"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = 1; - }; - name = Release; - }; - 5B57BBD01A9B26AA0036A6CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 5B57BBD11A9B26AA0036A6CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5B57BBD31A9B26AA0036A6CC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - FRAMEWORK_SEARCH_PATHS = "$(SOURCE_ROOT)/../Carthage/Build/iOS"; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = ChartsDemo; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; - SWIFT_OBJC_BRIDGING_HEADER = "Supporting Files/ChartsDemo-Bridging-Header.h"; - SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(SWIFT_MODULE_NAME)-Swift.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - 5B57BBD41A9B26AA0036A6CC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - FRAMEWORK_SEARCH_PATHS = "$(SOURCE_ROOT)/../Carthage/Build/iOS"; - INFOPLIST_FILE = "Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = ChartsDemo; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; - SWIFT_OBJC_BRIDGING_HEADER = "Supporting Files/ChartsDemo-Bridging-Header.h"; - SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(SWIFT_MODULE_NAME)-Swift.h"; - SWIFT_VERSION = 4.0; - }; - name = Release; - }; + 225B362D1F6EB9A50005B3D5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Supporting Files/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.ChartsDemo-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 225B362E1F6EB9A50005B3D5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Supporting Files/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.ChartsDemo-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + 5B57BBD01A9B26AA0036A6CC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 5B57BBD11A9B26AA0036A6CC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5B57BBD31A9B26AA0036A6CC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = ""; + FRAMEWORK_SEARCH_PATHS = "$(SOURCE_ROOT)/../Carthage/Build/iOS"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = ChartsDemo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; + SWIFT_OBJC_BRIDGING_HEADER = "Supporting Files/ChartsDemo-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(SWIFT_MODULE_NAME)-Swift.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 5B57BBD41A9B26AA0036A6CC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = ""; + FRAMEWORK_SEARCH_PATHS = "$(SOURCE_ROOT)/../Carthage/Build/iOS"; + INFOPLIST_FILE = "Supporting Files/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.dcg.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = ChartsDemo; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; + SWIFT_OBJC_BRIDGING_HEADER = "Supporting Files/ChartsDemo-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(SWIFT_MODULE_NAME)-Swift.h"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 225B362C1F6EB9A50005B3D5 /* Build configuration list for PBXNativeTarget "ChartsDemo-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 225B362D1F6EB9A50005B3D5 /* Debug */, - 225B362E1F6EB9A50005B3D5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5B57BBAA1A9B26AA0036A6CC /* Build configuration list for PBXProject "ChartsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B57BBD01A9B26AA0036A6CC /* Debug */, - 5B57BBD11A9B26AA0036A6CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5B57BBD21A9B26AA0036A6CC /* Build configuration list for PBXNativeTarget "ChartsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B57BBD31A9B26AA0036A6CC /* Debug */, - 5B57BBD41A9B26AA0036A6CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; + 225B362C1F6EB9A50005B3D5 /* Build configuration list for PBXNativeTarget "ChartsDemo-Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 225B362D1F6EB9A50005B3D5 /* Debug */, + 225B362E1F6EB9A50005B3D5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5B57BBAA1A9B26AA0036A6CC /* Build configuration list for PBXProject "ChartsDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5B57BBD01A9B26AA0036A6CC /* Debug */, + 5B57BBD11A9B26AA0036A6CC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5B57BBD21A9B26AA0036A6CC /* Build configuration list for PBXNativeTarget "ChartsDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5B57BBD31A9B26AA0036A6CC /* Debug */, + 5B57BBD41A9B26AA0036A6CC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ - }; - rootObject = 5B57BBA71A9B26AA0036A6CC /* Project object */; + }; + rootObject = 5B57BBA71A9B26AA0036A6CC /* Project object */; } diff --git a/ChartsDemo/Objective-C/Components/XYMarkerView.swift b/ChartsDemo/Objective-C/Components/XYMarkerView.swift index bc77c82206..9826dbbcf6 100644 --- a/ChartsDemo/Objective-C/Components/XYMarkerView.swift +++ b/ChartsDemo/Objective-C/Components/XYMarkerView.swift @@ -9,11 +9,11 @@ import Charts open class XYMarkerView: BalloonMarker { - @objc open var xAxisValueFormatter: IAxisValueFormatter? + @objc open var xAxisValueFormatter: AxisValueFormatter? fileprivate var yFormatter = NumberFormatter() @objc public init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets, - xAxisValueFormatter: IAxisValueFormatter) + xAxisValueFormatter: AxisValueFormatter) { super.init(color: color, font: font, textColor: textColor, insets: insets) self.xAxisValueFormatter = xAxisValueFormatter diff --git a/ChartsDemo/Objective-C/DemoBaseViewController.m b/ChartsDemo/Objective-C/DemoBaseViewController.m index c5908a844c..26cc0c7369 100644 --- a/ChartsDemo/Objective-C/DemoBaseViewController.m +++ b/ChartsDemo/Objective-C/DemoBaseViewController.m @@ -75,7 +75,7 @@ - (void)handleOption:(NSString *)key forChartView:(ChartViewBase *)chartView { if ([key isEqualToString:@"toggleValues"]) { - for (id set in chartView.data.dataSets) + for (id set in chartView.data.dataSets) { set.drawValuesEnabled = !set.isDrawValuesEnabled; } @@ -85,7 +85,7 @@ - (void)handleOption:(NSString *)key forChartView:(ChartViewBase *)chartView if ([key isEqualToString:@"toggleIcons"]) { - for (id set in chartView.data.dataSets) + for (id set in chartView.data.dataSets) { set.drawIconsEnabled = !set.isDrawIconsEnabled; } @@ -143,9 +143,9 @@ - (void)handleOption:(NSString *)key forChartView:(ChartViewBase *)chartView if ([key isEqualToString:@"toggleBarBorders"]) { - for (id set in chartView.data.dataSets) + for (id set in chartView.data.dataSets) { - if ([set conformsToProtocol:@protocol(IBarChartDataSet)]) + if ([set conformsToProtocol:@protocol(BarChartDataSetProtocol)]) { set.barBorderWidth = set.barBorderWidth == 1.0 ? 0.0 : 1.0; } diff --git a/ChartsDemo/Objective-C/Demos/CandleStickChartViewController.m b/ChartsDemo/Objective-C/Demos/CandleStickChartViewController.m index 2fe219de28..b1fb82346d 100644 --- a/ChartsDemo/Objective-C/Demos/CandleStickChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/CandleStickChartViewController.m @@ -127,7 +127,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleShadowColorSameAsCandle"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.shadowColorSameAsCandle = !set.shadowColorSameAsCandle; } diff --git a/ChartsDemo/Objective-C/Demos/CombinedChartViewController.m b/ChartsDemo/Objective-C/Demos/CombinedChartViewController.m index fa65aec940..4605c0e7fa 100644 --- a/ChartsDemo/Objective-C/Demos/CombinedChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/CombinedChartViewController.m @@ -14,7 +14,7 @@ #define ITEM_COUNT 12 -@interface CombinedChartViewController () +@interface CombinedChartViewController () { NSArray *months; } @@ -122,7 +122,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleLineValues"]) { - for (NSObject *set in _chartView.data.dataSets) + for (NSObject *set in _chartView.data.dataSets) { if ([set isKindOfClass:LineChartDataSet.class]) { @@ -136,7 +136,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleBarValues"]) { - for (NSObject *set in _chartView.data.dataSets) + for (NSObject *set in _chartView.data.dataSets) { if ([set isKindOfClass:BarChartDataSet.class]) { @@ -206,7 +206,7 @@ - (BarChartData *)generateBarData [set1 setColor:[UIColor colorWithRed:60/255.f green:220/255.f blue:78/255.f alpha:1.f]]; set1.valueTextColor = [UIColor colorWithRed:60/255.f green:220/255.f blue:78/255.f alpha:1.f]; set1.valueFont = [UIFont systemFontOfSize:10.f]; - set1.axisDependency = AxisDependencyLeft; + set1.axisDependency = AxisDependencyRight; BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithValues:entries2 label:@""]; set2.stackLabels = @[@"Stack 1", @"Stack 2"]; @@ -216,7 +216,7 @@ - (BarChartData *)generateBarData ]; set2.valueTextColor = [UIColor colorWithRed:61/255.f green:165/255.f blue:255/255.f alpha:1.f]; set2.valueFont = [UIFont systemFontOfSize:10.f]; - set2.axisDependency = AxisDependencyLeft; + set2.axisDependency = AxisDependencyRight; float groupSpace = 0.06f; float barSpace = 0.02f; // x2 dataset @@ -313,7 +313,7 @@ - (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView NSLog(@"chartValueNothingSelected"); } -#pragma mark - IAxisValueFormatter +#pragma mark - AxisValueFormatter - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis diff --git a/ChartsDemo/Objective-C/Demos/CubicLineChartViewController.m b/ChartsDemo/Objective-C/Demos/CubicLineChartViewController.m index d434898479..ffea9de365 100644 --- a/ChartsDemo/Objective-C/Demos/CubicLineChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/CubicLineChartViewController.m @@ -12,7 +12,7 @@ #import "CubicLineChartViewController.h" #import "ChartsDemo-Swift.h" -@interface CubicLineSampleFillFormatter : NSObject +@interface CubicLineSampleFillFormatter : NSObject { } @end @@ -158,7 +158,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleFilled"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawFilledEnabled = !set.isDrawFilledEnabled; } @@ -169,7 +169,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCircles"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawCirclesEnabled = !set.isDrawCirclesEnabled; } @@ -180,7 +180,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeLinear : LineChartModeCubicBezier; } @@ -191,7 +191,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleStepped"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeStepped ? LineChartModeLinear : LineChartModeStepped; } @@ -201,7 +201,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleHorizontalCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeHorizontalBezier : LineChartModeCubicBezier; } diff --git a/ChartsDemo/Objective-C/Demos/LineChart1ViewController.m b/ChartsDemo/Objective-C/Demos/LineChart1ViewController.m index 8cf348c759..37b8ee2c83 100644 --- a/ChartsDemo/Objective-C/Demos/LineChart1ViewController.m +++ b/ChartsDemo/Objective-C/Demos/LineChart1ViewController.m @@ -192,7 +192,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleFilled"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawFilledEnabled = !set.isDrawFilledEnabled; } @@ -203,7 +203,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCircles"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawCirclesEnabled = !set.isDrawCirclesEnabled; } @@ -214,7 +214,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeLinear : LineChartModeCubicBezier; } @@ -225,7 +225,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleStepped"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { switch (set.mode) { case LineChartModeLinear: @@ -242,7 +242,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleHorizontalCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeHorizontalBezier ? LineChartModeCubicBezier : LineChartModeHorizontalBezier; } diff --git a/ChartsDemo/Objective-C/Demos/LineChart2ViewController.m b/ChartsDemo/Objective-C/Demos/LineChart2ViewController.m index 990ba151c5..38f1bc0777 100644 --- a/ChartsDemo/Objective-C/Demos/LineChart2ViewController.m +++ b/ChartsDemo/Objective-C/Demos/LineChart2ViewController.m @@ -204,7 +204,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleFilled"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawFilledEnabled = !set.isDrawFilledEnabled; } @@ -215,7 +215,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCircles"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawCirclesEnabled = !set.isDrawCirclesEnabled; } @@ -226,7 +226,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeLinear : LineChartModeCubicBezier; } @@ -237,7 +237,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleStepped"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { switch (set.mode) { case LineChartModeLinear: @@ -254,7 +254,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleHorizontalCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeHorizontalBezier : LineChartModeCubicBezier; } diff --git a/ChartsDemo/Objective-C/Demos/LineChartFilledViewController.m b/ChartsDemo/Objective-C/Demos/LineChartFilledViewController.m index c78a043b30..e0f215ce46 100644 --- a/ChartsDemo/Objective-C/Demos/LineChartFilledViewController.m +++ b/ChartsDemo/Objective-C/Demos/LineChartFilledViewController.m @@ -123,7 +123,7 @@ - (void)setDataCount:(int)count range:(double)range set1.fillColor = UIColor.whiteColor; set1.highlightColor = [UIColor colorWithRed:244/255.0 green:117/255.0 blue:117/255.0 alpha:1.0]; set1.drawCircleHoleEnabled = NO; - set1.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id _Nonnull dataSet, id _Nonnull dataProvider) { + set1.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id _Nonnull dataSet, id _Nonnull dataProvider) { return _chartView.leftAxis.axisMinimum; }]; @@ -138,7 +138,7 @@ - (void)setDataCount:(int)count range:(double)range set2.fillColor = UIColor.whiteColor; set2.highlightColor = [UIColor colorWithRed:244/255.0 green:117/255.0 blue:117/255.0 alpha:1.0]; set2.drawCircleHoleEnabled = NO; - set2.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id _Nonnull dataSet, id _Nonnull dataProvider) { + set2.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id _Nonnull dataSet, id _Nonnull dataProvider) { return _chartView.leftAxis.axisMaximum; }]; diff --git a/ChartsDemo/Objective-C/Demos/LineChartTimeViewController.m b/ChartsDemo/Objective-C/Demos/LineChartTimeViewController.m index 07bf61c50d..4f09d8ef47 100644 --- a/ChartsDemo/Objective-C/Demos/LineChartTimeViewController.m +++ b/ChartsDemo/Objective-C/Demos/LineChartTimeViewController.m @@ -158,7 +158,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleFilled"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawFilledEnabled = !set.isDrawFilledEnabled; } @@ -169,7 +169,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCircles"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawCirclesEnabled = !set.isDrawCirclesEnabled; } @@ -180,7 +180,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeLinear : LineChartModeCubicBezier; } @@ -191,7 +191,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleStepped"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { switch (set.mode) { case LineChartModeLinear: @@ -208,7 +208,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleHorizontalCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeHorizontalBezier : LineChartModeCubicBezier; } diff --git a/ChartsDemo/Objective-C/Demos/MultipleLinesChartViewController.m b/ChartsDemo/Objective-C/Demos/MultipleLinesChartViewController.m index 01f284f014..738a89cad8 100644 --- a/ChartsDemo/Objective-C/Demos/MultipleLinesChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/MultipleLinesChartViewController.m @@ -130,7 +130,7 @@ - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleFilled"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawFilledEnabled = !set.isDrawFilledEnabled; } @@ -141,7 +141,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCircles"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.drawCirclesEnabled = !set.isDrawCirclesEnabled; } @@ -152,7 +152,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleCubic"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { set.mode = set.mode == LineChartModeCubicBezier ? LineChartModeLinear : LineChartModeCubicBezier; } @@ -163,7 +163,7 @@ - (void)optionTapped:(NSString *)key if ([key isEqualToString:@"toggleStepped"]) { - for (id set in _chartView.data.dataSets) + for (id set in _chartView.data.dataSets) { switch (set.mode) { case LineChartModeLinear: diff --git a/ChartsDemo/Objective-C/Demos/NegativeStackedBarChartViewController.m b/ChartsDemo/Objective-C/Demos/NegativeStackedBarChartViewController.m index da934ad7b7..408947c5f8 100644 --- a/ChartsDemo/Objective-C/Demos/NegativeStackedBarChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/NegativeStackedBarChartViewController.m @@ -12,7 +12,7 @@ #import "NegativeStackedBarChartViewController.h" #import "ChartsDemo-Swift.h" -@interface NegativeStackedBarChartViewController () +@interface NegativeStackedBarChartViewController () @property (nonatomic, strong) IBOutlet HorizontalBarChartView *chartView; @@ -184,7 +184,7 @@ - (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView NSLog(@"chartValueNothingSelected"); } -#pragma mark - IAxisValueFormatter +#pragma mark - AxisValueFormatter - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis diff --git a/ChartsDemo/Objective-C/Demos/PositiveNegativeBarChartViewController.m b/ChartsDemo/Objective-C/Demos/PositiveNegativeBarChartViewController.m index 4a048dab65..3d36ecd6a3 100644 --- a/ChartsDemo/Objective-C/Demos/PositiveNegativeBarChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/PositiveNegativeBarChartViewController.m @@ -12,7 +12,7 @@ #import "PositiveNegativeBarChartViewController.h" #import "ChartsDemo-Swift.h" -@interface PositiveNegativeBarChartViewController () +@interface PositiveNegativeBarChartViewController () { NSArray *dataList; } @@ -182,7 +182,7 @@ - (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView NSLog(@"chartValueNothingSelected"); } -#pragma mark - IAxisValueFormatter +#pragma mark - AxisValueFormatter - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis diff --git a/ChartsDemo/Objective-C/Demos/RadarChartViewController.m b/ChartsDemo/Objective-C/Demos/RadarChartViewController.m index 1810924a86..b895fdb727 100644 --- a/ChartsDemo/Objective-C/Demos/RadarChartViewController.m +++ b/ChartsDemo/Objective-C/Demos/RadarChartViewController.m @@ -12,7 +12,7 @@ #import "RadarChartViewController.h" #import "ChartsDemo-Swift.h" -@interface RadarChartViewController () +@interface RadarChartViewController () { NSArray *activities; UIColor *originalBarBgColor; @@ -265,7 +265,7 @@ - (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView NSLog(@"chartValueNothingSelected"); } -#pragma mark - IAxisValueFormatter +#pragma mark - AxisValueFormatter - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis diff --git a/ChartsDemo/Objective-C/Formatters/DateValueFormatter.h b/ChartsDemo/Objective-C/Formatters/DateValueFormatter.h index 71ba11d021..e7f0c31dec 100644 --- a/ChartsDemo/Objective-C/Formatters/DateValueFormatter.h +++ b/ChartsDemo/Objective-C/Formatters/DateValueFormatter.h @@ -12,6 +12,6 @@ #import #import "ChartsDemo-Swift.h" -@interface DateValueFormatter : NSObject +@interface DateValueFormatter : NSObject @end diff --git a/ChartsDemo/Objective-C/Formatters/DayAxisValueFormatter.h b/ChartsDemo/Objective-C/Formatters/DayAxisValueFormatter.h index 117e8c8de1..d9a7c78570 100644 --- a/ChartsDemo/Objective-C/Formatters/DayAxisValueFormatter.h +++ b/ChartsDemo/Objective-C/Formatters/DayAxisValueFormatter.h @@ -7,7 +7,7 @@ #import #import "ChartsDemo-Swift.h" -@interface DayAxisValueFormatter : NSObject +@interface DayAxisValueFormatter : NSObject - (id)initForChart:(BarLineChartViewBase *)chart; diff --git a/ChartsDemo/Objective-C/Formatters/IntAxisValueFormatter.h b/ChartsDemo/Objective-C/Formatters/IntAxisValueFormatter.h index 746cc21565..aac046df7d 100644 --- a/ChartsDemo/Objective-C/Formatters/IntAxisValueFormatter.h +++ b/ChartsDemo/Objective-C/Formatters/IntAxisValueFormatter.h @@ -7,6 +7,6 @@ #import #import "ChartsDemo-Swift.h" -@interface IntAxisValueFormatter : NSObject +@interface IntAxisValueFormatter : NSObject @end diff --git a/ChartsDemo/Objective-C/Formatters/LargeValueFormatter.swift b/ChartsDemo/Objective-C/Formatters/LargeValueFormatter.swift index 47ca78fd5e..1f37660ed3 100644 --- a/ChartsDemo/Objective-C/Formatters/LargeValueFormatter.swift +++ b/ChartsDemo/Objective-C/Formatters/LargeValueFormatter.swift @@ -7,7 +7,7 @@ import Foundation import Charts -open class LargeValueFormatter: NSObject, IValueFormatter, IAxisValueFormatter +open class LargeValueFormatter: NSObject, ValueFormatter, AxisValueFormatter { fileprivate static let MAX_LENGTH = 5 diff --git a/ChartsDemo/Swift/Components/XYMarkerView.swift b/ChartsDemo/Swift/Components/XYMarkerView.swift index 23bb965487..290ab85011 100644 --- a/ChartsDemo/Swift/Components/XYMarkerView.swift +++ b/ChartsDemo/Swift/Components/XYMarkerView.swift @@ -10,11 +10,11 @@ import Foundation import Charts public class XYMarkerView: BalloonMarker { - public var xAxisValueFormatter: IAxisValueFormatter + public var xAxisValueFormatter: AxisValueFormatter fileprivate var yFormatter = NumberFormatter() public init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets, - xAxisValueFormatter: IAxisValueFormatter) { + xAxisValueFormatter: AxisValueFormatter) { self.xAxisValueFormatter = xAxisValueFormatter yFormatter.minimumFractionDigits = 1 yFormatter.maximumFractionDigits = 1 diff --git a/ChartsDemo/Swift/Demos/CombinedChartViewController.swift b/ChartsDemo/Swift/Demos/CombinedChartViewController.swift index d3162293a7..e884cd042b 100644 --- a/ChartsDemo/Swift/Demos/CombinedChartViewController.swift +++ b/ChartsDemo/Swift/Demos/CombinedChartViewController.swift @@ -226,7 +226,7 @@ class CombinedChartViewController: DemoBaseViewController { } } -extension CombinedChartViewController: IAxisValueFormatter { +extension CombinedChartViewController: AxisValueFormatter { func stringForValue(_ value: Double, axis: AxisBase?) -> String { return months[Int(value) % months.count] } diff --git a/ChartsDemo/Swift/Demos/CubicLineChartViewController.swift b/ChartsDemo/Swift/Demos/CubicLineChartViewController.swift index 627d13d08d..5029456988 100644 --- a/ChartsDemo/Swift/Demos/CubicLineChartViewController.swift +++ b/ChartsDemo/Swift/Demos/CubicLineChartViewController.swift @@ -9,8 +9,8 @@ import UIKit import Charts -private class CubicLineSampleFillFormatter: IFillFormatter { - func getFillLinePosition(dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat { +private class CubicLineSampleFillFormatter: FillFormatter { + func getFillLinePosition(dataSet: LineChartDataSetProtocol, dataProvider: LineChartDataProvider) -> CGFloat { return -10 } } diff --git a/ChartsDemo/Swift/Demos/NegativeStackedBarChartViewController.swift b/ChartsDemo/Swift/Demos/NegativeStackedBarChartViewController.swift index 088d2da1a3..3598d64602 100644 --- a/ChartsDemo/Swift/Demos/NegativeStackedBarChartViewController.swift +++ b/ChartsDemo/Swift/Demos/NegativeStackedBarChartViewController.swift @@ -125,7 +125,7 @@ class NegativeStackedBarChartViewController: DemoBaseViewController { } } -extension NegativeStackedBarChartViewController: IAxisValueFormatter { +extension NegativeStackedBarChartViewController: AxisValueFormatter { func stringForValue(_ value: Double, axis: AxisBase?) -> String { return String(format: "%03.0f-%03.0f", value, value + 10) } diff --git a/ChartsDemo/Swift/Demos/PositiveNegativeBarChartViewController.swift b/ChartsDemo/Swift/Demos/PositiveNegativeBarChartViewController.swift index 6d363dec0c..85aeb9d129 100644 --- a/ChartsDemo/Swift/Demos/PositiveNegativeBarChartViewController.swift +++ b/ChartsDemo/Swift/Demos/PositiveNegativeBarChartViewController.swift @@ -113,7 +113,7 @@ class PositiveNegativeBarChartViewController: DemoBaseViewController { } } -extension PositiveNegativeBarChartViewController: IAxisValueFormatter { +extension PositiveNegativeBarChartViewController: AxisValueFormatter { func stringForValue(_ value: Double, axis: AxisBase?) -> String { return dataLabels[min(max(Int(value), 0), dataLabels.count - 1)] } diff --git a/ChartsDemo/Swift/Demos/RadarChartViewController.swift b/ChartsDemo/Swift/Demos/RadarChartViewController.swift index f90bb74c6c..5c7f8599a4 100644 --- a/ChartsDemo/Swift/Demos/RadarChartViewController.swift +++ b/ChartsDemo/Swift/Demos/RadarChartViewController.swift @@ -196,7 +196,7 @@ class RadarChartViewController: DemoBaseViewController { } } -extension RadarChartViewController: IAxisValueFormatter { +extension RadarChartViewController: AxisValueFormatter { func stringForValue(_ value: Double, axis: AxisBase?) -> String { return activities[Int(value) % activities.count] } diff --git a/ChartsDemo/Swift/Formatters/DateValueFormatter.swift b/ChartsDemo/Swift/Formatters/DateValueFormatter.swift index 2962a6852a..aa39e3d444 100644 --- a/ChartsDemo/Swift/Formatters/DateValueFormatter.swift +++ b/ChartsDemo/Swift/Formatters/DateValueFormatter.swift @@ -9,7 +9,7 @@ import Foundation import Charts -public class DateValueFormatter: NSObject, IAxisValueFormatter { +public class DateValueFormatter: NSObject, AxisValueFormatter { private let dateFormatter = DateFormatter() override init() { diff --git a/ChartsDemo/Swift/Formatters/DayAxisValueFormatter.swift b/ChartsDemo/Swift/Formatters/DayAxisValueFormatter.swift index 245a25c83e..f403daa06a 100644 --- a/ChartsDemo/Swift/Formatters/DayAxisValueFormatter.swift +++ b/ChartsDemo/Swift/Formatters/DayAxisValueFormatter.swift @@ -9,7 +9,7 @@ import Foundation import Charts -public class DayAxisValueFormatter: NSObject, IAxisValueFormatter { +public class DayAxisValueFormatter: NSObject, AxisValueFormatter { weak var chart: BarLineChartViewBase? let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", diff --git a/ChartsDemo/Swift/Formatters/IntAxisValueFormatter.swift b/ChartsDemo/Swift/Formatters/IntAxisValueFormatter.swift index bd3062a190..00157055ec 100644 --- a/ChartsDemo/Swift/Formatters/IntAxisValueFormatter.swift +++ b/ChartsDemo/Swift/Formatters/IntAxisValueFormatter.swift @@ -9,7 +9,7 @@ import Foundation import Charts -public class IntAxisValueFormatter: NSObject, IAxisValueFormatter { +public class IntAxisValueFormatter: NSObject, AxisValueFormatter { public func stringForValue(_ value: Double, axis: AxisBase?) -> String { return "\(Int(value))" } diff --git a/ChartsDemo/Swift/Formatters/LargeValueFormatter.swift b/ChartsDemo/Swift/Formatters/LargeValueFormatter.swift index c95ca034a6..8cf679d2b5 100644 --- a/ChartsDemo/Swift/Formatters/LargeValueFormatter.swift +++ b/ChartsDemo/Swift/Formatters/LargeValueFormatter.swift @@ -11,7 +11,7 @@ private let MAX_LENGTH = 5 @objc protocol Testing123 { } -public class LargeValueFormatter: NSObject, IValueFormatter, IAxisValueFormatter { +public class LargeValueFormatter: NSObject, ValueFormatter, AxisValueFormatter { /// Suffix to be appended after the values. /// diff --git a/Rakefile b/Rakefile index 3b9aa0f515..516b385a96 100644 --- a/Rakefile +++ b/Rakefile @@ -3,7 +3,11 @@ def type end def project_name - 'Charts.xcodeproj' + 'ChartsDemo/ChartsDemo.xcodeproj' +end + +def macos_project_name + 'ChartsDemo-OSX/ChartsDemo-OSX.xcodeproj' end def configuration @@ -29,6 +33,19 @@ def build_schemes ] end +def build_demo_schemes + %i[ + ChartsDemo + ChartsDemo-Swift + ] +end + +def build_macos_demo_schemes + [ + 'ChartsDemo-OSX' + ] +end + def test_schemes [ 'ChartsTests' @@ -74,33 +91,43 @@ def xcodebuild(type, name, scheme, configuration, sdk, destination, tasks, xcpre sh "set -o pipefail && xcodebuild #{project_type} '#{name}' -scheme '#{scheme}' -configuration '#{configuration}' -sdk #{sdk} -destination #{destination} #{tasks} | bundle exec xcpretty -c #{xcprety_args}" end -def run_xcodebuild(schemes_to_execute, tasks, destination, is_test, xcprety_args) +def run_xcodebuild(tasks, destination, is_build_demo, xcprety_args) sdk = destination[:sdk] device = destination[:device] uuid = destination[:uuid] + is_test = tasks.include?('test') + is_macos = sdk == 'macosx' + + project = is_macos ? macos_project_name : project_name + + schemes_to_execute = [] + if is_test + schemes_to_execute = test_schemes + elsif is_build_demo + schemes_to_execute = is_macos ? build_macos_demo_schemes : build_demo_schemes + else + schemes_to_execute = build_schemes + end + open_simulator_and_sleep uuid if is_test schemes_to_execute.each do |scheme| - xcodebuild type, project_name, scheme, configuration, sdk, device, tasks, xcprety_args + xcodebuild type, project, scheme, configuration, sdk, device, tasks, xcprety_args end end -def execute(tasks, platform, xcprety_args: '') - is_test = tasks.include?('test') - +def execute(tasks, platform, is_build_demo = false, xcprety_args: '') # platform specific settings destination = devices[platform] - schemes = is_test ? test_schemes : build_schemes - # check if xcodebuild needs to be run on multiple devices if destination.is_a?(Array) destination.each do |destination| - run_xcodebuild schemes, tasks, destination, is_test, xcprety_args + run_xcodebuild tasks, destination, is_build_demo, xcprety_args end else - run_xcodebuild schemes, tasks, destination, is_test, xcprety_args + run_xcodebuild tasks, destination, is_build_demo, xcprety_args end end @@ -122,11 +149,18 @@ end desc 'Run CI tasks. Build and test or build depending on the platform.' task :ci, [:platform] do |_task, args| platform = arg_to_key(args[:platform]) if args.key?(:platform) - - if test_platforms.include?(platform) - execute 'clean test', platform - elsif build_platforms.include?(platform) - execute 'clean build', platform + is_build_demo = test_platforms.include?(platform) || build_platforms.include?(platform) + + if test_platforms.include?(platform) # iOS and tvOS + if platform == :iOS + execute 'clean', platform, is_build_demo + execute 'build', platform, is_build_demo + execute 'test', platform # not use demo specifically + else + execute 'clean test', platform + end + elsif build_platforms.include?(platform) # macOS + execute 'clean build', platform, is_build_demo else test_platforms.each do |platform| execute 'clean test', platform diff --git a/Source/Charts/Charts/BarChartView.swift b/Source/Charts/Charts/BarChartView.swift index 16d7ed1674..52eea9d691 100644 --- a/Source/Charts/Charts/BarChartView.swift +++ b/Source/Charts/Charts/BarChartView.swift @@ -25,7 +25,7 @@ open class BarChartView: BarLineChartViewBase, BarChartDataProvider { super.initialize() - renderer = BarChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = BarChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) self.highlighter = BarHighlighter(chart: self) @@ -40,20 +40,20 @@ open class BarChartView: BarLineChartViewBase, BarChartDataProvider if fitBars { - _xAxis.calculate( + xAxis.calculate( min: data.xMin - data.barWidth / 2.0, max: data.xMax + data.barWidth / 2.0) } else { - _xAxis.calculate(min: data.xMin, max: data.xMax) + xAxis.calculate(min: data.xMin, max: data.xMax) } // calculate axis range (min / max) according to provided data - _leftAxis.calculate( + leftAxis.calculate( min: data.getYMin(axis: .left), max: data.getYMax(axis: .left)) - _rightAxis.calculate( + rightAxis.calculate( min: data.getYMin(axis: .right), max: data.getYMax(axis: .right)) } @@ -87,7 +87,7 @@ open class BarChartView: BarLineChartViewBase, BarChartDataProvider { guard let data = _data as? BarChartData, - let set = data.getDataSetForEntry(e) as? IBarChartDataSet + let set = data.getDataSetForEntry(e) as? BarChartDataSetProtocol else { return CGRect.null } let y = e.y diff --git a/Source/Charts/Charts/BarLineChartViewBase.swift b/Source/Charts/Charts/BarLineChartViewBase.swift index 5c11209d50..f83bbc988e 100644 --- a/Source/Charts/Charts/BarLineChartViewBase.swift +++ b/Source/Charts/Charts/BarLineChartViewBase.swift @@ -57,19 +57,28 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// **default**: false @objc open var keepPositionOnRotation: Bool = false - /// the object representing the left y-axis - internal var _leftAxis: YAxis! + /// The left y-axis object. In the horizontal bar-chart, this is the + /// top axis. + @objc open internal(set) var leftAxis = YAxis(position: .left) - /// the object representing the right y-axis - internal var _rightAxis: YAxis! + /// The right y-axis object. In the horizontal bar-chart, this is the + /// bottom axis. + @objc open internal(set) var rightAxis = YAxis(position: .right) + + /// The left Y axis renderer. This is a read-write property so you can set your own custom renderer here. + /// **default**: An instance of YAxisRenderer + @objc open lazy var leftYAxisRenderer = YAxisRenderer(viewPortHandler: viewPortHandler, axis: leftAxis, transformer: _leftAxisTransformer) - internal var _leftYAxisRenderer: YAxisRenderer! - internal var _rightYAxisRenderer: YAxisRenderer! + /// The right Y axis renderer. This is a read-write property so you can set your own custom renderer here. + /// **default**: An instance of YAxisRenderer + @objc open lazy var rightYAxisRenderer = YAxisRenderer(viewPortHandler: viewPortHandler, axis: rightAxis, transformer: _rightAxisTransformer) internal var _leftAxisTransformer: Transformer! internal var _rightAxisTransformer: Transformer! - internal var _xAxisRenderer: XAxisRenderer! + /// The X axis renderer. This is a read-write property so you can set your own custom renderer here. + /// **default**: An instance of XAxisRenderer + @objc open lazy var xAxisRenderer = XAxisRenderer(viewPortHandler: viewPortHandler, axis: xAxis, transformer: _leftAxisTransformer) internal var _tapGestureRecognizer: NSUITapGestureRecognizer! internal var _doubleTapGestureRecognizer: NSUITapGestureRecognizer! @@ -99,18 +108,10 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD internal override func initialize() { super.initialize() - - _leftAxis = YAxis(position: .left) - _rightAxis = YAxis(position: .right) - - _leftAxisTransformer = Transformer(viewPortHandler: _viewPortHandler) - _rightAxisTransformer = Transformer(viewPortHandler: _viewPortHandler) - - _leftYAxisRenderer = YAxisRenderer(viewPortHandler: _viewPortHandler, yAxis: _leftAxis, transformer: _leftAxisTransformer) - _rightYAxisRenderer = YAxisRenderer(viewPortHandler: _viewPortHandler, yAxis: _rightAxis, transformer: _rightAxisTransformer) - - _xAxisRenderer = XAxisRenderer(viewPortHandler: _viewPortHandler, xAxis: _xAxis, transformer: _leftAxisTransformer) - + + _leftAxisTransformer = Transformer(viewPortHandler: viewPortHandler) + _rightAxisTransformer = Transformer(viewPortHandler: viewPortHandler) + self.highlighter = ChartHighlighter(chart: self) _tapGestureRecognizer = NSUITapGestureRecognizer(target: self, action: #selector(tapGestureRecognized(_:))) @@ -178,48 +179,48 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD autoScale() } - if _leftAxis.isEnabled + if leftAxis.isEnabled { - _leftYAxisRenderer?.computeAxis(min: _leftAxis._axisMinimum, max: _leftAxis._axisMaximum, inverted: _leftAxis.isInverted) + leftYAxisRenderer.computeAxis(min: leftAxis._axisMinimum, max: leftAxis._axisMaximum, inverted: leftAxis.isInverted) } - if _rightAxis.isEnabled + if rightAxis.isEnabled { - _rightYAxisRenderer?.computeAxis(min: _rightAxis._axisMinimum, max: _rightAxis._axisMaximum, inverted: _rightAxis.isInverted) + rightYAxisRenderer.computeAxis(min: rightAxis._axisMinimum, max: rightAxis._axisMaximum, inverted: rightAxis.isInverted) } - if _xAxis.isEnabled + if xAxis.isEnabled { - _xAxisRenderer?.computeAxis(min: _xAxis._axisMinimum, max: _xAxis._axisMaximum, inverted: false) + xAxisRenderer.computeAxis(min: xAxis._axisMinimum, max: xAxis._axisMaximum, inverted: false) } - _xAxisRenderer?.renderAxisLine(context: context) - _leftYAxisRenderer?.renderAxisLine(context: context) - _rightYAxisRenderer?.renderAxisLine(context: context) + xAxisRenderer.renderAxisLine(context: context) + leftYAxisRenderer.renderAxisLine(context: context) + rightYAxisRenderer.renderAxisLine(context: context) // The renderers are responsible for clipping, to account for line-width center etc. - _xAxisRenderer?.renderGridLines(context: context) - _leftYAxisRenderer?.renderGridLines(context: context) - _rightYAxisRenderer?.renderGridLines(context: context) + xAxisRenderer.renderGridLines(context: context) + leftYAxisRenderer.renderGridLines(context: context) + rightYAxisRenderer.renderGridLines(context: context) - if _xAxis.isEnabled && _xAxis.isDrawLimitLinesBehindDataEnabled + if xAxis.isEnabled && xAxis.isDrawLimitLinesBehindDataEnabled { - _xAxisRenderer?.renderLimitLines(context: context) + xAxisRenderer.renderLimitLines(context: context) } - if _leftAxis.isEnabled && _leftAxis.isDrawLimitLinesBehindDataEnabled + if leftAxis.isEnabled && leftAxis.isDrawLimitLinesBehindDataEnabled { - _leftYAxisRenderer?.renderLimitLines(context: context) + leftYAxisRenderer.renderLimitLines(context: context) } - if _rightAxis.isEnabled && _rightAxis.isDrawLimitLinesBehindDataEnabled + if rightAxis.isEnabled && rightAxis.isDrawLimitLinesBehindDataEnabled { - _rightYAxisRenderer?.renderLimitLines(context: context) + rightYAxisRenderer.renderLimitLines(context: context) } // make sure the data cannot be drawn outside the content-rect context.saveGState() - context.clip(to: _viewPortHandler.contentRect) + context.clip(to: viewPortHandler.contentRect) renderer.drawData(context: context) // if highlighting is enabled @@ -232,29 +233,29 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD renderer.drawExtras(context: context) - if _xAxis.isEnabled && !_xAxis.isDrawLimitLinesBehindDataEnabled + if xAxis.isEnabled && !xAxis.isDrawLimitLinesBehindDataEnabled { - _xAxisRenderer?.renderLimitLines(context: context) + xAxisRenderer.renderLimitLines(context: context) } - if _leftAxis.isEnabled && !_leftAxis.isDrawLimitLinesBehindDataEnabled + if leftAxis.isEnabled && !leftAxis.isDrawLimitLinesBehindDataEnabled { - _leftYAxisRenderer?.renderLimitLines(context: context) + leftYAxisRenderer.renderLimitLines(context: context) } - if _rightAxis.isEnabled && !_rightAxis.isDrawLimitLinesBehindDataEnabled + if rightAxis.isEnabled && !rightAxis.isDrawLimitLinesBehindDataEnabled { - _rightYAxisRenderer?.renderLimitLines(context: context) + rightYAxisRenderer.renderLimitLines(context: context) } - _xAxisRenderer.renderAxisLabels(context: context) - _leftYAxisRenderer.renderAxisLabels(context: context) - _rightYAxisRenderer.renderAxisLabels(context: context) + xAxisRenderer.renderAxisLabels(context: context) + leftYAxisRenderer.renderAxisLabels(context: context) + rightYAxisRenderer.renderAxisLabels(context: context) if clipValuesToContentEnabled { context.saveGState() - context.clip(to: _viewPortHandler.contentRect) + context.clip(to: viewPortHandler.contentRect) renderer.drawValues(context: context) @@ -283,18 +284,18 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD data.calcMinMaxY(fromX: self.lowestVisibleX, toX: self.highestVisibleX) - _xAxis.calculate(min: data.xMin, max: data.xMax) + xAxis.calculate(min: data.xMin, max: data.xMax) // calculate axis range (min / max) according to provided data - if _leftAxis.isEnabled + if leftAxis.isEnabled { - _leftAxis.calculate(min: data.getYMin(axis: .left), max: data.getYMax(axis: .left)) + leftAxis.calculate(min: data.getYMin(axis: .left), max: data.getYMax(axis: .left)) } - if _rightAxis.isEnabled + if rightAxis.isEnabled { - _rightAxis.calculate(min: data.getYMin(axis: .right), max: data.getYMax(axis: .right)) + rightAxis.calculate(min: data.getYMin(axis: .right), max: data.getYMax(axis: .right)) } calculateOffsets() @@ -302,14 +303,14 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD internal func prepareValuePxMatrix() { - _rightAxisTransformer.prepareMatrixValuePx(chartXMin: _xAxis._axisMinimum, deltaX: CGFloat(xAxis.axisRange), deltaY: CGFloat(_rightAxis.axisRange), chartYMin: _rightAxis._axisMinimum) - _leftAxisTransformer.prepareMatrixValuePx(chartXMin: xAxis._axisMinimum, deltaX: CGFloat(xAxis.axisRange), deltaY: CGFloat(_leftAxis.axisRange), chartYMin: _leftAxis._axisMinimum) + _rightAxisTransformer.prepareMatrixValuePx(chartXMin: xAxis._axisMinimum, deltaX: CGFloat(xAxis.axisRange), deltaY: CGFloat(rightAxis.axisRange), chartYMin: rightAxis._axisMinimum) + _leftAxisTransformer.prepareMatrixValuePx(chartXMin: xAxis._axisMinimum, deltaX: CGFloat(xAxis.axisRange), deltaY: CGFloat(leftAxis.axisRange), chartYMin: leftAxis._axisMinimum) } internal func prepareOffsetMatrix() { - _rightAxisTransformer.prepareMatrixOffset(inverted: _rightAxis.isInverted) - _leftAxisTransformer.prepareMatrixOffset(inverted: _leftAxis.isInverted) + _rightAxisTransformer.prepareMatrixOffset(inverted: rightAxis.isInverted) + _leftAxisTransformer.prepareMatrixOffset(inverted: leftAxis.isInverted) } open override func notifyDataSetChanged() @@ -318,20 +319,17 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD calcMinMax() - _leftYAxisRenderer?.computeAxis(min: _leftAxis._axisMinimum, max: _leftAxis._axisMaximum, inverted: _leftAxis.isInverted) - _rightYAxisRenderer?.computeAxis(min: _rightAxis._axisMinimum, max: _rightAxis._axisMaximum, inverted: _rightAxis.isInverted) + leftYAxisRenderer.computeAxis(min: leftAxis._axisMinimum, max: leftAxis._axisMaximum, inverted: leftAxis.isInverted) + rightYAxisRenderer.computeAxis(min: rightAxis._axisMinimum, max: rightAxis._axisMaximum, inverted: rightAxis.isInverted) if let data = _data { - _xAxisRenderer?.computeAxis( - min: _xAxis._axisMinimum, - max: _xAxis._axisMaximum, + xAxisRenderer.computeAxis( + min: xAxis._axisMinimum, + max: xAxis._axisMaximum, inverted: false) - if _legend !== nil - { - _legendRenderer?.computeLegend(data: data) - } + _legendRenderer.computeLegend(data: data) } calculateOffsets() @@ -342,17 +340,17 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD internal override func calcMinMax() { // calculate / set x-axis range - _xAxis.calculate(min: _data?.xMin ?? 0.0, max: _data?.xMax ?? 0.0) + xAxis.calculate(min: _data?.xMin ?? 0.0, max: _data?.xMax ?? 0.0) // calculate axis range (min / max) according to provided data - _leftAxis.calculate(min: _data?.getYMin(axis: .left) ?? 0.0, max: _data?.getYMax(axis: .left) ?? 0.0) - _rightAxis.calculate(min: _data?.getYMin(axis: .right) ?? 0.0, max: _data?.getYMax(axis: .right) ?? 0.0) + leftAxis.calculate(min: _data?.getYMin(axis: .left) ?? 0.0, max: _data?.getYMax(axis: .left) ?? 0.0) + rightAxis.calculate(min: _data?.getYMin(axis: .right) ?? 0.0, max: _data?.getYMax(axis: .right) ?? 0.0) } internal func calculateLegendOffsets(offsetLeft: inout CGFloat, offsetTop: inout CGFloat, offsetRight: inout CGFloat, offsetBottom: inout CGFloat) { // setup offsets for legend - if _legend !== nil && _legend.isEnabled && !_legend.drawInside + if _legend.isEnabled, !_legend.drawInside { switch _legend.orientation { @@ -361,20 +359,20 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD switch _legend.horizontalAlignment { case .left: - offsetLeft += min(_legend.neededWidth, _viewPortHandler.chartWidth * _legend.maxSizePercent) + _legend.xOffset + offsetLeft += min(_legend.neededWidth, viewPortHandler.chartWidth * _legend.maxSizePercent) + _legend.xOffset case .right: - offsetRight += min(_legend.neededWidth, _viewPortHandler.chartWidth * _legend.maxSizePercent) + _legend.xOffset + offsetRight += min(_legend.neededWidth, viewPortHandler.chartWidth * _legend.maxSizePercent) + _legend.xOffset case .center: switch _legend.verticalAlignment { case .top: - offsetTop += min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset + offsetTop += min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset case .bottom: - offsetBottom += min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset + offsetBottom += min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset default: break @@ -386,14 +384,14 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD switch _legend.verticalAlignment { case .top: - offsetTop += min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset + offsetTop += min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset if xAxis.isEnabled && xAxis.isDrawLabelsEnabled { offsetTop += xAxis.labelRotatedHeight } case .bottom: - offsetBottom += min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset + offsetBottom += min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) + _legend.yOffset if xAxis.isEnabled && xAxis.isDrawLabelsEnabled { offsetBottom += xAxis.labelRotatedHeight @@ -456,7 +454,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD offsetBottom += self.extraBottomOffset offsetLeft += self.extraLeftOffset - _viewPortHandler.restrainViewPort( + viewPortHandler.restrainViewPort( offsetLeft: max(self.minOffset, offsetLeft), offsetTop: max(self.minOffset, offsetTop), offsetRight: max(self.minOffset, offsetRight), @@ -479,14 +477,14 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { // draw the grid background context.setFillColor(gridBackgroundColor.cgColor) - context.fill(_viewPortHandler.contentRect) + context.fill(viewPortHandler.contentRect) } if drawBordersEnabled { context.setLineWidth(borderLineWidth) context.setStrokeColor(borderColor.cgColor) - context.stroke(_viewPortHandler.contentRect) + context.stroke(viewPortHandler.contentRect) } if drawGridBackgroundEnabled || drawBordersEnabled @@ -507,7 +505,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD private var _isDragging = false private var _isScaling = false private var _gestureScaleAxis = GestureScaleAxis.both - private var _closestDataSetToTouch: IChartDataSet! + private var _closestDataSetToTouch: ChartDataSetProtocol! private var _panGestureReachedEdge: Bool = false private weak var _outerScrollView: NSUIScrollView? @@ -555,15 +553,15 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD if _data !== nil && _doubleTapToZoomEnabled && (data?.entryCount ?? 0) > 0 { var location = recognizer.location(in: self) - location.x = location.x - _viewPortHandler.offsetLeft + location.x = location.x - viewPortHandler.offsetLeft if isTouchInverted() { - location.y = -(location.y - _viewPortHandler.offsetTop) + location.y = -(location.y - viewPortHandler.offsetTop) } else { - location.y = -(self.bounds.size.height - location.y - _viewPortHandler.offsetBottom) + location.y = -(self.bounds.size.height - location.y - viewPortHandler.offsetBottom) } self.zoom(scaleX: isScaleXEnabled ? 1.4 : 1.0, scaleY: isScaleYEnabled ? 1.4 : 1.0, x: location.x, y: location.y) @@ -618,8 +616,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD else if recognizer.state == NSUIGestureRecognizerState.changed { let isZoomingOut = (recognizer.nsuiScale < 1) - var canZoomMoreX = isZoomingOut ? _viewPortHandler.canZoomOutMoreX : _viewPortHandler.canZoomInMoreX - var canZoomMoreY = isZoomingOut ? _viewPortHandler.canZoomOutMoreY : _viewPortHandler.canZoomInMoreY + var canZoomMoreX = isZoomingOut ? viewPortHandler.canZoomOutMoreX : viewPortHandler.canZoomInMoreX + var canZoomMoreY = isZoomingOut ? viewPortHandler.canZoomOutMoreY : viewPortHandler.canZoomInMoreY if _isScaling { @@ -628,15 +626,15 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD if canZoomMoreX || canZoomMoreY { var location = recognizer.location(in: self) - location.x = location.x - _viewPortHandler.offsetLeft + location.x = location.x - viewPortHandler.offsetLeft if isTouchInverted() { - location.y = -(location.y - _viewPortHandler.offsetTop) + location.y = -(location.y - viewPortHandler.offsetTop) } else { - location.y = -(_viewPortHandler.chartHeight - location.y - _viewPortHandler.offsetBottom) + location.y = -(viewPortHandler.chartHeight - location.y - viewPortHandler.offsetBottom) } let scaleX = canZoomMoreX ? recognizer.nsuiScale : 1.0 @@ -646,9 +644,9 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD matrix = matrix.scaledBy(x: scaleX, y: scaleY) matrix = matrix.translatedBy(x: -location.x, y: -location.y) - matrix = _viewPortHandler.touchMatrix.concatenating(matrix) + matrix = viewPortHandler.touchMatrix.concatenating(matrix) - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: true) + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: true) if delegate !== nil { @@ -797,12 +795,12 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD } } - let originalMatrix = _viewPortHandler.touchMatrix + let originalMatrix = viewPortHandler.touchMatrix var matrix = CGAffineTransform(translationX: translation.x, y: translation.y) matrix = originalMatrix.concatenating(matrix) - matrix = _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: true) + matrix = viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: true) if delegate !== nil { @@ -965,10 +963,10 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// Zooms in by 1.4, into the charts center. @objc open func zoomIn() { - let center = _viewPortHandler.contentCenter + let center = viewPortHandler.contentCenter - let matrix = _viewPortHandler.zoomIn(x: center.x, y: -center.y) - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) + let matrix = viewPortHandler.zoomIn(x: center.x, y: -center.y) + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) // Range might have changed, which means that Y-axis labels could have changed in size, affecting Y-axis size. So we need to recalculate offsets. calculateOffsets() @@ -978,10 +976,10 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// Zooms out by 0.7, from the charts center. @objc open func zoomOut() { - let center = _viewPortHandler.contentCenter + let center = viewPortHandler.contentCenter - let matrix = _viewPortHandler.zoomOut(x: center.x, y: -center.y) - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) + let matrix = viewPortHandler.zoomOut(x: center.x, y: -center.y) + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) // Range might have changed, which means that Y-axis labels could have changed in size, affecting Y-axis size. So we need to recalculate offsets. calculateOffsets() @@ -991,8 +989,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// Zooms out to original size. @objc open func resetZoom() { - let matrix = _viewPortHandler.resetZoom() - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) + let matrix = viewPortHandler.resetZoom() + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) // Range might have changed, which means that Y-axis labels could have changed in size, affecting Y-axis size. So we need to recalculate offsets. calculateOffsets() @@ -1012,8 +1010,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD x: CGFloat, y: CGFloat) { - let matrix = _viewPortHandler.zoom(scaleX: scaleX, scaleY: scaleY, x: x, y: -y) - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) + let matrix = viewPortHandler.zoom(scaleX: scaleX, scaleY: scaleY, x: x, y: -y) + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) // Range might have changed, which means that Y-axis labels could have changed in size, affecting Y-axis size. So we need to recalculate offsets. calculateOffsets() @@ -1094,7 +1092,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD transformer: getTransformer(forAxis: axis), view: self, yAxis: getAxis(axis), - xAxisRange: _xAxis.axisRange, + xAxisRange: xAxis.axisRange, scaleX: scaleX, scaleY: scaleY, xOrigin: viewPortHandler.scaleX, @@ -1153,8 +1151,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// Resets all zooming and dragging and makes the chart fit exactly it's bounds. @objc open func fitScreen() { - let matrix = _viewPortHandler.fitScreen() - _viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) + let matrix = viewPortHandler.fitScreen() + viewPortHandler.refresh(newMatrix: matrix, chart: self, invalidate: false) calculateOffsets() setNeedsDisplay() @@ -1163,8 +1161,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// Sets the minimum scale value to which can be zoomed out. 1 = fitScreen @objc open func setScaleMinima(_ scaleX: CGFloat, scaleY: CGFloat) { - _viewPortHandler.setMinimumScaleX(scaleX) - _viewPortHandler.setMinimumScaleY(scaleY) + viewPortHandler.setMinimumScaleX(scaleX) + viewPortHandler.setMinimumScaleY(scaleY) } @objc open var visibleXRange: Double @@ -1179,8 +1177,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// If you call this method, chart must have data or it has no effect. @objc open func setVisibleXRangeMaximum(_ maxXRange: Double) { - let xScale = _xAxis.axisRange / maxXRange - _viewPortHandler.setMinimumScaleX(CGFloat(xScale)) + let xScale = xAxis.axisRange / maxXRange + viewPortHandler.setMinimumScaleX(CGFloat(xScale)) } /// Sets the size of the area (range on the x-axis) that should be minimum visible at once (no further zooming in allowed). @@ -1190,8 +1188,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// If you call this method, chart must have data or it has no effect. @objc open func setVisibleXRangeMinimum(_ minXRange: Double) { - let xScale = _xAxis.axisRange / minXRange - _viewPortHandler.setMaximumScaleX(CGFloat(xScale)) + let xScale = xAxis.axisRange / minXRange + viewPortHandler.setMaximumScaleX(CGFloat(xScale)) } /// Limits the maximum and minimum value count that can be visible by pinching and zooming. @@ -1202,9 +1200,9 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// If you call this method, chart must have data or it has no effect. @objc open func setVisibleXRange(minXRange: Double, maxXRange: Double) { - let minScale = _xAxis.axisRange / maxXRange - let maxScale = _xAxis.axisRange / minXRange - _viewPortHandler.setMinMaxScaleX( + let minScale = xAxis.axisRange / maxXRange + let maxScale = xAxis.axisRange / minXRange + viewPortHandler.setMinMaxScaleX( minScaleX: CGFloat(minScale), maxScaleX: CGFloat(maxScale)) } @@ -1216,7 +1214,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD @objc open func setVisibleYRangeMaximum(_ maxYRange: Double, axis: YAxis.AxisDependency) { let yScale = getAxisRange(axis: axis) / maxYRange - _viewPortHandler.setMinimumScaleY(CGFloat(yScale)) + viewPortHandler.setMinimumScaleY(CGFloat(yScale)) } /// Sets the size of the area (range on the y-axis) that should be minimum visible at once, no further zooming in possible. @@ -1226,7 +1224,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD @objc open func setVisibleYRangeMinimum(_ minYRange: Double, axis: YAxis.AxisDependency) { let yScale = getAxisRange(axis: axis) / minYRange - _viewPortHandler.setMaximumScaleY(CGFloat(yScale)) + viewPortHandler.setMaximumScaleY(CGFloat(yScale)) } /// Limits the maximum and minimum y range that can be visible by pinching and zooming. @@ -1238,7 +1236,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { let minScale = getAxisRange(axis: axis) / minYRange let maxScale = getAxisRange(axis: axis) / maxYRange - _viewPortHandler.setMinMaxScaleY(minScaleY: CGFloat(minScale), maxScaleY: CGFloat(maxScale)) + viewPortHandler.setMinMaxScaleY(minScaleY: CGFloat(minScale), maxScaleY: CGFloat(maxScale)) } /// Moves the left side of the current viewport to the specified x-value. @@ -1262,7 +1260,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// - parameter axis: - which axis should be used as a reference for the y-axis @objc open func moveViewToY(_ yValue: Double, axis: YAxis.AxisDependency) { - let yInView = getAxisRange(axis: axis) / Double(_viewPortHandler.scaleY) + let yInView = getAxisRange(axis: axis) / Double(viewPortHandler.scaleY) let job = MoveViewJob( viewPortHandler: viewPortHandler, @@ -1282,7 +1280,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// - parameter axis: - which axis should be used as a reference for the y-axis @objc open func moveViewTo(xValue: Double, yValue: Double, axis: YAxis.AxisDependency) { - let yInView = getAxisRange(axis: axis) / Double(_viewPortHandler.scaleY) + let yInView = getAxisRange(axis: axis) / Double(viewPortHandler.scaleY) let job = MoveViewJob( viewPortHandler: viewPortHandler, @@ -1313,7 +1311,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD point: CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop), axis: axis) - let yInView = getAxisRange(axis: axis) / Double(_viewPortHandler.scaleY) + let yInView = getAxisRange(axis: axis) / Double(viewPortHandler.scaleY) let job = AnimatedMoveViewJob( viewPortHandler: viewPortHandler, @@ -1375,8 +1373,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD yValue: Double, axis: YAxis.AxisDependency) { - let yInView = getAxisRange(axis: axis) / Double(_viewPortHandler.scaleY) - let xInView = xAxis.axisRange / Double(_viewPortHandler.scaleX) + let yInView = getAxisRange(axis: axis) / Double(viewPortHandler.scaleY) + let xInView = xAxis.axisRange / Double(viewPortHandler.scaleX) let job = MoveViewJob( viewPortHandler: viewPortHandler, @@ -1406,8 +1404,8 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD point: CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop), axis: axis) - let yInView = getAxisRange(axis: axis) / Double(_viewPortHandler.scaleY) - let xInView = xAxis.axisRange / Double(_viewPortHandler.scaleX) + let yInView = getAxisRange(axis: axis) / Double(viewPortHandler.scaleY) + let xInView = xAxis.axisRange / Double(viewPortHandler.scaleX) let job = AnimatedMoveViewJob( viewPortHandler: viewPortHandler, @@ -1464,7 +1462,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD if Thread.isMainThread { - self._viewPortHandler.restrainViewPort(offsetLeft: left, offsetTop: top, offsetRight: right, offsetBottom: bottom) + self.viewPortHandler.restrainViewPort(offsetLeft: left, offsetTop: top, offsetRight: right, offsetBottom: bottom) prepareOffsetMatrix() prepareValuePxMatrix() } @@ -1683,12 +1681,12 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD } /// - returns: The DataSet object displayed at the touched position of the chart - @objc open func getDataSetByTouchPoint(point pt: CGPoint) -> IBarLineScatterCandleBubbleChartDataSet! + @objc open func getDataSetByTouchPoint(point pt: CGPoint) -> BarLineScatterCandleBubbleChartDataSetProtocol! { let h = getHighlightByTouchPoint(pt) if h !== nil { - return _data?.getDataSetByIndex(h!.dataSetIndex) as! IBarLineScatterCandleBubbleChartDataSet! + return _data?.getDataSetByIndex(h!.dataSetIndex) as! BarLineScatterCandleBubbleChartDataSetProtocol! } return nil } @@ -1696,36 +1694,17 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// - returns: The current x-scale factor @objc open var scaleX: CGFloat { - if _viewPortHandler === nil - { - return 1.0 - } - return _viewPortHandler.scaleX + return viewPortHandler.scaleX } /// - returns: The current y-scale factor @objc open var scaleY: CGFloat { - if _viewPortHandler === nil - { - return 1.0 - } - return _viewPortHandler.scaleY + return viewPortHandler.scaleY } /// if the chart is fully zoomed out, return true - @objc open var isFullyZoomedOut: Bool { return _viewPortHandler.isFullyZoomedOut } - - /// - returns: The left y-axis object. In the horizontal bar-chart, this is the - /// top axis. - @objc open var leftAxis: YAxis - { - return _leftAxis - } - - /// - returns: The right y-axis object. In the horizontal bar-chart, this is the - /// bottom axis. - @objc open var rightAxis: YAxis { return _rightAxis } + @objc open var isFullyZoomedOut: Bool { return viewPortHandler.isFullyZoomedOut } /// - returns: The y-axis object to the corresponding AxisDependency. In the /// horizontal bar-chart, LEFT == top, RIGHT == BOTTOM @@ -1733,11 +1712,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - return _leftAxis + return leftAxis } else { - return _rightAxis + return rightAxis } } @@ -1768,46 +1747,19 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// bounds on the x-axis. @objc open func setDragOffsetX(_ offset: CGFloat) { - _viewPortHandler.setDragOffsetX(offset) + viewPortHandler.setDragOffsetX(offset) } /// Set an offset in dp that allows the user to drag the chart over it's /// bounds on the y-axis. @objc open func setDragOffsetY(_ offset: CGFloat) { - _viewPortHandler.setDragOffsetY(offset) + viewPortHandler.setDragOffsetY(offset) } /// - returns: `true` if both drag offsets (x and y) are zero or smaller. - @objc open var hasNoDragOffset: Bool { return _viewPortHandler.hasNoDragOffset } + @objc open var hasNoDragOffset: Bool { return viewPortHandler.hasNoDragOffset } - /// The X axis renderer. This is a read-write property so you can set your own custom renderer here. - /// **default**: An instance of XAxisRenderer - /// - returns: The current set X axis renderer - @objc open var xAxisRenderer: XAxisRenderer - { - get { return _xAxisRenderer } - set { _xAxisRenderer = newValue } - } - - /// The left Y axis renderer. This is a read-write property so you can set your own custom renderer here. - /// **default**: An instance of YAxisRenderer - /// - returns: The current set left Y axis renderer - @objc open var leftYAxisRenderer: YAxisRenderer - { - get { return _leftYAxisRenderer } - set { _leftYAxisRenderer = newValue } - } - - /// The right Y axis renderer. This is a read-write property so you can set your own custom renderer here. - /// **default**: An instance of YAxisRenderer - /// - returns: The current set right Y axis renderer - @objc open var rightYAxisRenderer: YAxisRenderer - { - get { return _rightYAxisRenderer } - set { _rightYAxisRenderer = newValue } - } - open override var chartYMax: Double { return max(leftAxis._axisMaximum, rightAxis._axisMaximum) @@ -1821,7 +1773,7 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD /// - returns: `true` if either the left or the right or both axes are inverted. @objc open var isAnyAxisInverted: Bool { - return _leftAxis.isInverted || _rightAxis.isInverted + return leftAxis.isInverted || rightAxis.isInverted } /// flag that indicates if auto scaling on the y axis is enabled. @@ -1841,11 +1793,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - _leftAxis.minWidth = width + leftAxis.minWidth = width } else { - _rightAxis.minWidth = width + rightAxis.minWidth = width } } @@ -1855,11 +1807,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - return _leftAxis.minWidth + return leftAxis.minWidth } else { - return _rightAxis.minWidth + return rightAxis.minWidth } } /// Sets a maximum width to the specified y axis. @@ -1868,11 +1820,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - _leftAxis.maxWidth = width + leftAxis.maxWidth = width } else { - _rightAxis.maxWidth = width + rightAxis.maxWidth = width } } @@ -1884,11 +1836,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - return _leftAxis.maxWidth + return leftAxis.maxWidth } else { - return _rightAxis.maxWidth + return rightAxis.maxWidth } } @@ -1897,11 +1849,11 @@ open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartD { if axis == .left { - return _leftAxis.requiredSize().width + return leftAxis.requiredSize().width } else { - return _rightAxis.requiredSize().width + return rightAxis.requiredSize().width } } diff --git a/Source/Charts/Charts/BubbleChartView.swift b/Source/Charts/Charts/BubbleChartView.swift index 1b13677564..80f3df0e05 100644 --- a/Source/Charts/Charts/BubbleChartView.swift +++ b/Source/Charts/Charts/BubbleChartView.swift @@ -18,7 +18,7 @@ open class BubbleChartView: BarLineChartViewBase, BubbleChartDataProvider { super.initialize() - renderer = BubbleChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = BubbleChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) } // MARK: - BubbleChartDataProvider diff --git a/Source/Charts/Charts/CandleStickChartView.swift b/Source/Charts/Charts/CandleStickChartView.swift index 0366e8b873..08c0e9ddbc 100644 --- a/Source/Charts/Charts/CandleStickChartView.swift +++ b/Source/Charts/Charts/CandleStickChartView.swift @@ -19,7 +19,7 @@ open class CandleStickChartView: BarLineChartViewBase, CandleChartDataProvider { super.initialize() - renderer = CandleStickChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = CandleStickChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) self.xAxis.spaceMin = 0.5 self.xAxis.spaceMax = 0.5 diff --git a/Source/Charts/Charts/ChartViewBase.swift b/Source/Charts/Charts/ChartViewBase.swift index 8763174608..b34acba956 100644 --- a/Source/Charts/Charts/ChartViewBase.swift +++ b/Source/Charts/Charts/ChartViewBase.swift @@ -42,14 +42,14 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// - returns: The object representing all x-labels, this method can be used to /// acquire the XAxis object and modify it (e.g. change the position of the /// labels) - @objc open var xAxis: XAxis - { - return _xAxis - } - +// @objc open var xAxis: XAxis +// { +// return xAxis +// } + /// The default IValueFormatter that has been determined by the chart considering the provided minimum and maximum values. - internal var _defaultValueFormatter: IValueFormatter? = DefaultValueFormatter(decimals: 0) - + internal var _defaultValueFormatter: ValueFormatter? = DefaultValueFormatter(decimals: 0) + /// object that holds all data that was originally set for the chart, before it was modified or any filtering algorithms had been applied internal var _data: ChartData? @@ -67,15 +67,15 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate internal var _drawUnitInChart = false /// The object representing the labels on the x-axis - internal var _xAxis: XAxis! + @objc open internal(set) lazy var xAxis = XAxis() /// The `Description` object of the chart. /// This should have been called just "description", but - @objc open var chartDescription: Description? + @objc open var chartDescription = Description() /// The legend object containing all data associated with the legend - internal var _legend: Legend! - + internal lazy var _legend: Legend = Legend() + /// delegate to receive chart events @objc open weak var delegate: ChartViewDelegate? @@ -86,20 +86,25 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate @objc open var noDataFont: NSUIFont! = NSUIFont(name: "HelveticaNeue", size: 12.0) /// color of the no data text - @objc open var noDataTextColor: NSUIColor = NSUIColor.black + @objc open var noDataTextColor: NSUIColor = .black - internal var _legendRenderer: LegendRenderer! + internal lazy var _legendRenderer: LegendRenderer = LegendRenderer(viewPortHandler: _viewPortHandler, legend: _legend) /// object responsible for rendering the data @objc open var renderer: DataRenderer? - @objc open var highlighter: IHighlighter? + @objc open var highlighter: Highlighter? /// object that manages the bounds and drawing constraints of the chart - internal var _viewPortHandler: ViewPortHandler! - + internal lazy var _viewPortHandler = ViewPortHandler(width: bounds.size.width, height: bounds.size.height) + /// object responsible for animations - internal var _animator: Animator! + internal lazy var _animator: Animator = + { + let animator = Animator() + animator.delegate = self + return animator + }() /// flag that indicates if offsets calculation has already been done or not private var _offsetsCalculated = false @@ -116,7 +121,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate @objc open var isDrawMarkersEnabled: Bool { return drawMarkers } /// The marker that is displayed when a value is clicked on the chart - @objc open var marker: IMarker? + @objc open var marker: Marker? private var _interceptTouchEvents = false @@ -156,30 +161,18 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate deinit { - self.removeObserver(self, forKeyPath: "bounds") - self.removeObserver(self, forKeyPath: "frame") + removeObserver(self, forKeyPath: "bounds") + removeObserver(self, forKeyPath: "frame") } internal func initialize() { #if os(iOS) - self.backgroundColor = NSUIColor.clear + self.backgroundColor = .clear #endif - _animator = Animator() - _animator.delegate = self - - _viewPortHandler = ViewPortHandler(width: bounds.size.width, height: bounds.size.height) - - chartDescription = Description() - - _legend = Legend() - _legendRenderer = LegendRenderer(viewPortHandler: _viewPortHandler, legend: _legend) - - _xAxis = XAxis() - - self.addObserver(self, forKeyPath: "bounds", options: .new, context: nil) - self.addObserver(self, forKeyPath: "frame", options: .new, context: nil) + addObserver(self, forKeyPath: "bounds", options: .new, context: nil) + addObserver(self, forKeyPath: "frame", options: .new, context: nil) } // MARK: - ChartViewBase @@ -187,24 +180,18 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// The data for the chart open var data: ChartData? { - get - { - return _data - } + get { return _data } set { _data = newValue _offsetsCalculated = false - guard let _data = _data else - { - return - } + guard let data = _data else { return } // calculate how many digits are needed - setupDefaultFormatter(min: _data.getYMin(), max: _data.getYMax()) + setupDefaultFormatter(min: data.getYMin(), max: data.getYMax()) - for set in _data.dataSets + for set in data.dataSets { if set.needsFormatter || set.valueFormatter === _defaultValueFormatter { @@ -239,15 +226,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate @objc open func isEmpty() -> Bool { guard let data = _data else { return true } - - if data.entryCount <= 0 - { - return true - } - else - { - return false - } + return data.entryCount <= 0 } /// Lets the chart know its underlying data has changed and should perform all necessary recalculations. @@ -273,7 +252,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate internal func setupDefaultFormatter(min: Double, max: Double) { // check if a custom formatter is set or not - var reference = Double(0.0) + var reference = 0.0 if let data = _data , data.entryCount >= 2 { @@ -290,7 +269,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate if _defaultValueFormatter is DefaultValueFormatter { // setup the formatter with a new number of digits - let digits = ChartUtils.decimals(reference) + let digits = reference.decimalPlaces (_defaultValueFormatter as? DefaultValueFormatter)?.decimals = digits @@ -304,7 +283,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate let frame = self.bounds - if _data === nil && noDataText.count > 0 + if _data === nil && !noDataText.isEmpty { context.saveGState() defer { context.restoreGState() } @@ -314,8 +293,8 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate text: noDataText, point: CGPoint(x: frame.width / 2.0, y: frame.height / 2.0), attributes: - [NSAttributedStringKey.font: noDataFont, - NSAttributedStringKey.foregroundColor: noDataTextColor], + [.font: noDataFont, + .foregroundColor: noDataTextColor], constrainedToSize: self.bounds.size, anchor: CGPoint(x: 0.5, y: 0.5), angleRadians: 0.0) @@ -333,9 +312,10 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// Draws the description text in the bottom right corner of the chart (per default) internal func drawDescription(context: CGContext) { + let description = chartDescription + // check if description should be drawn guard - let description = chartDescription, description.isEnabled, let descriptionText = description.text, descriptionText.count > 0 @@ -344,10 +324,10 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate let position = description.position ?? CGPoint(x: bounds.width - _viewPortHandler.offsetRight - description.xOffset, y: bounds.height - _viewPortHandler.offsetBottom - description.yOffset - description.font.lineHeight) - var attrs = [NSAttributedStringKey : Any]() - - attrs[NSAttributedStringKey.font] = description.font - attrs[NSAttributedStringKey.foregroundColor] = description.textColor + let attrs: [NSAttributedStringKey : Any] = [ + .font: description.font, + .foregroundColor: description.textColor + ] ChartUtils.drawText( context: context, @@ -394,16 +374,9 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate @objc open func highlightValues(_ highs: [Highlight]?) { // set the indices to highlight - _indicesToHighlight = highs ?? [Highlight]() - - if _indicesToHighlight.isEmpty - { - self.lastHighlighted = nil - } - else - { - self.lastHighlighted = _indicesToHighlight[0] - } + _indicesToHighlight = highs ?? [] + + lastHighlighted = _indicesToHighlight.first // redraw the chart setNeedsDisplay() @@ -475,41 +448,30 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// Highlights the value selected by touch gesture. @objc open func highlightValue(_ highlight: Highlight?, callDelegate: Bool) { - var entry: ChartDataEntry? - var h = highlight - - if h == nil - { - _indicesToHighlight.removeAll(keepingCapacity: false) - } - else - { - // set the indices to highlight - entry = _data?.entryForHighlight(h!) - if entry == nil - { - h = nil + var high = highlight + guard + let h = high, + let entry = _data?.entryForHighlight(h) + else { + // If no highlight or entry, remove all highleted entries and notifgy delegate. + high = nil _indicesToHighlight.removeAll(keepingCapacity: false) - } - else - { - _indicesToHighlight = [h!] - } + if callDelegate + { + delegate?.chartValueNothingSelected?(self) + } + return } - - if callDelegate, let delegate = delegate + + // set the indices to highlight + _indicesToHighlight = [h] + + if callDelegate { - if let h = h - { - // notify the listener - delegate.chartValueSelected?(self, entry: entry!, highlight: h) - } - else - { - delegate.chartValueNothingSelected?(self) - } + // notify the listener + delegate?.chartValueSelected?(self, entry: entry, highlight: h) } - + // redraw the chart setNeedsDisplay() } @@ -519,7 +481,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// CandleStick-Chart. @objc open func getHighlightByTouchPoint(_ pt: CGPoint) -> Highlight? { - if _data === nil + guard _data != nil else { Swift.print("Can't select by touch. No data set.") return nil @@ -538,33 +500,25 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate { // if there is no marker view or drawing marker is disabled guard - let marker = marker - , isDrawMarkersEnabled && - valuesToHighlight() + let marker = marker, + isDrawMarkersEnabled, + valuesToHighlight() else { return } - for i in 0 ..< _indicesToHighlight.count + for highlight in _indicesToHighlight { - let highlight = _indicesToHighlight[i] - - guard let - set = data?.getDataSetByIndex(highlight.dataSetIndex), + guard + let set = data?.getDataSetByIndex(highlight.dataSetIndex), let e = _data?.entryForHighlight(highlight) else { continue } let entryIndex = set.entryIndex(entry: e) - if entryIndex > Int(Double(set.entryCount) * _animator.phaseX) - { - continue - } + guard entryIndex <= Int(Double(set.entryCount) * _animator.phaseX) else { continue } let pos = getMarkerPosition(highlight: highlight) // check bounds - if !_viewPortHandler.isInBounds(x: pos.x, y: pos.y) - { - continue - } + guard _viewPortHandler.isInBounds(x: pos.x, y: pos.y) else { continue } // callbacks to update the content marker.refreshContent(entry: e, highlight: highlight) @@ -707,17 +661,17 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate open var chartXMax: Double { - return _xAxis._axisMaximum + return xAxis._axisMaximum } open var chartXMin: Double { - return _xAxis._axisMinimum + return xAxis._axisMinimum } open var xRange: Double { - return _xAxis.axisRange + return xAxis.axisRange } /// * @@ -841,8 +795,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate { let bounds = self.bounds - if (_viewPortHandler !== nil && - (bounds.size.width != _viewPortHandler.chartWidth || + if ((bounds.size.width != _viewPortHandler.chartWidth || bounds.size.height != _viewPortHandler.chartHeight)) { _viewPortHandler.setChartDimens(width: bounds.size.width, height: bounds.size.height) @@ -889,7 +842,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// **default**: true /// - returns: `true` if chart continues to scroll after touch up, `false` ifnot. @objc open var isDragDecelerationEnabled: Bool - { + { return dragDecelerationEnabled } @@ -905,17 +858,12 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate } set { - var val = newValue - if val < 0.0 - { - val = 0.0 - } - if val >= 1.0 + switch newValue { - val = 0.999 + case ..<0.0: _dragDecelerationFrictionCoef = 0 + case 1.0...: _dragDecelerationFrictionCoef = 0.999 + default: _dragDecelerationFrictionCoef = newValue } - - _dragDecelerationFrictionCoef = val } } @@ -926,7 +874,7 @@ open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate /// the number of maximum visible drawn values on the chart only active when `drawValuesEnabled` is enabled open var maxVisibleCount: Int { - return Int(INT_MAX) + return .max } // MARK: - AnimatorDelegate diff --git a/Source/Charts/Charts/CombinedChartView.swift b/Source/Charts/Charts/CombinedChartView.swift index ead6c3d130..a6a2500ac9 100644 --- a/Source/Charts/Charts/CombinedChartView.swift +++ b/Source/Charts/Charts/CombinedChartView.swift @@ -16,7 +16,7 @@ import CoreGraphics open class CombinedChartView: BarLineChartViewBase, CombinedChartDataProvider { /// the fill-formatter used for determining the position of the fill-line - internal var _fillFormatter: IFillFormatter! + internal var _fillFormatter: FillFormatter! /// enum that allows to specify the order in which the different data objects for the combined-chart are drawn @objc(CombinedChartDrawOrder) @@ -40,7 +40,7 @@ open class CombinedChartView: BarLineChartViewBase, CombinedChartDataProvider _fillFormatter = DefaultFillFormatter() - renderer = CombinedChartRenderer(chart: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = CombinedChartRenderer(chart: self, animator: _animator, viewPortHandler: viewPortHandler) } open override var data: ChartData? @@ -60,7 +60,7 @@ open class CombinedChartView: BarLineChartViewBase, CombinedChartDataProvider } } - @objc open var fillFormatter: IFillFormatter + @objc open var fillFormatter: FillFormatter { get { @@ -231,7 +231,7 @@ open class CombinedChartView: BarLineChartViewBase, CombinedChartDataProvider let pos = getMarkerPosition(highlight: highlight) // check bounds - if !_viewPortHandler.isInBounds(x: pos.x, y: pos.y) + if !viewPortHandler.isInBounds(x: pos.x, y: pos.y) { continue } diff --git a/Source/Charts/Charts/HorizontalBarChartView.swift b/Source/Charts/Charts/HorizontalBarChartView.swift index 06863ee619..11e4a66937 100644 --- a/Source/Charts/Charts/HorizontalBarChartView.swift +++ b/Source/Charts/Charts/HorizontalBarChartView.swift @@ -23,14 +23,14 @@ open class HorizontalBarChartView: BarChartView { super.initialize() - _leftAxisTransformer = TransformerHorizontalBarChart(viewPortHandler: _viewPortHandler) - _rightAxisTransformer = TransformerHorizontalBarChart(viewPortHandler: _viewPortHandler) - - renderer = HorizontalBarChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) - _leftYAxisRenderer = YAxisRendererHorizontalBarChart(viewPortHandler: _viewPortHandler, yAxis: _leftAxis, transformer: _leftAxisTransformer) - _rightYAxisRenderer = YAxisRendererHorizontalBarChart(viewPortHandler: _viewPortHandler, yAxis: _rightAxis, transformer: _rightAxisTransformer) - _xAxisRenderer = XAxisRendererHorizontalBarChart(viewPortHandler: _viewPortHandler, xAxis: _xAxis, transformer: _leftAxisTransformer, chart: self) + _leftAxisTransformer = TransformerHorizontalBarChart(viewPortHandler: viewPortHandler) + _rightAxisTransformer = TransformerHorizontalBarChart(viewPortHandler: viewPortHandler) + renderer = HorizontalBarChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) + leftYAxisRenderer = YAxisRendererHorizontalBarChart(viewPortHandler: viewPortHandler, axis: leftAxis, transformer: _leftAxisTransformer) + rightYAxisRenderer = YAxisRendererHorizontalBarChart(viewPortHandler: viewPortHandler, axis: rightAxis, transformer: _rightAxisTransformer) + xAxisRenderer = XAxisRendererHorizontalBarChart(viewPortHandler: viewPortHandler, axis: xAxis, transformer: _leftAxisTransformer, chart: self) + self.highlighter = HorizontalBarHighlighter(chart: self) } @@ -47,30 +47,30 @@ open class HorizontalBarChartView: BarChartView offsetBottom: &offsetBottom) // offsets for y-labels - if _leftAxis.needsOffset + if leftAxis.needsOffset { - offsetTop += _leftAxis.getRequiredHeightSpace() + offsetTop += leftAxis.getRequiredHeightSpace() } - if _rightAxis.needsOffset + if rightAxis.needsOffset { - offsetBottom += _rightAxis.getRequiredHeightSpace() + offsetBottom += rightAxis.getRequiredHeightSpace() } - let xlabelwidth = _xAxis.labelRotatedWidth + let xlabelwidth = xAxis.labelRotatedWidth - if _xAxis.isEnabled + if xAxis.isEnabled { // offsets for x-labels - if _xAxis.labelPosition == .bottom + if xAxis.labelPosition == .bottom { offsetLeft += xlabelwidth } - else if _xAxis.labelPosition == .top + else if xAxis.labelPosition == .top { offsetRight += xlabelwidth } - else if _xAxis.labelPosition == .bothSided + else if xAxis.labelPosition == .bothSided { offsetLeft += xlabelwidth offsetRight += xlabelwidth @@ -82,7 +82,7 @@ open class HorizontalBarChartView: BarChartView offsetBottom += self.extraBottomOffset offsetLeft += self.extraLeftOffset - _viewPortHandler.restrainViewPort( + viewPortHandler.restrainViewPort( offsetLeft: max(self.minOffset, offsetLeft), offsetTop: max(self.minOffset, offsetTop), offsetRight: max(self.minOffset, offsetRight), @@ -94,8 +94,8 @@ open class HorizontalBarChartView: BarChartView internal override func prepareValuePxMatrix() { - _rightAxisTransformer.prepareMatrixValuePx(chartXMin: _rightAxis._axisMinimum, deltaX: CGFloat(_rightAxis.axisRange), deltaY: CGFloat(_xAxis.axisRange), chartYMin: _xAxis._axisMinimum) - _leftAxisTransformer.prepareMatrixValuePx(chartXMin: _leftAxis._axisMinimum, deltaX: CGFloat(_leftAxis.axisRange), deltaY: CGFloat(_xAxis.axisRange), chartYMin: _xAxis._axisMinimum) + _rightAxisTransformer.prepareMatrixValuePx(chartXMin: rightAxis._axisMinimum, deltaX: CGFloat(rightAxis.axisRange), deltaY: CGFloat(xAxis.axisRange), chartYMin: xAxis._axisMinimum) + _leftAxisTransformer.prepareMatrixValuePx(chartXMin: leftAxis._axisMinimum, deltaX: CGFloat(leftAxis.axisRange), deltaY: CGFloat(xAxis.axisRange), chartYMin: xAxis._axisMinimum) } open override func getMarkerPosition(highlight: Highlight) -> CGPoint @@ -107,7 +107,7 @@ open class HorizontalBarChartView: BarChartView { guard let data = _data as? BarChartData, - let set = data.getDataSetForEntry(e) as? IBarChartDataSet + let set = data.getDataSetForEntry(e) as? BarChartDataSetProtocol else { return CGRect.null } let y = e.y diff --git a/Source/Charts/Charts/LineChartView.swift b/Source/Charts/Charts/LineChartView.swift index c5fbecfacf..12f2463337 100644 --- a/Source/Charts/Charts/LineChartView.swift +++ b/Source/Charts/Charts/LineChartView.swift @@ -19,7 +19,7 @@ open class LineChartView: BarLineChartViewBase, LineChartDataProvider { super.initialize() - renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) } // MARK: - LineChartDataProvider diff --git a/Source/Charts/Charts/PieChartView.swift b/Source/Charts/Charts/PieChartView.swift index e0b2d699a0..c44e7e5173 100644 --- a/Source/Charts/Charts/PieChartView.swift +++ b/Source/Charts/Charts/PieChartView.swift @@ -86,9 +86,8 @@ open class PieChartView: PieRadarChartViewBase { super.initialize() - renderer = PieChartRenderer(chart: self, animator: _animator, viewPortHandler: _viewPortHandler) - _xAxis = nil - + renderer = PieChartRenderer(chart: self, animator: _animator, viewPortHandler: viewPortHandler) + self.highlighter = PieHighlighter(chart: self) } @@ -261,7 +260,8 @@ open class PieChartView: PieRadarChartViewBase /// This will throw an exception, PieChart has no XAxis object. open override var xAxis: XAxis { - fatalError("PieChart has no XAxis") + get { fatalError("PieChart has no XAxis") } + set { fatalError("PieChart has no XAxis") } } open override func indexForAngle(_ angle: CGFloat) -> Int diff --git a/Source/Charts/Charts/PieRadarChartViewBase.swift b/Source/Charts/Charts/PieRadarChartViewBase.swift old mode 100755 new mode 100644 index 5d6f22fac8..889e8ef7c7 --- a/Source/Charts/Charts/PieRadarChartViewBase.swift +++ b/Source/Charts/Charts/PieRadarChartViewBase.swift @@ -86,7 +86,7 @@ open class PieRadarChartViewBase: ChartViewBase { calcMinMax() - if let data = _data , _legend !== nil + if let data = _data { _legendRenderer.computeLegend(data: data) } @@ -103,9 +103,9 @@ open class PieRadarChartViewBase: ChartViewBase var legendBottom = CGFloat(0.0) var legendTop = CGFloat(0.0) - if _legend != nil && _legend.enabled && !_legend.drawInside + if _legend.enabled && !_legend.drawInside { - let fullLegendWidth = min(_legend.neededWidth, _viewPortHandler.chartWidth * _legend.maxSizePercent) + let fullLegendWidth = min(_legend.neededWidth, viewPortHandler.chartWidth * _legend.maxSizePercent) switch _legend.orientation { @@ -171,10 +171,10 @@ open class PieRadarChartViewBase: ChartViewBase switch _legend.verticalAlignment { case .top: - legendTop = min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + legendTop = min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) case .bottom: - legendBottom = min(_legend.neededHeight, _viewPortHandler.chartHeight * _legend.maxSizePercent) + legendBottom = min(_legend.neededHeight, viewPortHandler.chartHeight * _legend.maxSizePercent) default: break @@ -195,7 +195,7 @@ open class PieRadarChartViewBase: ChartViewBase yLegendOffset = min( _legend.neededHeight + yOffset, - _viewPortHandler.chartHeight * _legend.maxSizePercent) + viewPortHandler.chartHeight * _legend.maxSizePercent) } switch _legend.verticalAlignment @@ -241,7 +241,7 @@ open class PieRadarChartViewBase: ChartViewBase let offsetRight = max(minOffset, legendRight) let offsetBottom = max(minOffset, max(self.requiredBaseOffset, legendBottom)) - _viewPortHandler.restrainViewPort(offsetLeft: offsetLeft, offsetTop: offsetTop, offsetRight: offsetRight, offsetBottom: offsetBottom) + viewPortHandler.restrainViewPort(offsetLeft: offsetLeft, offsetTop: offsetTop, offsetRight: offsetRight, offsetBottom: offsetBottom) } /// - returns: The angle relative to the chart center for the given point on the chart in degrees. @@ -351,7 +351,7 @@ open class PieRadarChartViewBase: ChartViewBase /// - returns: The diameter of the pie- or radar-chart @objc open var diameter: CGFloat { - var content = _viewPortHandler.contentRect + var content = viewPortHandler.contentRect content.origin.x += extraLeftOffset content.origin.y += extraTopOffset content.size.width -= extraLeftOffset + extraRightOffset diff --git a/Source/Charts/Charts/RadarChartView.swift b/Source/Charts/Charts/RadarChartView.swift index 2b89fbae69..c7eaea58c3 100644 --- a/Source/Charts/Charts/RadarChartView.swift +++ b/Source/Charts/Charts/RadarChartView.swift @@ -60,11 +60,11 @@ open class RadarChartView: PieRadarChartViewBase _yAxis = YAxis(position: .left) - renderer = RadarChartRenderer(chart: self, animator: _animator, viewPortHandler: _viewPortHandler) - - _yAxisRenderer = YAxisRendererRadarChart(viewPortHandler: _viewPortHandler, yAxis: _yAxis, chart: self) - _xAxisRenderer = XAxisRendererRadarChart(viewPortHandler: _viewPortHandler, xAxis: _xAxis, chart: self) + renderer = RadarChartRenderer(chart: self, animator: _animator, viewPortHandler: viewPortHandler) + _yAxisRenderer = YAxisRendererRadarChart(viewPortHandler: viewPortHandler, axis: _yAxis, chart: self) + _xAxisRenderer = XAxisRendererRadarChart(viewPortHandler: viewPortHandler, axis: xAxis, chart: self) + self.highlighter = RadarHighlighter(chart: self) } @@ -75,7 +75,7 @@ open class RadarChartView: PieRadarChartViewBase guard let data = _data else { return } _yAxis.calculate(min: data.getYMin(axis: .left), max: data.getYMax(axis: .left)) - _xAxis.calculate(min: 0.0, max: Double(data.maxEntryCountSet?.entryCount ?? 0)) + xAxis.calculate(min: 0.0, max: Double(data.maxEntryCountSet?.entryCount ?? 0)) } open override func notifyDataSetChanged() @@ -83,13 +83,12 @@ open class RadarChartView: PieRadarChartViewBase calcMinMax() _yAxisRenderer?.computeAxis(min: _yAxis._axisMinimum, max: _yAxis._axisMaximum, inverted: _yAxis.isInverted) - _xAxisRenderer?.computeAxis(min: _xAxis._axisMinimum, max: _xAxis._axisMaximum, inverted: false) + _xAxisRenderer?.computeAxis(min: xAxis._axisMinimum, max: xAxis._axisMaximum, inverted: false) if let data = _data, - let legend = _legend, - !legend.isLegendCustom + !_legend.isLegendCustom { - _legendRenderer?.computeLegend(data: data) + _legendRenderer.computeLegend(data: data) } calculateOffsets() @@ -106,9 +105,9 @@ open class RadarChartView: PieRadarChartViewBase let optionalContext = NSUIGraphicsGetCurrentContext() guard let context = optionalContext else { return } - if _xAxis.isEnabled + if xAxis.isEnabled { - _xAxisRenderer.computeAxis(min: _xAxis._axisMinimum, max: _xAxis._axisMaximum, inverted: false) + _xAxisRenderer.computeAxis(min: xAxis._axisMinimum, max: xAxis._axisMaximum, inverted: false) } _xAxisRenderer?.renderAxisLabels(context: context) @@ -149,7 +148,7 @@ open class RadarChartView: PieRadarChartViewBase /// - returns: The factor that is needed to transform values into pixels. @objc open var factor: CGFloat { - let content = _viewPortHandler.contentRect + let content = viewPortHandler.contentRect return min(content.width / 2.0, content.height / 2.0) / CGFloat(_yAxis.axisRange) } @@ -212,12 +211,12 @@ open class RadarChartView: PieRadarChartViewBase internal override var requiredBaseOffset: CGFloat { - return _xAxis.isEnabled && _xAxis.isDrawLabelsEnabled ? _xAxis.labelRotatedWidth : 10.0 + return xAxis.isEnabled && xAxis.isDrawLabelsEnabled ? xAxis.labelRotatedWidth : 10.0 } open override var radius: CGFloat { - let content = _viewPortHandler.contentRect + let content = viewPortHandler.contentRect return min(content.width / 2.0, content.height / 2.0) } diff --git a/Source/Charts/Charts/ScatterChartView.swift b/Source/Charts/Charts/ScatterChartView.swift index 22c710ad83..55d13a7118 100644 --- a/Source/Charts/Charts/ScatterChartView.swift +++ b/Source/Charts/Charts/ScatterChartView.swift @@ -19,7 +19,7 @@ open class ScatterChartView: BarLineChartViewBase, ScatterChartDataProvider { super.initialize() - renderer = ScatterChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) + renderer = ScatterChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: viewPortHandler) xAxis.spaceMin = 0.5 xAxis.spaceMax = 0.5 diff --git a/Source/Charts/Components/AxisBase.swift b/Source/Charts/Components/AxisBase.swift index 8753d948fd..b97da1e03b 100644 --- a/Source/Charts/Components/AxisBase.swift +++ b/Source/Charts/Components/AxisBase.swift @@ -22,7 +22,7 @@ open class AxisBase: ComponentBase } /// Custom formatter that is used instead of the auto-formatter if set - private var _axisValueFormatter: IAxisValueFormatter? + private var _axisValueFormatter: AxisValueFormatter? @objc open var labelFont = NSUIFont.systemFont(ofSize: 10.0) @objc open var labelTextColor = NSUIColor.black @@ -157,7 +157,7 @@ open class AxisBase: ComponentBase /// Sets the formatter to be used for formatting the axis labels. /// If no formatter is set, the chart will automatically determine a reasonable formatting (concerning decimals) for all the values that are drawn inside the chart. /// Use `nil` to use the formatter calculated by the chart. - @objc open var valueFormatter: IAxisValueFormatter? + @objc open var valueFormatter: AxisValueFormatter? { get { diff --git a/Source/Charts/Components/IMarker.swift b/Source/Charts/Components/Marker.swift similarity index 75% rename from Source/Charts/Components/IMarker.swift rename to Source/Charts/Components/Marker.swift index 59abfad7bb..834b66eeb5 100644 --- a/Source/Charts/Components/IMarker.swift +++ b/Source/Charts/Components/Marker.swift @@ -12,8 +12,8 @@ import Foundation import CoreGraphics -@objc(IChartMarker) -public protocol IMarker: class +@objc(ChartMarker) +public protocol Marker: class { /// - returns: The desired (general) offset you wish the IMarker to have on the x-axis. /// @@ -29,12 +29,12 @@ public protocol IMarker: class /// - parameter point: This is the point at which the marker wants to be drawn. You can adjust the offset conditionally based on this argument. func offsetForDrawing(atPoint: CGPoint) -> CGPoint - /// This method enables a custom IMarker to update it's content every time the IMarker is redrawn according to the data entry it points to. + /// This method enables a custom Marker to update it's content every time the Marker is redrawn according to the data entry it points to. /// - /// - parameter entry: The Entry the IMarker belongs to. This can also be any subclass of Entry, like BarEntry or CandleEntry, simply cast it at runtime. + /// - parameter entry: The Entry the Marker belongs to. This can also be any subclass of Entry, like BarEntry or CandleEntry, simply cast it at runtime. /// - 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). func refreshContent(entry: ChartDataEntry, highlight: Highlight) - /// Draws the IMarker on the given position on the given context + /// Draws the Marker on the given position on the given context func draw(context: CGContext, point: CGPoint) } diff --git a/Source/Charts/Components/MarkerImage.swift b/Source/Charts/Components/MarkerImage.swift index 14e4dcfc86..0503112d67 100644 --- a/Source/Charts/Components/MarkerImage.swift +++ b/Source/Charts/Components/MarkerImage.swift @@ -17,7 +17,7 @@ import CoreGraphics #endif @objc(ChartMarkerImage) -open class MarkerImage: NSObject, IMarker +open class MarkerImage: NSObject, Marker { /// The marker image to render @objc open var image: NSUIImage? diff --git a/Source/Charts/Components/MarkerView.swift b/Source/Charts/Components/MarkerView.swift index a051ff9968..2e380381be 100644 --- a/Source/Charts/Components/MarkerView.swift +++ b/Source/Charts/Components/MarkerView.swift @@ -17,7 +17,7 @@ import CoreGraphics #endif @objc(ChartMarkerView) -open class MarkerView: NSUIView, IMarker +open class MarkerView: NSUIView, Marker { open var offset: CGPoint = CGPoint() diff --git a/Source/Charts/Data/Implementations/ChartBaseDataSet.swift b/Source/Charts/Data/Implementations/ChartBaseDataSet.swift index 7136f2f04b..5e59660d21 100644 --- a/Source/Charts/Data/Implementations/ChartBaseDataSet.swift +++ b/Source/Charts/Data/Implementations/ChartBaseDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class ChartBaseDataSet: NSObject, IChartDataSet +open class ChartBaseDataSet: NSObject, ChartDataSetProtocol { public required override init() { @@ -270,10 +270,10 @@ open class ChartBaseDataSet: NSObject, IChartDataSet open var isHighlightEnabled: Bool { return highlightEnabled } /// Custom formatter that is used instead of the auto-formatter if set - internal var _valueFormatter: IValueFormatter? + internal var _valueFormatter: ValueFormatter? /// Custom formatter that is used instead of the auto-formatter if set - open var valueFormatter: IValueFormatter? + open var valueFormatter: ValueFormatter? { get { diff --git a/Source/Charts/Data/Implementations/Standard/BarChartData.swift b/Source/Charts/Data/Implementations/Standard/BarChartData.swift index 0317fc8a6b..df85bbafc1 100644 --- a/Source/Charts/Data/Implementations/Standard/BarChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/BarChartData.swift @@ -19,7 +19,7 @@ open class BarChartData: BarLineScatterCandleBubbleChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } @@ -61,7 +61,7 @@ open class BarChartData: BarLineScatterCandleBubbleChartData let start = fromX fromX += groupSpaceWidthHalf - (_dataSets as? [IBarChartDataSet])?.forEach { set in + (_dataSets as! [BarChartDataSetProtocol]).forEach { set in fromX += barSpaceHalf fromX += barWidthHalf diff --git a/Source/Charts/Data/Implementations/Standard/BarChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/BarChartDataSet.swift index 27ed7a5722..6f88bf95cb 100644 --- a/Source/Charts/Data/Implementations/Standard/BarChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/BarChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class BarChartDataSet: BarLineScatterCandleBubbleChartDataSet, IBarChartDataSet +open class BarChartDataSet: BarLineScatterCandleBubbleChartDataSet, BarChartDataSetProtocol { private func initialize() { diff --git a/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift b/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift index c98bb1d075..0325328f84 100644 --- a/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift @@ -18,7 +18,7 @@ open class BarLineScatterCandleBubbleChartData: ChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } diff --git a/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift index 02b942f479..276a93155d 100644 --- a/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class BarLineScatterCandleBubbleChartDataSet: ChartDataSet, IBarLineScatterCandleBubbleChartDataSet +open class BarLineScatterCandleBubbleChartDataSet: ChartDataSet, BarLineScatterCandleBubbleChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift b/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift index 433f384f75..f514340881 100644 --- a/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift @@ -19,7 +19,7 @@ open class BubbleChartData: BarLineScatterCandleBubbleChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } @@ -27,6 +27,6 @@ open class BubbleChartData: BarLineScatterCandleBubbleChartData /// Sets the width of the circle that surrounds the bubble when highlighted for all DataSet objects this data object contains @objc open func setHighlightCircleWidth(_ width: CGFloat) { - (_dataSets as? [IBubbleChartDataSet])?.forEach { $0.highlightCircleWidth = width } + (_dataSets as? [BubbleChartDataSetProtocol])?.forEach { $0.highlightCircleWidth = width } } } diff --git a/Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift index cdc3567e69..d93eef6645 100644 --- a/Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class BubbleChartDataSet: BarLineScatterCandleBubbleChartDataSet, IBubbleChartDataSet +open class BubbleChartDataSet: BarLineScatterCandleBubbleChartDataSet, BubbleChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Implementations/Standard/CandleChartData.swift b/Source/Charts/Data/Implementations/Standard/CandleChartData.swift index 5158668ad9..5501ebc98b 100644 --- a/Source/Charts/Data/Implementations/Standard/CandleChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/CandleChartData.swift @@ -18,7 +18,7 @@ open class CandleChartData: BarLineScatterCandleBubbleChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } diff --git a/Source/Charts/Data/Implementations/Standard/CandleChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/CandleChartDataSet.swift index 852e65d385..c04a5edceb 100644 --- a/Source/Charts/Data/Implementations/Standard/CandleChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/CandleChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class CandleChartDataSet: LineScatterCandleRadarChartDataSet, ICandleChartDataSet +open class CandleChartDataSet: LineScatterCandleRadarChartDataSet, CandleChartDataSetProtocol { public required init() diff --git a/Source/Charts/Data/Implementations/Standard/ChartData.swift b/Source/Charts/Data/Implementations/Standard/ChartData.swift index 3b9851a43c..bb1bd869a3 100644 --- a/Source/Charts/Data/Implementations/Standard/ChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/ChartData.swift @@ -22,30 +22,30 @@ open class ChartData: NSObject internal var _rightAxisMax: Double = -Double.greatestFiniteMagnitude internal var _rightAxisMin: Double = Double.greatestFiniteMagnitude - internal var _dataSets = [IChartDataSet]() + internal var _dataSets = [ChartDataSetProtocol]() public override init() { super.init() - _dataSets = [IChartDataSet]() + _dataSets = [ChartDataSetProtocol]() } - @objc public init(dataSets: [IChartDataSet]?) + @objc public init(dataSets: [ChartDataSetProtocol]?) { super.init() - _dataSets = dataSets ?? [IChartDataSet]() + _dataSets = dataSets ?? [ChartDataSetProtocol]() self.initialize(dataSets: _dataSets) } - @objc public convenience init(dataSet: IChartDataSet?) + @objc public convenience init(dataSet: ChartDataSetProtocol?) { self.init(dataSets: dataSet === nil ? nil : [dataSet!]) } - internal func initialize(dataSets: [IChartDataSet]) + internal func initialize(dataSets: [ChartDataSetProtocol]) { notifyDataChanged() } @@ -187,7 +187,7 @@ open class ChartData: NSObject } /// Adjusts the minimum and maximum values based on the given DataSet. - @objc open func calcMinMax(dataSet d: IChartDataSet) + @objc open func calcMinMax(dataSet d: ChartDataSetProtocol) { if _yMax < d.yMax { @@ -329,7 +329,7 @@ open class ChartData: NSObject } /// - returns: All DataSet objects this ChartData object holds. - @objc open var dataSets: [IChartDataSet] + @objc open var dataSets: [ChartDataSetProtocol] { get { @@ -419,7 +419,7 @@ open class ChartData: NSObject /// - parameter label: /// - parameter ignorecase: /// - returns: The DataSet Object with the given label. Sensitive or not. - @objc open func getDataSetByLabel(_ label: String, ignorecase: Bool) -> IChartDataSet? + @objc open func getDataSetByLabel(_ label: String, ignorecase: Bool) -> ChartDataSetProtocol? { let index = getDataSetIndexByLabel(label, ignorecase: ignorecase) @@ -433,7 +433,7 @@ open class ChartData: NSObject } } - @objc open func getDataSetByIndex(_ index: Int) -> IChartDataSet! + @objc open func getDataSetByIndex(_ index: Int) -> ChartDataSetProtocol! { if index < 0 || index >= _dataSets.count { @@ -443,7 +443,7 @@ open class ChartData: NSObject return _dataSets[index] } - @objc open func addDataSet(_ dataSet: IChartDataSet!) + @objc open func addDataSet(_ dataSet: ChartDataSetProtocol!) { calcMinMax(dataSet: dataSet) @@ -454,7 +454,7 @@ open class ChartData: NSObject /// Also recalculates all minimum and maximum values. /// /// - returns: `true` if a DataSet was removed, `false` ifno DataSet could be removed. - @objc @discardableResult open func removeDataSet(_ dataSet: IChartDataSet!) -> Bool + @objc @discardableResult open func removeDataSet(_ dataSet: ChartDataSetProtocol!) -> Bool { if dataSet === nil { @@ -546,7 +546,7 @@ open class ChartData: NSObject } /// - returns: The DataSet that contains the provided Entry, or null, if no DataSet contains this entry. - @objc open func getDataSetForEntry(_ e: ChartDataEntry!) -> IChartDataSet? + @objc open func getDataSetForEntry(_ e: ChartDataEntry!) -> ChartDataSetProtocol? { if e == nil { @@ -567,7 +567,7 @@ open class ChartData: NSObject } /// - returns: The index of the provided DataSet in the DataSet array of this data object, or -1 if it does not exist. - @objc open func indexOfDataSet(_ dataSet: IChartDataSet) -> Int + @objc open func indexOfDataSet(_ dataSet: ChartDataSetProtocol) -> Int { for i in 0 ..< _dataSets.count { @@ -581,7 +581,7 @@ open class ChartData: NSObject } /// - returns: The first DataSet from the datasets-array that has it's dependency on the left axis. Returns null if no DataSet with left dependency could be found. - @objc open func getFirstLeft(dataSets: [IChartDataSet]) -> IChartDataSet? + @objc open func getFirstLeft(dataSets: [ChartDataSetProtocol]) -> ChartDataSetProtocol? { for dataSet in dataSets { @@ -595,7 +595,7 @@ open class ChartData: NSObject } /// - returns: The first DataSet from the datasets-array that has it's dependency on the right axis. Returns null if no DataSet with right dependency could be found. - @objc open func getFirstRight(dataSets: [IChartDataSet]) -> IChartDataSet? + @objc open func getFirstRight(dataSets: [ChartDataSetProtocol]) -> ChartDataSetProtocol? { for dataSet in _dataSets { @@ -633,8 +633,8 @@ open class ChartData: NSObject return colors } - /// Sets a custom IValueFormatter for all DataSets this data object contains. - @objc open func setValueFormatter(_ formatter: IValueFormatter?) + /// Sets a custom ValueFormatter for all DataSets this data object contains. + @objc open func setValueFormatter(_ formatter: ValueFormatter?) { guard let formatter = formatter else { return } @@ -710,7 +710,7 @@ open class ChartData: NSObject /// Checks if this data object contains the specified DataSet. /// - returns: `true` if so, `false` ifnot. - @objc open func contains(dataSet: IChartDataSet) -> Bool + @objc open func contains(dataSet: ChartDataSetProtocol) -> Bool { for set in dataSets { @@ -737,7 +737,7 @@ open class ChartData: NSObject } /// - returns: The DataSet object with the maximum number of entries or null if there are no DataSets. - @objc open var maxEntryCountSet: IChartDataSet? + @objc open var maxEntryCountSet: ChartDataSetProtocol? { if _dataSets.count == 0 { diff --git a/Source/Charts/Data/Implementations/Standard/CombinedChartData.swift b/Source/Charts/Data/Implementations/Standard/CombinedChartData.swift index 9e2342a200..59e1f2327b 100644 --- a/Source/Charts/Data/Implementations/Standard/CombinedChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/CombinedChartData.swift @@ -24,7 +24,7 @@ open class CombinedChartData: BarLineScatterCandleBubbleChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } @@ -136,25 +136,31 @@ open class CombinedChartData: BarLineScatterCandleBubbleChartData { _xMin = data.xMin } - - if data.yMax > _leftAxisMax - { - _leftAxisMax = data.yMax - } - - if data.yMin < _leftAxisMin - { - _leftAxisMin = data.yMin - } - - if data.yMax > _rightAxisMax - { - _rightAxisMax = data.yMax - } - - if data.yMin < _rightAxisMin + + for dataset in sets { - _rightAxisMin = data.yMin + if dataset.axisDependency == .left + { + if dataset.yMax > _leftAxisMax + { + _leftAxisMax = dataset.yMax + } + if dataset.yMin < _leftAxisMin + { + _leftAxisMin = dataset.yMin + } + } + else + { + if dataset.yMax > _rightAxisMax + { + _rightAxisMax = dataset.yMax + } + if dataset.yMin < _rightAxisMin + { + _rightAxisMin = dataset.yMin + } + } } } } @@ -198,7 +204,7 @@ open class CombinedChartData: BarLineScatterCandleBubbleChartData return allData.index(of: data) } - open override func removeDataSet(_ dataSet: IChartDataSet!) -> Bool + open override func removeDataSet(_ dataSet: ChartDataSetProtocol!) -> Bool { let datas = allData @@ -295,7 +301,7 @@ open class CombinedChartData: BarLineScatterCandleBubbleChartData /// /// - Parameter highlight: current highlight /// - Returns: dataset related to highlight - @objc open func getDataSetByHighlight(_ highlight: Highlight) -> IChartDataSet! + @objc open func getDataSetByHighlight(_ highlight: Highlight) -> ChartDataSetProtocol! { if highlight.dataIndex >= allData.count { diff --git a/Source/Charts/Data/Implementations/Standard/LineChartData.swift b/Source/Charts/Data/Implementations/Standard/LineChartData.swift index 2ebd6b42a9..cc19888cc0 100644 --- a/Source/Charts/Data/Implementations/Standard/LineChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/LineChartData.swift @@ -19,7 +19,7 @@ open class LineChartData: ChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } diff --git a/Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift index c41dd6ac2f..8c6f50b367 100644 --- a/Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class LineChartDataSet: LineRadarChartDataSet, ILineChartDataSet +open class LineChartDataSet: LineRadarChartDataSet, LineChartDataSetProtocol { @objc(LineChartMode) public enum Mode: Int @@ -144,10 +144,10 @@ open class LineChartDataSet: LineRadarChartDataSet, ILineChartDataSet open var lineCapType = CGLineCap.butt /// formatter for customizing the position of the fill-line - private var _fillFormatter: IFillFormatter = DefaultFillFormatter() + private var _fillFormatter: FillFormatter = DefaultFillFormatter() - /// Sets a custom IFillFormatter to the chart that handles the position of the filled-line for each DataSet. Set this to null to use the default logic. - open var fillFormatter: IFillFormatter? + /// Sets a custom FillFormatterProtocol to the chart that handles the position of the filled-line for each DataSet. Set this to null to use the default logic. + open var fillFormatter: FillFormatter? { get { diff --git a/Source/Charts/Data/Implementations/Standard/LineRadarChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/LineRadarChartDataSet.swift index be934257f1..f254ea6514 100644 --- a/Source/Charts/Data/Implementations/Standard/LineRadarChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/LineRadarChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class LineRadarChartDataSet: LineScatterCandleRadarChartDataSet, ILineRadarChartDataSet +open class LineRadarChartDataSet: LineScatterCandleRadarChartDataSet, LineRadarChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift index b21868ab08..ccd99d2743 100644 --- a/Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift @@ -12,7 +12,7 @@ import Foundation -open class LineScatterCandleRadarChartDataSet: BarLineScatterCandleBubbleChartDataSet, ILineScatterCandleRadarChartDataSet +open class LineScatterCandleRadarChartDataSet: BarLineScatterCandleBubbleChartDataSet, LineScatterCandleRadarChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Implementations/Standard/PieChartData.swift b/Source/Charts/Data/Implementations/Standard/PieChartData.swift index f2dc35a948..e5bd22f23c 100644 --- a/Source/Charts/Data/Implementations/Standard/PieChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/PieChartData.swift @@ -18,16 +18,16 @@ open class PieChartData: ChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } - @objc var dataSet: IPieChartDataSet? + @objc var dataSet: PieChartDataSetProtocol? { get { - return dataSets.count > 0 ? dataSets[0] as? IPieChartDataSet : nil + return dataSets.count > 0 ? dataSets[0] as? PieChartDataSetProtocol : nil } set { @@ -42,7 +42,7 @@ open class PieChartData: ChartData } } - open override func getDataSetByIndex(_ index: Int) -> IChartDataSet? + open override func getDataSetByIndex(_ index: Int) -> ChartDataSetProtocol? { if index != 0 { @@ -51,7 +51,7 @@ open class PieChartData: ChartData return super.getDataSetByIndex(index) } - open override func getDataSetByLabel(_ label: String, ignorecase: Bool) -> IChartDataSet? + open override func getDataSetByLabel(_ label: String, ignorecase: Bool) -> ChartDataSetProtocol? { if dataSets.count == 0 || dataSets[0].label == nil { @@ -80,7 +80,7 @@ open class PieChartData: ChartData return dataSet?.entryForIndex(Int(highlight.x)) } - open override func addDataSet(_ d: IChartDataSet!) + open override func addDataSet(_ d: ChartDataSetProtocol!) { super.addDataSet(d) } diff --git a/Source/Charts/Data/Implementations/Standard/PieChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/PieChartDataSet.swift index af4aa617d0..ea53d8666f 100644 --- a/Source/Charts/Data/Implementations/Standard/PieChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/PieChartDataSet.swift @@ -12,7 +12,7 @@ import Foundation import CoreGraphics -open class PieChartDataSet: ChartDataSet, IPieChartDataSet +open class PieChartDataSet: ChartDataSet, PieChartDataSetProtocol { @objc(PieChartValuePosition) public enum ValuePosition: Int diff --git a/Source/Charts/Data/Implementations/Standard/RadarChartData.swift b/Source/Charts/Data/Implementations/Standard/RadarChartData.swift index 31fd7d2ba0..30203de084 100644 --- a/Source/Charts/Data/Implementations/Standard/RadarChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/RadarChartData.swift @@ -34,7 +34,7 @@ open class RadarChartData: ChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } diff --git a/Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift index 67b4730a28..b6da45866e 100644 --- a/Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift @@ -13,7 +13,7 @@ import Foundation import CoreGraphics -open class RadarChartDataSet: LineRadarChartDataSet, IRadarChartDataSet +open class RadarChartDataSet: LineRadarChartDataSet, RadarChartDataSetProtocol { private func initialize() { diff --git a/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift b/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift index ff8ccaf93e..4fe5127c34 100644 --- a/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift +++ b/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift @@ -19,7 +19,7 @@ open class ScatterChartData: BarLineScatterCandleBubbleChartData super.init() } - public override init(dataSets: [IChartDataSet]?) + public override init(dataSets: [ChartDataSetProtocol]?) { super.init(dataSets: dataSets) } @@ -31,7 +31,7 @@ open class ScatterChartData: BarLineScatterCandleBubbleChartData for set in _dataSets { - let scatterDataSet = set as? IScatterChartDataSet + let scatterDataSet = set as? ScatterChartDataSetProtocol if scatterDataSet == nil { diff --git a/Source/Charts/Data/Implementations/Standard/ScatterChartDataSet.swift b/Source/Charts/Data/Implementations/Standard/ScatterChartDataSet.swift index 8aee713389..b7d1658349 100644 --- a/Source/Charts/Data/Implementations/Standard/ScatterChartDataSet.swift +++ b/Source/Charts/Data/Implementations/Standard/ScatterChartDataSet.swift @@ -12,7 +12,7 @@ import Foundation import CoreGraphics -open class ScatterChartDataSet: LineScatterCandleRadarChartDataSet, IScatterChartDataSet +open class ScatterChartDataSet: LineScatterCandleRadarChartDataSet, ScatterChartDataSetProtocol { @objc(ScatterShape) @@ -39,7 +39,7 @@ open class ScatterChartDataSet: LineScatterCandleRadarChartDataSet, IScatterChar open var scatterShapeHoleColor: NSUIColor? = nil /// Sets the ScatterShape this DataSet should be drawn with. - /// This will search for an available IShapeRenderer and set this renderer for the DataSet + /// This will search for an available ShapeRenderer and set this renderer for the DataSet @objc open func setScatterShape(_ shape: Shape) { self.shapeRenderer = ScatterChartDataSet.renderer(forShape: shape) @@ -48,9 +48,9 @@ open class ScatterChartDataSet: LineScatterCandleRadarChartDataSet, IScatterChar /// The IShapeRenderer responsible for rendering this DataSet. /// This can also be used to set a custom IShapeRenderer aside from the default ones. /// **default**: `SquareShapeRenderer` - open var shapeRenderer: IShapeRenderer? = SquareShapeRenderer() + open var shapeRenderer: ShapeRenderer? = SquareShapeRenderer() - @objc open class func renderer(forShape shape: Shape) -> IShapeRenderer + @objc open class func renderer(forShape shape: Shape) -> ShapeRenderer { switch shape { diff --git a/Source/Charts/Data/Interfaces/IBarChartDataSet.swift b/Source/Charts/Data/Interfaces/BarChartDataSetProtocol.swift similarity index 91% rename from Source/Charts/Data/Interfaces/IBarChartDataSet.swift rename to Source/Charts/Data/Interfaces/BarChartDataSetProtocol.swift index 6f5cad081c..3e64d24f49 100644 --- a/Source/Charts/Data/Interfaces/IBarChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/BarChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IBarChartDataSet.swift +// BarChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IBarChartDataSet: IBarLineScatterCandleBubbleChartDataSet +public protocol BarChartDataSetProtocol: BarLineScatterCandleBubbleChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift b/Source/Charts/Data/Interfaces/BarLineScatterCandleBubbleChartDataSetProtocol.swift similarity index 79% rename from Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift rename to Source/Charts/Data/Interfaces/BarLineScatterCandleBubbleChartDataSetProtocol.swift index 8af47ff4a7..cbc90147f0 100644 --- a/Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/BarLineScatterCandleBubbleChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IBarLineScatterCandleBubbleChartDataSet.swift +// BarLineScatterCandleBubbleChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IBarLineScatterCandleBubbleChartDataSet: IChartDataSet +public protocol BarLineScatterCandleBubbleChartDataSetProtocol: ChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift b/Source/Charts/Data/Interfaces/BubbleChartDataSetProtocol.swift similarity index 81% rename from Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift rename to Source/Charts/Data/Interfaces/BubbleChartDataSetProtocol.swift index 10c5d9eecb..5cc9457951 100644 --- a/Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/BubbleChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IBubbleChartDataSet.swift +// BubbleChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IBubbleChartDataSet: IBarLineScatterCandleBubbleChartDataSet +public protocol BubbleChartDataSetProtocol: BarLineScatterCandleBubbleChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/ICandleChartDataSet.swift b/Source/Charts/Data/Interfaces/CandleChartDataSetProtocol.swift similarity index 93% rename from Source/Charts/Data/Interfaces/ICandleChartDataSet.swift rename to Source/Charts/Data/Interfaces/CandleChartDataSetProtocol.swift index fac88d3b2e..d47b5a8c9f 100644 --- a/Source/Charts/Data/Interfaces/ICandleChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/CandleChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// ICandleChartDataSet.swift +// CandleChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol ICandleChartDataSet: ILineScatterCandleRadarChartDataSet +public protocol CandleChartDataSetProtocol: LineScatterCandleRadarChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/IChartDataSet.swift b/Source/Charts/Data/Interfaces/ChartDataSetProtocol.swift similarity index 98% rename from Source/Charts/Data/Interfaces/IChartDataSet.swift rename to Source/Charts/Data/Interfaces/ChartDataSetProtocol.swift index 293db393eb..77b1e6b0d2 100644 --- a/Source/Charts/Data/Interfaces/IChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/ChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IChartDataSet.swift +// ChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IChartDataSet +public protocol ChartDataSetProtocol { // MARK: - Data functions and accessors @@ -187,7 +187,7 @@ public protocol IChartDataSet var isHighlightEnabled: Bool { get } /// Custom formatter that is used instead of the auto-formatter if set - var valueFormatter: IValueFormatter? { get set } + var valueFormatter: ValueFormatter? { get set } /// - returns: `true` if the valueFormatter object of this DataSet is null. var needsFormatter: Bool { get } diff --git a/Source/Charts/Data/Interfaces/ILineChartDataSet.swift b/Source/Charts/Data/Interfaces/LineChartDataSetProtocol.swift similarity index 88% rename from Source/Charts/Data/Interfaces/ILineChartDataSet.swift rename to Source/Charts/Data/Interfaces/LineChartDataSetProtocol.swift index bc9e484907..2da6ef4437 100644 --- a/Source/Charts/Data/Interfaces/ILineChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/LineChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// ILineChartDataSet.swift +// LineChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -14,7 +14,7 @@ import CoreGraphics @objc -public protocol ILineChartDataSet: ILineRadarChartDataSet +public protocol LineChartDataSetProtocol: LineRadarChartDataSetProtocol { // MARK: - Data functions and accessors @@ -75,6 +75,6 @@ public protocol ILineChartDataSet: ILineRadarChartDataSet /// Line cap type, default is CGLineCap.Butt var lineCapType: CGLineCap { get set } - /// Sets a custom IFillFormatter to the chart that handles the position of the filled-line for each DataSet. Set this to null to use the default logic. - var fillFormatter: IFillFormatter? { get set } + /// Sets a custom FillFormatterProtocol to the chart that handles the position of the filled-line for each DataSet. Set this to null to use the default logic. + var fillFormatter: FillFormatter? { get set } } diff --git a/Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift b/Source/Charts/Data/Interfaces/LineRadarChartDataSetProtocol.swift similarity index 90% rename from Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift rename to Source/Charts/Data/Interfaces/LineRadarChartDataSetProtocol.swift index 5d054948af..e9f3297562 100644 --- a/Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/LineRadarChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// ILineRadarChartDataSet.swift +// LineRadarChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol ILineRadarChartDataSet: ILineScatterCandleRadarChartDataSet +public protocol LineRadarChartDataSetProtocol: LineScatterCandleRadarChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift b/Source/Charts/Data/Interfaces/LineScatterCandleRadarChartDataSetProtocol.swift similarity index 87% rename from Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift rename to Source/Charts/Data/Interfaces/LineScatterCandleRadarChartDataSetProtocol.swift index cf646a1b56..d1de8e2248 100644 --- a/Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/LineScatterCandleRadarChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// ILineScatterCandleRadarChartDataSet.swift +// LineScatterCandleRadarChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -12,7 +12,7 @@ import Foundation @objc -public protocol ILineScatterCandleRadarChartDataSet: IBarLineScatterCandleBubbleChartDataSet +public protocol LineScatterCandleRadarChartDataSetProtocol: BarLineScatterCandleBubbleChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/IPieChartDataSet.swift b/Source/Charts/Data/Interfaces/PieChartDataSetProtocol.swift similarity index 95% rename from Source/Charts/Data/Interfaces/IPieChartDataSet.swift rename to Source/Charts/Data/Interfaces/PieChartDataSetProtocol.swift index 1e027be0cb..0cbe2c55e8 100644 --- a/Source/Charts/Data/Interfaces/IPieChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/PieChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IPieChartDataSet.swift +// PieChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -17,7 +17,7 @@ import CoreGraphics #endif @objc -public protocol IPieChartDataSet: IChartDataSet +public protocol PieChartDataSetProtocol: ChartDataSetProtocol { // MARK: - Styling functions and accessors diff --git a/Source/Charts/Data/Interfaces/IRadarChartDataSet.swift b/Source/Charts/Data/Interfaces/RadarChartDataSetProtocol.swift similarity index 90% rename from Source/Charts/Data/Interfaces/IRadarChartDataSet.swift rename to Source/Charts/Data/Interfaces/RadarChartDataSetProtocol.swift index 2e37b4ffd5..98c12d77c3 100644 --- a/Source/Charts/Data/Interfaces/IRadarChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/RadarChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IRadarChartDataSet.swift +// RadarChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IRadarChartDataSet: ILineRadarChartDataSet +public protocol RadarChartDataSetProtocol: LineRadarChartDataSetProtocol { // MARK: - Data functions and accessors diff --git a/Source/Charts/Data/Interfaces/IScatterChartDataSet.swift b/Source/Charts/Data/Interfaces/ScatterChartDataSetProtocol.swift similarity index 84% rename from Source/Charts/Data/Interfaces/IScatterChartDataSet.swift rename to Source/Charts/Data/Interfaces/ScatterChartDataSetProtocol.swift index 5703f07d00..0fa23662ae 100644 --- a/Source/Charts/Data/Interfaces/IScatterChartDataSet.swift +++ b/Source/Charts/Data/Interfaces/ScatterChartDataSetProtocol.swift @@ -1,5 +1,5 @@ // -// IScatterChartDataSet.swift +// ScatterChartDataSetProtocol.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IScatterChartDataSet: ILineScatterCandleRadarChartDataSet +public protocol ScatterChartDataSetProtocol: LineScatterCandleRadarChartDataSetProtocol { // MARK: - Data functions and accessors @@ -32,5 +32,5 @@ public protocol IScatterChartDataSet: ILineScatterCandleRadarChartDataSet var scatterShapeHoleColor: NSUIColor? { get } /// - returns: The IShapeRenderer responsible for rendering this DataSet. - var shapeRenderer: IShapeRenderer? { get } + var shapeRenderer: ShapeRenderer? { get } } diff --git a/Source/Charts/Formatters/IAxisValueFormatter.swift b/Source/Charts/Formatters/AxisValueFormatter.swift similarity index 88% rename from Source/Charts/Formatters/IAxisValueFormatter.swift rename to Source/Charts/Formatters/AxisValueFormatter.swift index 9634334cb5..ecdcb5498e 100644 --- a/Source/Charts/Formatters/IAxisValueFormatter.swift +++ b/Source/Charts/Formatters/AxisValueFormatter.swift @@ -1,5 +1,5 @@ // -// IAxisValueFormatter.swift +// AxisValueFormatter.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -12,8 +12,8 @@ import Foundation /// An interface for providing custom axis Strings. -@objc(IChartAxisValueFormatter) -public protocol IAxisValueFormatter: class +@objc(ChartAxisValueFormatter) +public protocol AxisValueFormatter: class { /// Called when a value from an axis is formatted before being drawn. diff --git a/Source/Charts/Formatters/DefaultAxisValueFormatter.swift b/Source/Charts/Formatters/DefaultAxisValueFormatter.swift index 85193d0c46..b698c5a319 100644 --- a/Source/Charts/Formatters/DefaultAxisValueFormatter.swift +++ b/Source/Charts/Formatters/DefaultAxisValueFormatter.swift @@ -12,7 +12,7 @@ import Foundation @objc(ChartDefaultAxisValueFormatter) -open class DefaultAxisValueFormatter: NSObject, IAxisValueFormatter +open class DefaultAxisValueFormatter: NSObject, AxisValueFormatter { public typealias Block = ( _ value: Double, diff --git a/Source/Charts/Formatters/DefaultFillFormatter.swift b/Source/Charts/Formatters/DefaultFillFormatter.swift index ea9c2a7465..91f99c0018 100644 --- a/Source/Charts/Formatters/DefaultFillFormatter.swift +++ b/Source/Charts/Formatters/DefaultFillFormatter.swift @@ -18,10 +18,10 @@ import CoreGraphics /// Default formatter that calculates the position of the filled line. @objc(ChartDefaultFillFormatter) -open class DefaultFillFormatter: NSObject, IFillFormatter +open class DefaultFillFormatter: NSObject, FillFormatter { public typealias Block = ( - _ dataSet: ILineChartDataSet, + _ dataSet: LineChartDataSetProtocol, _ dataProvider: LineChartDataProvider) -> CGFloat @objc open var block: Block? @@ -39,7 +39,7 @@ open class DefaultFillFormatter: NSObject, IFillFormatter } open func getFillLinePosition( - dataSet: ILineChartDataSet, + dataSet: LineChartDataSetProtocol, dataProvider: LineChartDataProvider) -> CGFloat { guard block == nil else { return block!(dataSet, dataProvider) } diff --git a/Source/Charts/Formatters/DefaultValueFormatter.swift b/Source/Charts/Formatters/DefaultValueFormatter.swift index b3fff70ac9..6c3fdbc9da 100644 --- a/Source/Charts/Formatters/DefaultValueFormatter.swift +++ b/Source/Charts/Formatters/DefaultValueFormatter.swift @@ -12,7 +12,7 @@ import Foundation @objc(ChartDefaultValueFormatter) -open class DefaultValueFormatter: NSObject, IValueFormatter +open class DefaultValueFormatter: NSObject, ValueFormatter { public typealias Block = ( _ value: Double, diff --git a/Source/Charts/Formatters/IFillFormatter.swift b/Source/Charts/Formatters/FillFormatter.swift similarity index 72% rename from Source/Charts/Formatters/IFillFormatter.swift rename to Source/Charts/Formatters/FillFormatter.swift index 8a88500299..5fb53136bb 100644 --- a/Source/Charts/Formatters/IFillFormatter.swift +++ b/Source/Charts/Formatters/FillFormatter.swift @@ -1,5 +1,5 @@ // -// IFillFormatter.swift +// FillFormatter.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,9 +13,9 @@ import Foundation import CoreGraphics /// Protocol for providing a custom logic to where the filling line of a LineDataSet should end. This of course only works if setFillEnabled(...) is set to true. -@objc(IChartFillFormatter) -public protocol IFillFormatter +@objc(ChartFillFormatter) +public protocol FillFormatter { /// - returns: The vertical (y-axis) position where the filled-line of the LineDataSet should end. - func getFillLinePosition(dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat + func getFillLinePosition(dataSet: LineChartDataSetProtocol, dataProvider: LineChartDataProvider) -> CGFloat } diff --git a/Source/Charts/Formatters/IndexAxisValueFormatter.swift b/Source/Charts/Formatters/IndexAxisValueFormatter.swift index 9655123984..afca4cc76c 100644 --- a/Source/Charts/Formatters/IndexAxisValueFormatter.swift +++ b/Source/Charts/Formatters/IndexAxisValueFormatter.swift @@ -13,7 +13,7 @@ import Foundation /// This formatter is used for passing an array of x-axis labels, on whole x steps. @objc(ChartIndexAxisValueFormatter) -open class IndexAxisValueFormatter: NSObject, IAxisValueFormatter +open class IndexAxisValueFormatter: NSObject, AxisValueFormatter { private var _values: [String] = [String]() private var _valueCount: Int = 0 diff --git a/Source/Charts/Formatters/IValueFormatter.swift b/Source/Charts/Formatters/ValueFormatter.swift similarity index 93% rename from Source/Charts/Formatters/IValueFormatter.swift rename to Source/Charts/Formatters/ValueFormatter.swift index bd7c0c90f8..66d4100097 100644 --- a/Source/Charts/Formatters/IValueFormatter.swift +++ b/Source/Charts/Formatters/ValueFormatter.swift @@ -1,5 +1,5 @@ // -// IValueFormatter.swift +// ValueFormatter.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -16,8 +16,8 @@ import Foundation /// Simply create your own formatting class and let it implement ValueFormatter. /// /// Then override the getFormattedValue(...) method and return whatever you want. -@objc(IChartValueFormatter) -public protocol IValueFormatter: class +@objc(ChartValueFormatter) +public protocol ValueFormatter: class { /// Called when a value (from labels inside the chart) is formatted before being drawn. diff --git a/Source/Charts/Highlight/BarHighlighter.swift b/Source/Charts/Highlight/BarHighlighter.swift index ff115fe147..e34e2bc47a 100644 --- a/Source/Charts/Highlight/BarHighlighter.swift +++ b/Source/Charts/Highlight/BarHighlighter.swift @@ -29,7 +29,7 @@ open class BarHighlighter: ChartHighlighter let pos = getValsForTouch(x: x, y: y) if - let set = barData.getDataSetByIndex(high!.dataSetIndex) as? IBarChartDataSet, + let set = barData.getDataSetByIndex(high!.dataSetIndex) as? BarChartDataSetProtocol, set.isStacked { return getStackedHighlight(high: high!, @@ -60,7 +60,7 @@ open class BarHighlighter: ChartHighlighter /// - parameter yValue: /// - returns: @objc open func getStackedHighlight(high: Highlight, - set: IBarChartDataSet, + set: BarChartDataSetProtocol, xValue: Double, yValue: Double) -> Highlight? { diff --git a/Source/Charts/Highlight/ChartHighlighter.swift b/Source/Charts/Highlight/ChartHighlighter.swift index 719f44e757..abc0a3e4a4 100644 --- a/Source/Charts/Highlight/ChartHighlighter.swift +++ b/Source/Charts/Highlight/ChartHighlighter.swift @@ -12,7 +12,7 @@ import Foundation import CoreGraphics -open class ChartHighlighter : NSObject, IHighlighter +open class ChartHighlighter : NSObject, Highlighter { /// instance of the data-provider @objc open weak var chart: ChartDataProvider? @@ -103,7 +103,7 @@ open class ChartHighlighter : NSObject, IHighlighter /// - returns: An array of `Highlight` objects corresponding to the selected xValue and dataSetIndex. internal func buildHighlights( - dataSet set: IChartDataSet, + dataSet set: ChartDataSetProtocol, dataSetIndex: Int, xValue: Double, rounding: ChartDataSetRounding) -> [Highlight] diff --git a/Source/Charts/Highlight/IHighlighter.swift b/Source/Charts/Highlight/Highlighter.swift similarity index 84% rename from Source/Charts/Highlight/IHighlighter.swift rename to Source/Charts/Highlight/Highlighter.swift index 56acfcc226..4197e5d7fd 100644 --- a/Source/Charts/Highlight/IHighlighter.swift +++ b/Source/Charts/Highlight/Highlighter.swift @@ -1,5 +1,5 @@ // -// IHighlighter.swift +// Highlighter.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -12,8 +12,8 @@ import Foundation import CoreGraphics -@objc(IChartHighlighter) -public protocol IHighlighter: class +@objc(ChartHighlighter) +public protocol Highlighter: class { /// - returns: A Highlight object corresponding to the given x- and y- touch positions in pixels. /// - parameter x: diff --git a/Source/Charts/Highlight/HorizontalBarHighlighter.swift b/Source/Charts/Highlight/HorizontalBarHighlighter.swift index eec39c807e..a9f0fe6f3d 100644 --- a/Source/Charts/Highlight/HorizontalBarHighlighter.swift +++ b/Source/Charts/Highlight/HorizontalBarHighlighter.swift @@ -24,7 +24,7 @@ open class HorizontalBarHighlighter: BarHighlighter guard let high = getHighlight(xValue: Double(pos.y), x: y, y: x) else { return nil } - if let set = barData.getDataSetByIndex(high.dataSetIndex) as? IBarChartDataSet, + if let set = barData.getDataSetByIndex(high.dataSetIndex) as? BarChartDataSetProtocol, set.isStacked { return getStackedHighlight(high: high, @@ -39,7 +39,7 @@ open class HorizontalBarHighlighter: BarHighlighter } internal override func buildHighlights( - dataSet set: IChartDataSet, + dataSet set: ChartDataSetProtocol, dataSetIndex: Int, xValue: Double, rounding: ChartDataSetRounding) -> [Highlight] diff --git a/Source/Charts/Renderers/AxisRenderer.swift b/Source/Charts/Renderers/AxisRenderer.swift new file mode 100644 index 0000000000..35b1ddf72d --- /dev/null +++ b/Source/Charts/Renderers/AxisRenderer.swift @@ -0,0 +1,45 @@ +// +// AxisRenderer.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 + + +public protocol AxisRenderer: Renderer { + + associatedtype Axis: AxisBase + + /// base axis this axis renderer works with + var axis: Axis { get } + + /// transformer to transform values to screen pixels and return + var transformer: Transformer? { get } + + /// Draws the axis labels on the specified context + func renderAxisLabels(context: CGContext) + + /// Draws the grid lines belonging to the axis. + func renderGridLines(context: CGContext) + + /// Draws the line that goes alongside the axis. + func renderAxisLine(context: CGContext) + + /// Draws the LimitLines associated with this axis to the screen. + func renderLimitLines(context: CGContext) + + /// Computes the axis values. + /// - parameter min: the minimum value in the data object for this axis + /// - parameter max: the maximum value in the data object for this axis + func computeAxis(min: Double, max: Double, inverted: Bool) + + /// Sets up the axis values. Computes the desired number of labels between the two given extremes. + func computeAxisValues(min: Double, max: Double) +} diff --git a/Source/Charts/Renderers/AxisRendererBase.swift b/Source/Charts/Renderers/AxisRendererBase.swift deleted file mode 100644 index bd1c6aa466..0000000000 --- a/Source/Charts/Renderers/AxisRendererBase.swift +++ /dev/null @@ -1,211 +0,0 @@ -// -// AxisRendererBase.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(ChartAxisRendererBase) -open class AxisRendererBase: Renderer -{ - /// base axis this axis renderer works with - @objc open var axis: AxisBase? - - /// transformer to transform values to screen pixels and return - @objc open var transformer: Transformer? - - @objc public init(viewPortHandler: ViewPortHandler, transformer: Transformer?, axis: AxisBase?) - { - super.init(viewPortHandler: viewPortHandler) - - self.transformer = transformer - self.axis = axis - } - - /// Draws the axis labels on the specified context - @objc open func renderAxisLabels(context: CGContext) - { - fatalError("renderAxisLabels() cannot be called on AxisRendererBase") - } - - /// Draws the grid lines belonging to the axis. - @objc open func renderGridLines(context: CGContext) - { - fatalError("renderGridLines() cannot be called on AxisRendererBase") - } - - /// Draws the line that goes alongside the axis. - @objc open func renderAxisLine(context: CGContext) - { - fatalError("renderAxisLine() cannot be called on AxisRendererBase") - } - - /// Draws the LimitLines associated with this axis to the screen. - @objc open func renderLimitLines(context: CGContext) - { - fatalError("renderLimitLines() cannot be called on AxisRendererBase") - } - - /// Computes the axis values. - /// - parameter min: the minimum value in the data object for this axis - /// - parameter max: the maximum value in the data object for this axis - @objc open func computeAxis(min: Double, max: Double, inverted: Bool) - { - var min = min, max = max - - if let transformer = self.transformer - { - // calculate the starting and entry point of the y-labels (depending on zoom / contentrect bounds) - if viewPortHandler.contentWidth > 10.0 && !viewPortHandler.isFullyZoomedOutY - { - let p1 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) - let p2 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentBottom)) - - if !inverted - { - min = Double(p2.y) - max = Double(p1.y) - } - else - { - min = Double(p1.y) - max = Double(p2.y) - } - } - } - - computeAxisValues(min: min, max: max) - } - - /// Sets up the axis values. Computes the desired number of labels between the two given extremes. - @objc open func computeAxisValues(min: Double, max: Double) - { - guard let axis = self.axis else { return } - - let yMin = min - let yMax = max - - let labelCount = axis.labelCount - let range = abs(yMax - yMin) - - if labelCount == 0 || range <= 0 || range.isInfinite - { - axis.entries = [Double]() - axis.centeredEntries = [Double]() - return - } - - // Find out how much spacing (in y value space) between axis values - let rawInterval = range / Double(labelCount) - var interval = ChartUtils.roundToNextSignificant(number: Double(rawInterval)) - - // If granularity is enabled, then do not allow the interval to go below specified granularity. - // This is used to avoid repeated values when rounding values for display. - if axis.granularityEnabled - { - interval = interval < axis.granularity ? axis.granularity : interval - } - - // Normalize interval - let intervalMagnitude = ChartUtils.roundToNextSignificant(number: pow(10.0, Double(Int(log10(interval))))) - let intervalSigDigit = Int(interval / intervalMagnitude) - if intervalSigDigit > 5 - { - // Use one order of magnitude higher, to avoid intervals like 0.9 or 90 - interval = floor(10.0 * Double(intervalMagnitude)) - } - - var n = axis.centerAxisLabelsEnabled ? 1 : 0 - - // force label count - if axis.isForceLabelsEnabled - { - interval = Double(range) / Double(labelCount - 1) - - // Ensure stops contains at least n elements. - axis.entries.removeAll(keepingCapacity: true) - axis.entries.reserveCapacity(labelCount) - - var v = yMin - - for _ in 0 ..< labelCount - { - axis.entries.append(v) - v += interval - } - - n = labelCount - } - else - { - // no forced count - - var first = interval == 0.0 ? 0.0 : ceil(yMin / interval) * interval - - if axis.centerAxisLabelsEnabled - { - first -= interval - } - - let last = interval == 0.0 ? 0.0 : ChartUtils.nextUp(floor(yMax / interval) * interval) - - if interval != 0.0 && last != first - { - for _ in stride(from: first, through: last, by: interval) - { - n += 1 - } - } - - // Ensure stops contains at least n elements. - axis.entries.removeAll(keepingCapacity: true) - axis.entries.reserveCapacity(labelCount) - - var f = first - var i = 0 - while i < n - { - if f == 0.0 - { - // Fix for IEEE negative zero case (Where value == -0.0, and 0.0 == -0.0) - f = 0.0 - } - - axis.entries.append(Double(f)) - - f += interval - i += 1 - } - } - - // set decimals - if interval < 1 - { - axis.decimals = Int(ceil(-log10(interval))) - } - else - { - axis.decimals = 0 - } - - if axis.centerAxisLabelsEnabled - { - axis.centeredEntries.reserveCapacity(n) - axis.centeredEntries.removeAll() - - let offset: Double = interval / 2.0 - - for i in 0 ..< n - { - axis.centeredEntries.append(axis.entries[i] + offset) - } - } - } -} diff --git a/Source/Charts/Renderers/BarChartRenderer.swift b/Source/Charts/Renderers/BarChartRenderer.swift index 3621ddbf9c..cf8fad5f5b 100644 --- a/Source/Charts/Renderers/BarChartRenderer.swift +++ b/Source/Charts/Renderers/BarChartRenderer.swift @@ -54,7 +54,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer for i in stride(from: 0, to: barData.dataSetCount, by: 1) { - let set = barData.dataSets[i] as! IBarChartDataSet + let set = barData.dataSets[i] as! BarChartDataSetProtocol let size = set.entryCount * (set.isStacked ? set.stackSize : 1) if _buffers[i].rects.count != size { @@ -68,7 +68,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer } } - private func prepareBuffer(dataSet: IBarChartDataSet, index: Int) + private func prepareBuffer(dataSet: BarChartDataSetProtocol, index: Int) { guard let dataProvider = dataProvider, @@ -193,19 +193,19 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer if set.isVisible { - if !(set is IBarChartDataSet) + if !(set is BarChartDataSetProtocol) { - fatalError("Datasets for BarChartRenderer must conform to IBarChartDataset") + fatalError("Datasets for BarChartRenderer must conform to BarChartDataSetProtocol") } - drawDataSet(context: context, dataSet: set as! IBarChartDataSet, index: i) + drawDataSet(context: context, dataSet: set as! BarChartDataSetProtocol, index: i) } } } private var _barShadowRectBuffer: CGRect = CGRect() - @objc open func drawDataSet(context: CGContext, dataSet: IBarChartDataSet, index: Int) + @objc open func drawDataSet(context: CGContext, dataSet: BarChartDataSetProtocol, index: Int) { guard let dataProvider = dataProvider else { return } @@ -362,7 +362,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer for dataSetIndex in 0 ..< barData.dataSetCount { - guard let dataSet = dataSets[dataSetIndex] as? IBarChartDataSet else { continue } + guard let dataSet = dataSets[dataSetIndex] as? BarChartDataSetProtocol else { continue } if !shouldDrawValues(forDataSet: dataSet) { @@ -630,7 +630,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer for high in indices { guard - let set = barData.getDataSetByIndex(high.dataSetIndex) as? IBarChartDataSet, + let set = barData.getDataSetByIndex(high.dataSetIndex) as? BarChartDataSetProtocol, set.isHighlightEnabled else { continue } diff --git a/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift b/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift index 4ba1b5fac7..4bfd560f87 100644 --- a/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift +++ b/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift @@ -13,17 +13,32 @@ import Foundation import CoreGraphics @objc(BarLineScatterCandleBubbleChartRenderer) -open class BarLineScatterCandleBubbleRenderer: DataRenderer +open class BarLineScatterCandleBubbleRenderer: NSObject, DataRenderer { + public let viewPortHandler: ViewPortHandler + + public let animator: Animator + internal var _xBounds = XBounds() // Reusable XBounds object - public override init(animator: Animator, viewPortHandler: ViewPortHandler) + public init(animator: Animator, viewPortHandler: ViewPortHandler) { - super.init(animator: animator, viewPortHandler: viewPortHandler) + self.viewPortHandler = viewPortHandler + self.animator = animator + + super.init() } - + + open func drawData(context: CGContext) { } + + open func drawValues(context: CGContext) { } + + open func drawExtras(context: CGContext) { } + + open func drawHighlighted(context: CGContext, indices: [Highlight]) { } + /// Checks if the provided entry object is in bounds for drawing considering the current animation phase. - internal func isInBoundsX(entry e: ChartDataEntry, dataSet: IBarLineScatterCandleBubbleChartDataSet) -> Bool + internal func isInBoundsX(entry e: ChartDataEntry, dataSet: BarLineScatterCandleBubbleChartDataSetProtocol) -> Bool { let entryIndex = dataSet.entryIndex(entry: e) return Double(entryIndex) < Double(dataSet.entryCount) * animator.phaseX @@ -32,18 +47,26 @@ open class BarLineScatterCandleBubbleRenderer: DataRenderer /// Calculates and returns the x-bounds for the given DataSet in terms of index in their values array. /// This includes minimum and maximum visible x, as well as range. internal func xBounds(chart: BarLineScatterCandleBubbleChartDataProvider, - dataSet: IBarLineScatterCandleBubbleChartDataSet, + dataSet: BarLineScatterCandleBubbleChartDataSetProtocol, animator: Animator?) -> XBounds { return XBounds(chart: chart, dataSet: dataSet, animator: animator) } /// - returns: `true` if the DataSet values should be drawn, `false` if not. - internal func shouldDrawValues(forDataSet set: IChartDataSet) -> Bool + internal func shouldDrawValues(forDataSet set: ChartDataSetProtocol) -> Bool { return set.isVisible && (set.isDrawValuesEnabled || set.isDrawIconsEnabled) } + open func initBuffers() { } + + open func isDrawingValuesAllowed(dataProvider: ChartDataProvider?) -> Bool + { + guard let data = dataProvider?.data else { return false } + return data.entryCount < Int(CGFloat(dataProvider?.maxVisibleCount ?? 0) * viewPortHandler.scaleX) + } + /// Class representing the bounds of the current viewport in terms of indices in the values array of a DataSet. open class XBounds { @@ -62,7 +85,7 @@ open class BarLineScatterCandleBubbleRenderer: DataRenderer } public init(chart: BarLineScatterCandleBubbleChartDataProvider, - dataSet: IBarLineScatterCandleBubbleChartDataSet, + dataSet: BarLineScatterCandleBubbleChartDataSetProtocol, animator: Animator?) { self.set(chart: chart, dataSet: dataSet, animator: animator) @@ -70,7 +93,7 @@ open class BarLineScatterCandleBubbleRenderer: DataRenderer /// Calculates the minimum and maximum x values as well as the range between them. open func set(chart: BarLineScatterCandleBubbleChartDataProvider, - dataSet: IBarLineScatterCandleBubbleChartDataSet, + dataSet: BarLineScatterCandleBubbleChartDataSetProtocol, animator: Animator?) { let phaseX = Swift.max(0.0, Swift.min(1.0, animator?.phaseX ?? 1.0)) diff --git a/Source/Charts/Renderers/BubbleChartRenderer.swift b/Source/Charts/Renderers/BubbleChartRenderer.swift index 8498070c17..bdf8f5c95d 100644 --- a/Source/Charts/Renderers/BubbleChartRenderer.swift +++ b/Source/Charts/Renderers/BubbleChartRenderer.swift @@ -35,7 +35,7 @@ open class BubbleChartRenderer: BarLineScatterCandleBubbleRenderer let bubbleData = dataProvider.bubbleData else { return } - for set in bubbleData.dataSets as! [IBubbleChartDataSet] where set.isVisible + for set in bubbleData.dataSets as! [BubbleChartDataSetProtocol] where set.isVisible { drawDataSet(context: context, dataSet: set) } @@ -57,7 +57,7 @@ open class BubbleChartRenderer: BarLineScatterCandleBubbleRenderer private var _pointBuffer = CGPoint() private var _sizeBuffer = [CGPoint](repeating: CGPoint(), count: 2) - @objc open func drawDataSet(context: CGContext, dataSet: IBubbleChartDataSet) + @objc open func drawDataSet(context: CGContext, dataSet: BubbleChartDataSetProtocol) { guard let dataProvider = dataProvider else { return } @@ -125,7 +125,7 @@ open class BubbleChartRenderer: BarLineScatterCandleBubbleRenderer dataProvider = dataProvider, let bubbleData = dataProvider.bubbleData, isDrawingValuesAllowed(dataProvider: dataProvider), - let dataSets = bubbleData.dataSets as? [IBubbleChartDataSet] + let dataSets = bubbleData.dataSets as? [BubbleChartDataSetProtocol] else { return } let phaseX = max(0.0, min(1.0, animator.phaseX)) @@ -222,7 +222,7 @@ open class BubbleChartRenderer: BarLineScatterCandleBubbleRenderer for high in indices { guard - let dataSet = bubbleData.getDataSetByIndex(high.dataSetIndex) as? IBubbleChartDataSet, + let dataSet = bubbleData.getDataSetByIndex(high.dataSetIndex) as? BubbleChartDataSetProtocol, dataSet.isHighlightEnabled, let entry = dataSet.entryForXValue(high.x, closestToY: high.y) as? BubbleChartDataEntry, isInBoundsX(entry: entry, dataSet: dataSet) diff --git a/Source/Charts/Renderers/CandleStickChartRenderer.swift b/Source/Charts/Renderers/CandleStickChartRenderer.swift index 28a460d9fe..8582db4869 100644 --- a/Source/Charts/Renderers/CandleStickChartRenderer.swift +++ b/Source/Charts/Renderers/CandleStickChartRenderer.swift @@ -32,7 +32,7 @@ open class CandleStickChartRenderer: LineScatterCandleRadarRenderer { guard let dataProvider = dataProvider, let candleData = dataProvider.candleData else { return } - for set in candleData.dataSets as! [ICandleChartDataSet] + for set in candleData.dataSets as! [CandleChartDataSetProtocol] { if set.isVisible { @@ -48,7 +48,7 @@ open class CandleStickChartRenderer: LineScatterCandleRadarRenderer private var _bodyRect = CGRect() private var _lineSegments = [CGPoint](repeating: CGPoint(), count: 2) - @objc open func drawDataSet(context: CGContext, dataSet: ICandleChartDataSet) + @objc open func drawDataSet(context: CGContext, dataSet: CandleChartDataSetProtocol) { guard let dataProvider = dataProvider else { return } @@ -250,7 +250,7 @@ open class CandleStickChartRenderer: LineScatterCandleRadarRenderer for i in 0 ..< dataSets.count { - guard let dataSet = dataSets[i] as? IBarLineScatterCandleBubbleChartDataSet + guard let dataSet = dataSets[i] as? BarLineScatterCandleBubbleChartDataSetProtocol else { continue } if !shouldDrawValues(forDataSet: dataSet) @@ -335,7 +335,7 @@ open class CandleStickChartRenderer: LineScatterCandleRadarRenderer for high in indices { guard - let set = candleData.getDataSetByIndex(high.dataSetIndex) as? ICandleChartDataSet, + let set = candleData.getDataSetByIndex(high.dataSetIndex) as? CandleChartDataSetProtocol, set.isHighlightEnabled else { continue } diff --git a/Source/Charts/Renderers/ChartDataRendererBase.swift b/Source/Charts/Renderers/ChartDataRendererBase.swift deleted file mode 100644 index 024516aa15..0000000000 --- a/Source/Charts/Renderers/ChartDataRendererBase.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// 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(ChartDataRendererBase) -open class DataRenderer: Renderer -{ - @objc open let animator: Animator - - @objc public init(animator: Animator, viewPortHandler: ViewPortHandler) - { - self.animator = animator - - super.init(viewPortHandler: viewPortHandler) - } - - @objc open func drawData(context: CGContext) - { - fatalError("drawData() cannot be called on DataRenderer") - } - - @objc open func drawValues(context: CGContext) - { - fatalError("drawValues() cannot be called on DataRenderer") - } - - @objc open func drawExtras(context: CGContext) - { - fatalError("drawExtras() cannot be called on DataRenderer") - } - - /// Draws all highlight indicators for the values that are currently highlighted. - /// - /// - parameter indices: the highlighted values - @objc open func drawHighlighted(context: CGContext, indices: [Highlight]) - { - fatalError("drawHighlighted() cannot be called on DataRenderer") - } - - /// 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. - @objc open func initBuffers() { } - - @objc open func isDrawingValuesAllowed(dataProvider: ChartDataProvider?) -> Bool - { - guard let data = dataProvider?.data else { return false } - return data.entryCount < Int(CGFloat(dataProvider?.maxVisibleCount ?? 0) * viewPortHandler.scaleX) - } -} diff --git a/Source/Charts/Renderers/CombinedChartRenderer.swift b/Source/Charts/Renderers/CombinedChartRenderer.swift index d38ccb5f7a..529561878f 100644 --- a/Source/Charts/Renderers/CombinedChartRenderer.swift +++ b/Source/Charts/Renderers/CombinedChartRenderer.swift @@ -12,8 +12,11 @@ import Foundation import CoreGraphics -open class CombinedChartRenderer: DataRenderer +open class CombinedChartRenderer: NSObject, DataRenderer { + public let viewPortHandler: ViewPortHandler + public let animator: Animator + @objc open weak var chart: CombinedChartView? /// if set to true, all values are drawn above their bars, instead of below their top @@ -28,9 +31,11 @@ open class CombinedChartRenderer: DataRenderer @objc public init(chart: CombinedChartView, animator: Animator, viewPortHandler: ViewPortHandler) { - super.init(animator: animator, viewPortHandler: viewPortHandler) - self.chart = chart + self.viewPortHandler = viewPortHandler + self.animator = animator + + super.init() createRenderers() } @@ -85,7 +90,7 @@ open class CombinedChartRenderer: DataRenderer } - open override func initBuffers() + open func initBuffers() { for renderer in _renderers { @@ -93,7 +98,7 @@ open class CombinedChartRenderer: DataRenderer } } - open override func drawData(context: CGContext) + open func drawData(context: CGContext) { for renderer in _renderers { @@ -101,7 +106,7 @@ open class CombinedChartRenderer: DataRenderer } } - open override func drawValues(context: CGContext) + open func drawValues(context: CGContext) { for renderer in _renderers { @@ -109,7 +114,7 @@ open class CombinedChartRenderer: DataRenderer } } - open override func drawExtras(context: CGContext) + open func drawExtras(context: CGContext) { for renderer in _renderers { @@ -117,7 +122,7 @@ open class CombinedChartRenderer: DataRenderer } } - open override func drawHighlighted(context: CGContext, indices: [Highlight]) + open func drawHighlighted(context: CGContext, indices: [Highlight]) { for renderer in _renderers { @@ -152,6 +157,12 @@ open class CombinedChartRenderer: DataRenderer } } + open func isDrawingValuesAllowed(dataProvider: ChartDataProvider?) -> Bool + { + guard let data = dataProvider?.data else { return false } + return data.entryCount < Int(CGFloat(dataProvider?.maxVisibleCount ?? 0) * viewPortHandler.scaleX) + } + /// - returns: The sub-renderer object at the specified index. @objc open func getSubRenderer(index: Int) -> DataRenderer? { diff --git a/Source/Charts/Renderers/DataRenderer.swift b/Source/Charts/Renderers/DataRenderer.swift new file mode 100644 index 0000000000..bea371e428 --- /dev/null +++ b/Source/Charts/Renderers/DataRenderer.swift @@ -0,0 +1,36 @@ +// +// 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 +{ + 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. + /// + /// - parameter 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 +} diff --git a/Source/Charts/Renderers/HorizontalBarChartRenderer.swift b/Source/Charts/Renderers/HorizontalBarChartRenderer.swift index 23925c4d60..373f4df331 100644 --- a/Source/Charts/Renderers/HorizontalBarChartRenderer.swift +++ b/Source/Charts/Renderers/HorizontalBarChartRenderer.swift @@ -51,7 +51,7 @@ open class HorizontalBarChartRenderer: BarChartRenderer for i in stride(from: 0, to: barData.dataSetCount, by: 1) { - let set = barData.dataSets[i] as! IBarChartDataSet + let set = barData.dataSets[i] as! BarChartDataSetProtocol let size = set.entryCount * (set.isStacked ? set.stackSize : 1) if _buffers[i].rects.count != size { @@ -65,7 +65,7 @@ open class HorizontalBarChartRenderer: BarChartRenderer } } - private func prepareBuffer(dataSet: IBarChartDataSet, index: Int) + private func prepareBuffer(dataSet: BarChartDataSetProtocol, index: Int) { guard let dataProvider = dataProvider, @@ -179,7 +179,7 @@ open class HorizontalBarChartRenderer: BarChartRenderer private var _barShadowRectBuffer: CGRect = CGRect() - open override func drawDataSet(context: CGContext, dataSet: IBarChartDataSet, index: Int) + open override func drawDataSet(context: CGContext, dataSet: BarChartDataSetProtocol, index: Int) { guard let dataProvider = dataProvider else { return } @@ -316,7 +316,7 @@ open class HorizontalBarChartRenderer: BarChartRenderer for dataSetIndex in 0 ..< barData.dataSetCount { - guard let dataSet = dataSets[dataSetIndex] as? IBarChartDataSet else { continue } + guard let dataSet = dataSets[dataSetIndex] as? BarChartDataSetProtocol else { continue } if !shouldDrawValues(forDataSet: dataSet) || !(dataSet.isDrawIconsEnabled && dataSet.isVisible) { diff --git a/Source/Charts/Renderers/LegendRenderer.swift b/Source/Charts/Renderers/LegendRenderer.swift index 38c3648537..a32344c3aa 100755 --- a/Source/Charts/Renderers/LegendRenderer.swift +++ b/Source/Charts/Renderers/LegendRenderer.swift @@ -17,16 +17,19 @@ import CoreGraphics #endif @objc(ChartLegendRenderer) -open class LegendRenderer: Renderer +open class LegendRenderer: NSObject, Renderer { + @objc public let viewPortHandler: ViewPortHandler + /// the legend object this renderer renders @objc open var legend: Legend? @objc public init(viewPortHandler: ViewPortHandler, legend: Legend?) { - super.init(viewPortHandler: viewPortHandler) - + self.viewPortHandler = viewPortHandler self.legend = legend + + super.init() } /// Prepares the legend and calculates all needed forms, labels and colors. @@ -47,10 +50,10 @@ open class LegendRenderer: Renderer let entryCount = dataSet.entryCount // if we have a barchart with stacked bars - if dataSet is IBarChartDataSet && - (dataSet as! IBarChartDataSet).isStacked + if dataSet is BarChartDataSetProtocol && + (dataSet as! BarChartDataSetProtocol).isStacked { - let bds = dataSet as! IBarChartDataSet + let bds = dataSet as! BarChartDataSetProtocol var sLabels = bds.stackLabels for j in 0.. CGPath + private func generateFilledPath(dataSet: LineChartDataSetProtocol, fillMin: CGFloat, bounds: XBounds, matrix: CGAffineTransform) -> CGPath { let phaseY = animator.phaseY let isDrawSteppedEnabled = dataSet.mode == .stepped @@ -512,7 +512,7 @@ open class LineChartRenderer: LineRadarRenderer for i in 0 ..< dataSets.count { - guard let dataSet = dataSets[i] as? ILineChartDataSet else { continue } + guard let dataSet = dataSets[i] as? LineChartDataSetProtocol else { continue } if !shouldDrawValues(forDataSet: dataSet) { @@ -607,7 +607,7 @@ open class LineChartRenderer: LineRadarRenderer for i in 0 ..< dataSets.count { - guard let dataSet = lineData.getDataSetByIndex(i) as? ILineChartDataSet else { continue } + guard let dataSet = lineData.getDataSetByIndex(i) as? LineChartDataSetProtocol else { continue } if !dataSet.isVisible || !dataSet.isDrawCirclesEnabled || dataSet.entryCount == 0 { @@ -709,7 +709,7 @@ open class LineChartRenderer: LineRadarRenderer for high in indices { - guard let set = lineData.getDataSetByIndex(high.dataSetIndex) as? ILineChartDataSet + guard let set = lineData.getDataSetByIndex(high.dataSetIndex) as? LineChartDataSetProtocol , set.isHighlightEnabled else { continue } diff --git a/Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift b/Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift index 05203caf9c..dd33ffe862 100644 --- a/Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift +++ b/Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift @@ -25,7 +25,7 @@ open class LineScatterCandleRadarRenderer: BarLineScatterCandleBubbleRenderer /// :param: points /// :param: horizontal /// :param: vertical - @objc open func drawHighlightLines(context: CGContext, point: CGPoint, set: ILineScatterCandleRadarChartDataSet) + @objc open func drawHighlightLines(context: CGContext, point: CGPoint, set: LineScatterCandleRadarChartDataSetProtocol) { // draw vertical highlight lines diff --git a/Source/Charts/Renderers/PieChartRenderer.swift b/Source/Charts/Renderers/PieChartRenderer.swift index a363da290d..c71959e8e1 100644 --- a/Source/Charts/Renderers/PieChartRenderer.swift +++ b/Source/Charts/Renderers/PieChartRenderer.swift @@ -17,18 +17,23 @@ import CoreGraphics #endif -open class PieChartRenderer: DataRenderer +open class PieChartRenderer: NSObject, DataRenderer { + public let viewPortHandler: ViewPortHandler + public let animator: Animator + @objc open weak var chart: PieChartView? @objc public init(chart: PieChartView, animator: Animator, viewPortHandler: ViewPortHandler) { - super.init(animator: animator, viewPortHandler: viewPortHandler) - + self.viewPortHandler = viewPortHandler + self.animator = animator self.chart = chart + + super.init() } - open override func drawData(context: CGContext) + open func drawData(context: CGContext) { guard let chart = chart else { return } @@ -36,7 +41,7 @@ open class PieChartRenderer: DataRenderer if pieData != nil { - for set in pieData!.dataSets as! [IPieChartDataSet] + for set in pieData!.dataSets as! [PieChartDataSetProtocol] { if set.isVisible && set.entryCount > 0 { @@ -88,7 +93,7 @@ open class PieChartRenderer: DataRenderer } /// Calculates the sliceSpace to use based on visible values and their size compared to the set sliceSpace. - @objc open func getSliceSpace(dataSet: IPieChartDataSet) -> CGFloat + @objc open func getSliceSpace(dataSet: PieChartDataSetProtocol) -> CGFloat { guard dataSet.automaticallyDisableSliceSpacing, @@ -105,7 +110,7 @@ open class PieChartRenderer: DataRenderer return sliceSpace } - @objc open func drawDataSet(context: CGContext, dataSet: IPieChartDataSet) + @objc open func drawDataSet(context: CGContext, dataSet: PieChartDataSetProtocol) { guard let chart = chart else {return } @@ -254,7 +259,7 @@ open class PieChartRenderer: DataRenderer context.restoreGState() } - open override func drawValues(context: CGContext) + open func drawValues(context: CGContext) { guard let chart = chart, @@ -298,7 +303,7 @@ open class PieChartRenderer: DataRenderer for i in 0 ..< dataSets.count { - guard let dataSet = dataSets[i] as? IPieChartDataSet else { continue } + guard let dataSet = dataSets[i] as? PieChartDataSetProtocol else { continue } let drawValues = dataSet.isDrawValuesEnabled @@ -545,12 +550,20 @@ open class PieChartRenderer: DataRenderer } } - open override func drawExtras(context: CGContext) + open func drawExtras(context: CGContext) { drawHole(context: context) drawCenterText(context: context) } - + + open func initBuffers() { } + + open func isDrawingValuesAllowed(dataProvider: ChartDataProvider?) -> Bool + { + guard let data = dataProvider?.data else { return false } + return data.entryCount < Int(CGFloat(dataProvider?.maxVisibleCount ?? 0) * viewPortHandler.scaleX) + } + /// draws the hole in the center of the chart and the transparent circle / hole private func drawHole(context: CGContext) { @@ -656,7 +669,7 @@ open class PieChartRenderer: DataRenderer } } - open override func drawHighlighted(context: CGContext, indices: [Highlight]) + open func drawHighlighted(context: CGContext, indices: [Highlight]) { guard let chart = chart, @@ -687,7 +700,7 @@ open class PieChartRenderer: DataRenderer continue } - guard let set = data.getDataSetByIndex(indices[i].dataSetIndex) as? IPieChartDataSet else { continue } + guard let set = data.getDataSetByIndex(indices[i].dataSetIndex) as? PieChartDataSetProtocol else { continue } if !set.isHighlightEnabled { diff --git a/Source/Charts/Renderers/RadarChartRenderer.swift b/Source/Charts/Renderers/RadarChartRenderer.swift index ab4890f646..941d70948e 100644 --- a/Source/Charts/Renderers/RadarChartRenderer.swift +++ b/Source/Charts/Renderers/RadarChartRenderer.swift @@ -38,7 +38,7 @@ open class RadarChartRenderer: LineRadarRenderer { let mostEntries = radarData?.maxEntryCountSet?.entryCount ?? 0 - for set in radarData!.dataSets as! [IRadarChartDataSet] + for set in radarData!.dataSets as! [RadarChartDataSetProtocol] { if set.isVisible { @@ -53,7 +53,7 @@ open class RadarChartRenderer: LineRadarRenderer /// - parameter context: /// - parameter dataSet: /// - parameter mostEntries: the entry count of the dataset with the most entries - internal func drawDataSet(context: CGContext, dataSet: IRadarChartDataSet, mostEntries: Int) + internal func drawDataSet(context: CGContext, dataSet: RadarChartDataSetProtocol, mostEntries: Int) { guard let chart = chart else { return } @@ -155,7 +155,7 @@ open class RadarChartRenderer: LineRadarRenderer for i in 0 ..< data.dataSetCount { - let dataSet = data.getDataSetByIndex(i) as! IRadarChartDataSet + let dataSet = data.getDataSetByIndex(i) as! RadarChartDataSetProtocol if !shouldDrawValues(forDataSet: dataSet) { @@ -310,7 +310,7 @@ open class RadarChartRenderer: LineRadarRenderer for high in indices { guard - let set = chart.data?.getDataSetByIndex(high.dataSetIndex) as? IRadarChartDataSet, + let set = chart.data?.getDataSetByIndex(high.dataSetIndex) as? RadarChartDataSetProtocol, set.isHighlightEnabled else { continue } diff --git a/Source/Charts/Renderers/Renderer.swift b/Source/Charts/Renderers/Renderer.swift index 5c929f28e0..dbdcb8ae3b 100644 --- a/Source/Charts/Renderers/Renderer.swift +++ b/Source/Charts/Renderers/Renderer.swift @@ -13,14 +13,8 @@ import Foundation import CoreGraphics @objc(ChartRenderer) -open class Renderer: NSObject -{ - /// the component that handles the drawing area of the chart and it's offsets - @objc open let viewPortHandler: ViewPortHandler +public protocol Renderer { - @objc public init(viewPortHandler: ViewPortHandler) - { - self.viewPortHandler = viewPortHandler - super.init() - } + /// the component that handles the drawing area of the chart and it's offsets + var viewPortHandler: ViewPortHandler { get } } diff --git a/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift b/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift index 2d035bf357..1dab1cc46b 100644 --- a/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class ChevronDownShapeRenderer : NSObject, IShapeRenderer +open class ChevronDownShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift b/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift index 725533e780..0d077707f7 100644 --- a/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class ChevronUpShapeRenderer : NSObject, IShapeRenderer +open class ChevronUpShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/CircleShapeRenderer.swift b/Source/Charts/Renderers/Scatter/CircleShapeRenderer.swift index b94a51137a..fc0c4dfef1 100644 --- a/Source/Charts/Renderers/Scatter/CircleShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/CircleShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class CircleShapeRenderer : NSObject, IShapeRenderer +open class CircleShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift b/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift index 18785d3dee..7961da25aa 100644 --- a/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class CrossShapeRenderer : NSObject, IShapeRenderer +open class CrossShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/IShapeRenderer.swift b/Source/Charts/Renderers/Scatter/ShapeRenderer.swift similarity index 88% rename from Source/Charts/Renderers/Scatter/IShapeRenderer.swift rename to Source/Charts/Renderers/Scatter/ShapeRenderer.swift index bb12d9824a..9b7be2d0ba 100644 --- a/Source/Charts/Renderers/Scatter/IShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/ShapeRenderer.swift @@ -1,5 +1,5 @@ // -// IShapeRenderer.swift +// ShapeRenderer.swift // Charts // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda @@ -13,7 +13,7 @@ import Foundation import CoreGraphics @objc -public protocol IShapeRenderer: class +public protocol ShapeRenderer: class { /// Renders the provided ScatterDataSet with a shape. /// @@ -24,7 +24,7 @@ public protocol IShapeRenderer: class /// - parameter color: Color to draw the shape func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/SquareShapeRenderer.swift b/Source/Charts/Renderers/Scatter/SquareShapeRenderer.swift index ea692e33fd..948c1ff2eb 100644 --- a/Source/Charts/Renderers/Scatter/SquareShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/SquareShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class SquareShapeRenderer : NSObject, IShapeRenderer +open class SquareShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/TriangleShapeRenderer.swift b/Source/Charts/Renderers/Scatter/TriangleShapeRenderer.swift index fa313b765b..1f4bdca0d7 100644 --- a/Source/Charts/Renderers/Scatter/TriangleShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/TriangleShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class TriangleShapeRenderer : NSObject, IShapeRenderer +open class TriangleShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/Scatter/XShapeRenderer.swift b/Source/Charts/Renderers/Scatter/XShapeRenderer.swift index 8a546c5f0b..73e2efdd4b 100644 --- a/Source/Charts/Renderers/Scatter/XShapeRenderer.swift +++ b/Source/Charts/Renderers/Scatter/XShapeRenderer.swift @@ -11,11 +11,11 @@ import Foundation import CoreGraphics -open class XShapeRenderer : NSObject, IShapeRenderer +open class XShapeRenderer : NSObject, ShapeRenderer { open func renderShape( context: CGContext, - dataSet: IScatterChartDataSet, + dataSet: ScatterChartDataSetProtocol, viewPortHandler: ViewPortHandler, point: CGPoint, color: NSUIColor) diff --git a/Source/Charts/Renderers/ScatterChartRenderer.swift b/Source/Charts/Renderers/ScatterChartRenderer.swift index 010ca16791..d7b1afa3a5 100644 --- a/Source/Charts/Renderers/ScatterChartRenderer.swift +++ b/Source/Charts/Renderers/ScatterChartRenderer.swift @@ -38,19 +38,19 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer if set.isVisible { - if !(set is IScatterChartDataSet) + if !(set is ScatterChartDataSetProtocol) { - fatalError("Datasets for ScatterChartRenderer must conform to IScatterChartDataSet") + fatalError("Datasets for ScatterChartRenderer must conform to ScatterChartDataSetProtocol") } - drawDataSet(context: context, dataSet: set as! IScatterChartDataSet) + drawDataSet(context: context, dataSet: set as! ScatterChartDataSetProtocol) } } } private var _lineSegments = [CGPoint](repeating: CGPoint(), count: 2) - @objc open func drawDataSet(context: CGContext, dataSet: IScatterChartDataSet) + @objc open func drawDataSet(context: CGContext, dataSet: ScatterChartDataSetProtocol) { guard let dataProvider = dataProvider else { return } @@ -94,7 +94,7 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer } else { - print("There's no IShapeRenderer specified for ScatterDataSet", terminator: "\n") + print("There's no ShapeRenderer specified for ScatterDataSet", terminator: "\n") } } @@ -108,7 +108,7 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer // if values are drawn if isDrawingValuesAllowed(dataProvider: dataProvider) { - guard let dataSets = scatterData.dataSets as? [IScatterChartDataSet] else { return } + guard let dataSets = scatterData.dataSets as? [ScatterChartDataSetProtocol] else { return } let phaseY = animator.phaseY @@ -206,7 +206,7 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer for high in indices { guard - let set = scatterData.getDataSetByIndex(high.dataSetIndex) as? IScatterChartDataSet, + let set = scatterData.getDataSetByIndex(high.dataSetIndex) as? ScatterChartDataSetProtocol, set.isHighlightEnabled else { continue } diff --git a/Source/Charts/Renderers/XAxisRenderer.swift b/Source/Charts/Renderers/XAxisRenderer.swift index 534e606dcf..6cc566aac3 100644 --- a/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Source/Charts/Renderers/XAxisRenderer.swift @@ -17,14 +17,22 @@ import CoreGraphics #endif @objc(ChartXAxisRenderer) -open class XAxisRenderer: AxisRendererBase +open class XAxisRenderer: NSObject, AxisRenderer { - @objc public init(viewPortHandler: ViewPortHandler, xAxis: XAxis?, transformer: Transformer?) + public let viewPortHandler: ViewPortHandler + public let axis: XAxis + public let transformer: Transformer? + + @objc public init(viewPortHandler: ViewPortHandler, axis: XAxis, transformer: Transformer?) { - super.init(viewPortHandler: viewPortHandler, transformer: transformer, axis: xAxis) + self.viewPortHandler = viewPortHandler + self.axis = axis + self.transformer = transformer + + super.init() } - open override func computeAxis(min: Double, max: Double, inverted: Bool) + open func computeAxis(min: Double, max: Double, inverted: Bool) { var min = min, max = max @@ -53,60 +61,171 @@ open class XAxisRenderer: AxisRendererBase computeAxisValues(min: min, max: max) } - open override func computeAxisValues(min: Double, max: Double) + open func computeAxisValues(min: Double, max: Double) { - super.computeAxisValues(min: min, max: max) + let yMin = min + let yMax = max + + let labelCount = axis.labelCount + let range = abs(yMax - yMin) + + if labelCount == 0 || range <= 0 || range.isInfinite + { + axis.entries = [Double]() + axis.centeredEntries = [Double]() + return + } + + // Find out how much spacing (in y value space) between axis values + let rawInterval = range / Double(labelCount) + var interval = rawInterval.roundedToNextSignificant() + + // If granularity is enabled, then do not allow the interval to go below specified granularity. + // This is used to avoid repeated values when rounding values for display. + if axis.granularityEnabled + { + interval = interval < axis.granularity ? axis.granularity : interval + } + + // Normalize interval + let intervalMagnitude = pow(10.0, Double(Int(log10(interval)))).roundedToNextSignificant() + let intervalSigDigit = Int(interval / intervalMagnitude) + if intervalSigDigit > 5 + { + // Use one order of magnitude higher, to avoid intervals like 0.9 or 90 + interval = floor(10.0 * Double(intervalMagnitude)) + } + + var n = axis.centerAxisLabelsEnabled ? 1 : 0 + + // force label count + if axis.isForceLabelsEnabled + { + interval = Double(range) / Double(labelCount - 1) + + // Ensure stops contains at least n elements. + axis.entries.removeAll(keepingCapacity: true) + axis.entries.reserveCapacity(labelCount) + + var v = yMin + + for _ in 0 ..< labelCount + { + axis.entries.append(v) + v += interval + } + + n = labelCount + } + else + { + // no forced count + + var first = interval == 0.0 ? 0.0 : ceil(yMin / interval) * interval + + if axis.centerAxisLabelsEnabled + { + first -= interval + } + + let last = interval == 0.0 ? 0.0 : (floor(yMax / interval) * interval).nextUp + + if interval != 0.0 && last != first + { + for _ in stride(from: first, through: last, by: interval) + { + n += 1 + } + } + + // Ensure stops contains at least n elements. + axis.entries.removeAll(keepingCapacity: true) + axis.entries.reserveCapacity(labelCount) + + var f = first + var i = 0 + while i < n + { + if f == 0.0 + { + // Fix for IEEE negative zero case (Where value == -0.0, and 0.0 == -0.0) + f = 0.0 + } + + axis.entries.append(Double(f)) + + f += interval + i += 1 + } + } + + // set decimals + if interval < 1 + { + axis.decimals = Int(ceil(-log10(interval))) + } + else + { + axis.decimals = 0 + } + + if axis.centerAxisLabelsEnabled + { + axis.centeredEntries.reserveCapacity(n) + axis.centeredEntries.removeAll() + + let offset: Double = interval / 2.0 + + for i in 0 ..< n + { + axis.centeredEntries.append(axis.entries[i] + offset) + } + } computeSize() } @objc open func computeSize() { - guard let - xAxis = self.axis as? XAxis - else { return } - - let longest = xAxis.getLongestLabel() + let longest = axis.getLongestLabel() - let labelSize = longest.size(withAttributes: [NSAttributedStringKey.font: xAxis.labelFont]) + let labelSize = longest.size(withAttributes: [NSAttributedStringKey.font: axis.labelFont]) let labelWidth = labelSize.width let labelHeight = labelSize.height - let labelRotatedSize = labelSize.rotatedBy(degrees: xAxis.labelRotationAngle) + let labelRotatedSize = labelSize.rotatedBy(degrees: axis.labelRotationAngle) - xAxis.labelWidth = labelWidth - xAxis.labelHeight = labelHeight - xAxis.labelRotatedWidth = labelRotatedSize.width - xAxis.labelRotatedHeight = labelRotatedSize.height + axis.labelWidth = labelWidth + axis.labelHeight = labelHeight + axis.labelRotatedWidth = labelRotatedSize.width + axis.labelRotatedHeight = labelRotatedSize.height } - open override func renderAxisLabels(context: CGContext) + open func renderAxisLabels(context: CGContext) { - guard let xAxis = self.axis as? XAxis else { return } - - if !xAxis.isEnabled || !xAxis.isDrawLabelsEnabled + if !axis.isEnabled || !axis.isDrawLabelsEnabled { return } - let yOffset = xAxis.yOffset + let yOffset = axis.yOffset - if xAxis.labelPosition == .top + if axis.labelPosition == .top { drawLabels(context: context, pos: viewPortHandler.contentTop - yOffset, anchor: CGPoint(x: 0.5, y: 1.0)) } - else if xAxis.labelPosition == .topInside + else if axis.labelPosition == .topInside { - drawLabels(context: context, pos: viewPortHandler.contentTop + yOffset + xAxis.labelRotatedHeight, anchor: CGPoint(x: 0.5, y: 1.0)) + drawLabels(context: context, pos: viewPortHandler.contentTop + yOffset + axis.labelRotatedHeight, anchor: CGPoint(x: 0.5, y: 1.0)) } - else if xAxis.labelPosition == .bottom + else if axis.labelPosition == .bottom { drawLabels(context: context, pos: viewPortHandler.contentBottom + yOffset, anchor: CGPoint(x: 0.5, y: 0.0)) } - else if xAxis.labelPosition == .bottomInside + else if axis.labelPosition == .bottomInside { - drawLabels(context: context, pos: viewPortHandler.contentBottom - yOffset - xAxis.labelRotatedHeight, anchor: CGPoint(x: 0.5, y: 0.0)) + drawLabels(context: context, pos: viewPortHandler.contentBottom - yOffset - axis.labelRotatedHeight, anchor: CGPoint(x: 0.5, y: 0.0)) } else { // BOTH SIDED @@ -117,31 +236,29 @@ open class XAxisRenderer: AxisRendererBase private var _axisLineSegmentsBuffer = [CGPoint](repeating: CGPoint(), count: 2) - open override func renderAxisLine(context: CGContext) - { - guard let xAxis = self.axis as? XAxis else { return } - - if !xAxis.isEnabled || !xAxis.isDrawAxisLineEnabled + open func renderAxisLine(context: CGContext) + { + if !axis.isEnabled || !axis.isDrawAxisLineEnabled { return } context.saveGState() - context.setStrokeColor(xAxis.axisLineColor.cgColor) - context.setLineWidth(xAxis.axisLineWidth) - if xAxis.axisLineDashLengths != nil + context.setStrokeColor(axis.axisLineColor.cgColor) + context.setLineWidth(axis.axisLineWidth) + if axis.axisLineDashLengths != nil { - context.setLineDash(phase: xAxis.axisLineDashPhase, lengths: xAxis.axisLineDashLengths) + context.setLineDash(phase: axis.axisLineDashPhase, lengths: axis.axisLineDashLengths) } else { context.setLineDash(phase: 0.0, lengths: []) } - if xAxis.labelPosition == .top - || xAxis.labelPosition == .topInside - || xAxis.labelPosition == .bothSided + if axis.labelPosition == .top + || axis.labelPosition == .topInside + || axis.labelPosition == .bothSided { _axisLineSegmentsBuffer[0].x = viewPortHandler.contentLeft _axisLineSegmentsBuffer[0].y = viewPortHandler.contentTop @@ -150,9 +267,9 @@ open class XAxisRenderer: AxisRendererBase context.strokeLineSegments(between: _axisLineSegmentsBuffer) } - if xAxis.labelPosition == .bottom - || xAxis.labelPosition == .bottomInside - || xAxis.labelPosition == .bothSided + if axis.labelPosition == .bottom + || axis.labelPosition == .bottomInside + || axis.labelPosition == .bothSided { _axisLineSegmentsBuffer[0].x = viewPortHandler.contentLeft _axisLineSegmentsBuffer[0].y = viewPortHandler.contentBottom @@ -167,10 +284,7 @@ open class XAxisRenderer: AxisRendererBase /// draws the x-labels on the specified y-position @objc open func drawLabels(context: CGContext, pos: CGFloat, anchor: CGPoint) { - guard - let xAxis = self.axis as? XAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } #if os(OSX) let paraStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle @@ -179,12 +293,12 @@ open class XAxisRenderer: AxisRendererBase #endif paraStyle.alignment = .center - let labelAttrs: [NSAttributedStringKey : Any] = [NSAttributedStringKey.font: xAxis.labelFont, - NSAttributedStringKey.foregroundColor: xAxis.labelTextColor, + let labelAttrs: [NSAttributedStringKey : Any] = [NSAttributedStringKey.font: axis.labelFont, + NSAttributedStringKey.foregroundColor: axis.labelTextColor, NSAttributedStringKey.paragraphStyle: paraStyle] - let labelRotationAngleRadians = xAxis.labelRotationAngle.DEG2RAD + let labelRotationAngleRadians = axis.labelRotationAngle.DEG2RAD - let centeringEnabled = xAxis.isCenterAxisLabelsEnabled + let centeringEnabled = axis.isCenterAxisLabelsEnabled let valueToPixelMatrix = transformer.valueToPixelMatrix @@ -192,18 +306,18 @@ open class XAxisRenderer: AxisRendererBase var labelMaxSize = CGSize() - if xAxis.isWordWrapEnabled + if axis.isWordWrapEnabled { - labelMaxSize.width = xAxis.wordWrapWidthPercent * valueToPixelMatrix.a + labelMaxSize.width = axis.wordWrapWidthPercent * valueToPixelMatrix.a } - let entries = xAxis.entries + let entries = axis.entries for i in stride(from: 0, to: entries.count, by: 1) { if centeringEnabled { - position.x = CGFloat(xAxis.centeredEntries[i]) + position.x = CGFloat(axis.centeredEntries[i]) } else { @@ -215,14 +329,14 @@ open class XAxisRenderer: AxisRendererBase if viewPortHandler.isInBoundsX(position.x) { - let label = xAxis.valueFormatter?.stringForValue(xAxis.entries[i], axis: xAxis) ?? "" + let label = axis.valueFormatter?.stringForValue(axis.entries[i], axis: axis) ?? "" let labelns = label as NSString - if xAxis.isAvoidFirstLastClippingEnabled + if axis.isAvoidFirstLastClippingEnabled { // avoid clipping of the last - if i == xAxis.entryCount - 1 && xAxis.entryCount > 1 + if i == axis.entryCount - 1 && axis.entryCount > 1 { let width = labelns.boundingRect(with: labelMaxSize, options: .usesLineFragmentOrigin, attributes: labelAttrs, context: nil).size.width @@ -271,14 +385,11 @@ open class XAxisRenderer: AxisRendererBase angleRadians: angleRadians) } - open override func renderGridLines(context: CGContext) + open func renderGridLines(context: CGContext) { - guard - let xAxis = self.axis as? XAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - if !xAxis.isDrawGridLinesEnabled || !xAxis.isEnabled + if !axis.isDrawGridLinesEnabled || !axis.isEnabled { return } @@ -287,14 +398,14 @@ open class XAxisRenderer: AxisRendererBase defer { context.restoreGState() } context.clip(to: self.gridClippingRect) - context.setShouldAntialias(xAxis.gridAntialiasEnabled) - context.setStrokeColor(xAxis.gridColor.cgColor) - context.setLineWidth(xAxis.gridLineWidth) - context.setLineCap(xAxis.gridLineCap) + context.setShouldAntialias(axis.gridAntialiasEnabled) + context.setStrokeColor(axis.gridColor.cgColor) + context.setLineWidth(axis.gridLineWidth) + context.setLineCap(axis.gridLineCap) - if xAxis.gridLineDashLengths != nil + if axis.gridLineDashLengths != nil { - context.setLineDash(phase: xAxis.gridLineDashPhase, lengths: xAxis.gridLineDashLengths) + context.setLineDash(phase: axis.gridLineDashPhase, lengths: axis.gridLineDashLengths) } else { @@ -305,7 +416,7 @@ open class XAxisRenderer: AxisRendererBase var position = CGPoint(x: 0.0, y: 0.0) - let entries = xAxis.entries + let entries = axis.entries for i in stride(from: 0, to: entries.count, by: 1) { @@ -320,7 +431,7 @@ open class XAxisRenderer: AxisRendererBase @objc open var gridClippingRect: CGRect { var contentRect = viewPortHandler.contentRect - let dx = self.axis?.gridLineWidth ?? 0.0 + let dx = self.axis.gridLineWidth contentRect.origin.x -= dx / 2.0 contentRect.size.width += dx return contentRect @@ -338,14 +449,11 @@ open class XAxisRenderer: AxisRendererBase } } - open override func renderLimitLines(context: CGContext) + open func renderLimitLines(context: CGContext) { - guard - let xAxis = self.axis as? XAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - var limitLines = xAxis.limitLines + var limitLines = axis.limitLines if limitLines.count == 0 { diff --git a/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift b/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift index d2e0c29306..dc9580d4db 100644 --- a/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift +++ b/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift @@ -20,9 +20,9 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer { internal weak var chart: BarChartView? - @objc public init(viewPortHandler: ViewPortHandler, xAxis: XAxis?, transformer: Transformer?, chart: BarChartView) + @objc public init(viewPortHandler: ViewPortHandler, axis: XAxis, transformer: Transformer?, chart: BarChartView) { - super.init(viewPortHandler: viewPortHandler, xAxis: xAxis, transformer: transformer) + super.init(viewPortHandler: viewPortHandler, axis: axis, transformer: transformer) self.chart = chart } @@ -35,7 +35,7 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer { // calculate the starting and entry point of the y-labels (depending on // zoom / contentrect bounds) - if viewPortHandler.contentWidth > 10 && !viewPortHandler.isFullyZoomedOutX + if viewPortHandler.contentWidth > 10 && !viewPortHandler.isFullyZoomedOutY { let p1 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentBottom)) let p2 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) @@ -58,50 +58,42 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer open override func computeSize() { - guard let - xAxis = self.axis as? XAxis - else { return } - - let longest = xAxis.getLongestLabel() as NSString + let longest = axis.getLongestLabel() as NSString - let labelSize = longest.size(withAttributes: [NSAttributedStringKey.font: xAxis.labelFont]) + let labelSize = longest.size(withAttributes: [NSAttributedStringKey.font: axis.labelFont]) - let labelWidth = floor(labelSize.width + xAxis.xOffset * 3.5) + let labelWidth = floor(labelSize.width + axis.xOffset * 3.5) let labelHeight = labelSize.height - let labelRotatedSize = CGSize(width: labelSize.width, height: labelHeight).rotatedBy(degrees: xAxis.labelRotationAngle) + let labelRotatedSize = CGSize(width: labelSize.width, height: labelHeight).rotatedBy(degrees: axis.labelRotationAngle) - xAxis.labelWidth = labelWidth - xAxis.labelHeight = labelHeight - xAxis.labelRotatedWidth = round(labelRotatedSize.width + xAxis.xOffset * 3.5) - xAxis.labelRotatedHeight = round(labelRotatedSize.height) + axis.labelWidth = labelWidth + axis.labelHeight = labelHeight + axis.labelRotatedWidth = round(labelRotatedSize.width + axis.xOffset * 3.5) + axis.labelRotatedHeight = round(labelRotatedSize.height) } open override func renderAxisLabels(context: CGContext) { - guard - let xAxis = self.axis as? XAxis - else { return } - - if !xAxis.isEnabled || !xAxis.isDrawLabelsEnabled || chart?.data === nil + if !axis.isEnabled || !axis.isDrawLabelsEnabled || chart?.data === nil { return } - let xoffset = xAxis.xOffset + let xoffset = axis.xOffset - if xAxis.labelPosition == .top + if axis.labelPosition == .top { drawLabels(context: context, pos: viewPortHandler.contentRight + xoffset, anchor: CGPoint(x: 0.0, y: 0.5)) } - else if xAxis.labelPosition == .topInside + else if axis.labelPosition == .topInside { drawLabels(context: context, pos: viewPortHandler.contentRight - xoffset, anchor: CGPoint(x: 1.0, y: 0.5)) } - else if xAxis.labelPosition == .bottom + else if axis.labelPosition == .bottom { drawLabels(context: context, pos: viewPortHandler.contentLeft - xoffset, anchor: CGPoint(x: 1.0, y: 0.5)) } - else if xAxis.labelPosition == .bottomInside + else if axis.labelPosition == .bottomInside { drawLabels(context: context, pos: viewPortHandler.contentLeft + xoffset, anchor: CGPoint(x: 0.0, y: 0.5)) } @@ -115,21 +107,18 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer /// draws the x-labels on the specified y-position open override func drawLabels(context: CGContext, pos: CGFloat, anchor: CGPoint) { - guard - let xAxis = self.axis as? XAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - let labelFont = xAxis.labelFont - let labelTextColor = xAxis.labelTextColor - let labelRotationAngleRadians = xAxis.labelRotationAngle.DEG2RAD + let labelFont = axis.labelFont + let labelTextColor = axis.labelTextColor + let labelRotationAngleRadians = axis.labelRotationAngle.DEG2RAD - let centeringEnabled = xAxis.isCenterAxisLabelsEnabled + let centeringEnabled = axis.isCenterAxisLabelsEnabled // pre allocate to save performance (dont allocate in loop) var position = CGPoint(x: 0.0, y: 0.0) - for i in stride(from: 0, to: xAxis.entryCount, by: 1) + for i in stride(from: 0, to: axis.entryCount, by: 1) { // only fill x values @@ -137,18 +126,18 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer if centeringEnabled { - position.y = CGFloat(xAxis.centeredEntries[i]) + position.y = CGFloat(axis.centeredEntries[i]) } else { - position.y = CGFloat(xAxis.entries[i]) + position.y = CGFloat(axis.entries[i]) } transformer.pointValueToPixel(&position) if viewPortHandler.isInBoundsY(position.y) { - if let label = xAxis.valueFormatter?.stringForValue(xAxis.entries[i], axis: xAxis) + if let label = axis.valueFormatter?.stringForValue(axis.entries[i], axis: axis) { drawLabel( context: context, @@ -184,7 +173,7 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer open override var gridClippingRect: CGRect { var contentRect = viewPortHandler.contentRect - let dy = self.axis?.gridLineWidth ?? 0.0 + let dy = self.axis.gridLineWidth contentRect.origin.y -= dy / 2.0 contentRect.size.height += dy return contentRect @@ -205,29 +194,27 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer open override func renderAxisLine(context: CGContext) { - guard let xAxis = self.axis as? XAxis else { return } - - if !xAxis.isEnabled || !xAxis.isDrawAxisLineEnabled + if !axis.isEnabled || !axis.isDrawAxisLineEnabled { return } context.saveGState() - context.setStrokeColor(xAxis.axisLineColor.cgColor) - context.setLineWidth(xAxis.axisLineWidth) - if xAxis.axisLineDashLengths != nil + context.setStrokeColor(axis.axisLineColor.cgColor) + context.setLineWidth(axis.axisLineWidth) + if axis.axisLineDashLengths != nil { - context.setLineDash(phase: xAxis.axisLineDashPhase, lengths: xAxis.axisLineDashLengths) + context.setLineDash(phase: axis.axisLineDashPhase, lengths: axis.axisLineDashLengths) } else { context.setLineDash(phase: 0.0, lengths: []) } - if xAxis.labelPosition == .top || - xAxis.labelPosition == .topInside || - xAxis.labelPosition == .bothSided + if axis.labelPosition == .top || + axis.labelPosition == .topInside || + axis.labelPosition == .bothSided { context.beginPath() context.move(to: CGPoint(x: viewPortHandler.contentRight, y: viewPortHandler.contentTop)) @@ -235,9 +222,9 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer context.strokePath() } - if xAxis.labelPosition == .bottom || - xAxis.labelPosition == .bottomInside || - xAxis.labelPosition == .bothSided + if axis.labelPosition == .bottom || + axis.labelPosition == .bottomInside || + axis.labelPosition == .bothSided { context.beginPath() context.move(to: CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) @@ -250,12 +237,9 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer open override func renderLimitLines(context: CGContext) { - guard - let xAxis = self.axis as? XAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - var limitLines = xAxis.limitLines + var limitLines = axis.limitLines if limitLines.count == 0 { diff --git a/Source/Charts/Renderers/XAxisRendererRadarChart.swift b/Source/Charts/Renderers/XAxisRendererRadarChart.swift index ab57149cce..8b92a10b8b 100644 --- a/Source/Charts/Renderers/XAxisRendererRadarChart.swift +++ b/Source/Charts/Renderers/XAxisRendererRadarChart.swift @@ -20,28 +20,25 @@ open class XAxisRendererRadarChart: XAxisRenderer { @objc open weak var chart: RadarChartView? - @objc public init(viewPortHandler: ViewPortHandler, xAxis: XAxis?, chart: RadarChartView) + @objc public init(viewPortHandler: ViewPortHandler, axis: XAxis, chart: RadarChartView) { - super.init(viewPortHandler: viewPortHandler, xAxis: xAxis, transformer: nil) + super.init(viewPortHandler: viewPortHandler, axis: axis, transformer: nil) self.chart = chart } open override func renderAxisLabels(context: CGContext) { - guard let - xAxis = axis as? XAxis, - let chart = chart - else { return } + guard let chart = chart else { return } - if !xAxis.isEnabled || !xAxis.isDrawLabelsEnabled + if !axis.isEnabled || !axis.isDrawLabelsEnabled { return } - let labelFont = xAxis.labelFont - let labelTextColor = xAxis.labelTextColor - let labelRotationAngleRadians = xAxis.labelRotationAngle.RAD2DEG + let labelFont = axis.labelFont + let labelTextColor = axis.labelTextColor + let labelRotationAngleRadians = axis.labelRotationAngle.RAD2DEG let drawLabelAnchor = CGPoint(x: 0.5, y: 0.25) let sliceangle = chart.sliceAngle @@ -54,16 +51,16 @@ open class XAxisRendererRadarChart: XAxisRenderer for i in stride(from: 0, to: chart.data?.maxEntryCountSet?.entryCount ?? 0, by: 1) { - let label = xAxis.valueFormatter?.stringForValue(Double(i), axis: xAxis) ?? "" + let label = axis.valueFormatter?.stringForValue(Double(i), axis: axis) ?? "" let angle = (sliceangle * CGFloat(i) + chart.rotationAngle).truncatingRemainder(dividingBy: 360.0) - let p = ChartUtils.getPosition(center: center, dist: CGFloat(chart.yRange) * factor + xAxis.labelRotatedWidth / 2.0, angle: angle) + let p = ChartUtils.getPosition(center: center, dist: CGFloat(chart.yRange) * factor + axis.labelRotatedWidth / 2.0, angle: angle) drawLabel(context: context, formattedLabel: label, x: p.x, - y: p.y - xAxis.labelRotatedHeight / 2.0, + y: p.y - axis.labelRotatedHeight / 2.0, attributes: [NSAttributedStringKey.font: labelFont, NSAttributedStringKey.foregroundColor: labelTextColor], anchor: drawLabelAnchor, angleRadians: labelRotationAngleRadians) diff --git a/Source/Charts/Renderers/YAxisRenderer.swift b/Source/Charts/Renderers/YAxisRenderer.swift index e5b0802575..e8a684b49b 100644 --- a/Source/Charts/Renderers/YAxisRenderer.swift +++ b/Source/Charts/Renderers/YAxisRenderer.swift @@ -17,28 +17,34 @@ import CoreGraphics #endif @objc(ChartYAxisRenderer) -open class YAxisRenderer: AxisRendererBase +open class YAxisRenderer: NSObject, AxisRenderer { - @objc public init(viewPortHandler: ViewPortHandler, yAxis: YAxis?, transformer: Transformer?) + public let viewPortHandler: ViewPortHandler + public let axis: YAxis + public let transformer: Transformer? + + @objc public init(viewPortHandler: ViewPortHandler, axis: YAxis, transformer: Transformer?) { - super.init(viewPortHandler: viewPortHandler, transformer: transformer, axis: yAxis) + self.viewPortHandler = viewPortHandler + self.axis = axis + self.transformer = transformer + + super.init() } /// draws the y-axis labels to the screen - open override func renderAxisLabels(context: CGContext) + open func renderAxisLabels(context: CGContext) { - guard let yAxis = self.axis as? YAxis else { return } - - if !yAxis.isEnabled || !yAxis.isDrawLabelsEnabled + if !axis.isEnabled || !axis.isDrawLabelsEnabled { return } - let xoffset = yAxis.xOffset - let yoffset = yAxis.labelFont.lineHeight / 2.5 + yAxis.yOffset + let xoffset = axis.xOffset + let yoffset = axis.labelFont.lineHeight / 2.5 + axis.yOffset - let dependency = yAxis.axisDependency - let labelPosition = yAxis.labelPosition + let dependency = axis.axisDependency + let labelPosition = axis.labelPosition var xPos = CGFloat(0.0) @@ -76,33 +82,31 @@ open class YAxisRenderer: AxisRendererBase context: context, fixedPosition: xPos, positions: transformedPositions(), - offset: yoffset - yAxis.labelFont.lineHeight, + offset: yoffset - axis.labelFont.lineHeight, textAlign: textAlign) } - open override func renderAxisLine(context: CGContext) + open func renderAxisLine(context: CGContext) { - guard let yAxis = self.axis as? YAxis else { return } - - if !yAxis.isEnabled || !yAxis.drawAxisLineEnabled + if !axis.isEnabled || !axis.drawAxisLineEnabled { return } context.saveGState() - context.setStrokeColor(yAxis.axisLineColor.cgColor) - context.setLineWidth(yAxis.axisLineWidth) - if yAxis.axisLineDashLengths != nil + context.setStrokeColor(axis.axisLineColor.cgColor) + context.setLineWidth(axis.axisLineWidth) + if axis.axisLineDashLengths != nil { - context.setLineDash(phase: yAxis.axisLineDashPhase, lengths: yAxis.axisLineDashLengths) + context.setLineDash(phase: axis.axisLineDashPhase, lengths: axis.axisLineDashLengths) } else { context.setLineDash(phase: 0.0, lengths: []) } - if yAxis.axisDependency == .left + if axis.axisDependency == .left { context.beginPath() context.move(to: CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) @@ -128,19 +132,15 @@ open class YAxisRenderer: AxisRendererBase offset: CGFloat, textAlign: NSTextAlignment) { - guard - let yAxis = self.axis as? YAxis - else { return } + let labelFont = axis.labelFont + let labelTextColor = axis.labelTextColor - let labelFont = yAxis.labelFont - let labelTextColor = yAxis.labelTextColor - - let from = yAxis.isDrawBottomYLabelEntryEnabled ? 0 : 1 - let to = yAxis.isDrawTopYLabelEntryEnabled ? yAxis.entryCount : (yAxis.entryCount - 1) + let from = axis.isDrawBottomYLabelEntryEnabled ? 0 : 1 + let to = axis.isDrawTopYLabelEntryEnabled ? axis.entryCount : (axis.entryCount - 1) for i in stride(from: from, to: to, by: 1) { - let text = yAxis.getFormattedLabel(i) + let text = axis.getFormattedLabel(i) ChartUtils.drawText( context: context, @@ -151,18 +151,14 @@ open class YAxisRenderer: AxisRendererBase } } - open override func renderGridLines(context: CGContext) + open func renderGridLines(context: CGContext) { - guard let - yAxis = self.axis as? YAxis - else { return } - - if !yAxis.isEnabled + if !axis.isEnabled { return } - if yAxis.drawGridLinesEnabled + if axis.drawGridLinesEnabled { let positions = transformedPositions() @@ -170,14 +166,14 @@ open class YAxisRenderer: AxisRendererBase defer { context.restoreGState() } context.clip(to: self.gridClippingRect) - context.setShouldAntialias(yAxis.gridAntialiasEnabled) - context.setStrokeColor(yAxis.gridColor.cgColor) - context.setLineWidth(yAxis.gridLineWidth) - context.setLineCap(yAxis.gridLineCap) + context.setShouldAntialias(axis.gridAntialiasEnabled) + context.setStrokeColor(axis.gridColor.cgColor) + context.setLineWidth(axis.gridLineWidth) + context.setLineCap(axis.gridLineCap) - if yAxis.gridLineDashLengths != nil + if axis.gridLineDashLengths != nil { - context.setLineDash(phase: yAxis.gridLineDashPhase, lengths: yAxis.gridLineDashLengths) + context.setLineDash(phase: axis.gridLineDashPhase, lengths: axis.gridLineDashLengths) } else @@ -192,7 +188,7 @@ open class YAxisRenderer: AxisRendererBase } } - if yAxis.drawZeroLineEnabled + if axis.drawZeroLineEnabled { // draw zero line drawZeroLine(context: context) @@ -202,7 +198,7 @@ open class YAxisRenderer: AxisRendererBase @objc open var gridClippingRect: CGRect { var contentRect = viewPortHandler.contentRect - let dy = self.axis?.gridLineWidth ?? 0.0 + let dy = self.axis.gridLineWidth contentRect.origin.y -= dy / 2.0 contentRect.size.height += dy return contentRect @@ -220,17 +216,14 @@ open class YAxisRenderer: AxisRendererBase @objc open func transformedPositions() -> [CGPoint] { - guard - let yAxis = self.axis as? YAxis, - let transformer = self.transformer - else { return [CGPoint]() } + guard let transformer = self.transformer else { return [] } var positions = [CGPoint]() - positions.reserveCapacity(yAxis.entryCount) + positions.reserveCapacity(axis.entryCount) - let entries = yAxis.entries + let entries = axis.entries - for i in stride(from: 0, to: yAxis.entryCount, by: 1) + for i in stride(from: 0, to: axis.entryCount, by: 1) { positions.append(CGPoint(x: 0.0, y: entries[i])) } @@ -244,27 +237,26 @@ open class YAxisRenderer: AxisRendererBase @objc open func drawZeroLine(context: CGContext) { guard - let yAxis = self.axis as? YAxis, let transformer = self.transformer, - let zeroLineColor = yAxis.zeroLineColor + let zeroLineColor = axis.zeroLineColor else { return } context.saveGState() defer { context.restoreGState() } var clippingRect = viewPortHandler.contentRect - clippingRect.origin.y -= yAxis.zeroLineWidth / 2.0 - clippingRect.size.height += yAxis.zeroLineWidth + clippingRect.origin.y -= axis.zeroLineWidth / 2.0 + clippingRect.size.height += axis.zeroLineWidth context.clip(to: clippingRect) context.setStrokeColor(zeroLineColor.cgColor) - context.setLineWidth(yAxis.zeroLineWidth) + context.setLineWidth(axis.zeroLineWidth) let pos = transformer.pixelForValues(x: 0.0, y: 0.0) - - if yAxis.zeroLineDashLengths != nil + + if axis.zeroLineDashLengths != nil { - context.setLineDash(phase: yAxis.zeroLineDashPhase, lengths: yAxis.zeroLineDashLengths!) + context.setLineDash(phase: axis.zeroLineDashPhase, lengths: axis.zeroLineDashLengths!) } else { @@ -276,14 +268,11 @@ open class YAxisRenderer: AxisRendererBase context.drawPath(using: CGPathDrawingMode.stroke) } - open override func renderLimitLines(context: CGContext) + open func renderLimitLines(context: CGContext) { - guard - let yAxis = self.axis as? YAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - var limitLines = yAxis.limitLines + var limitLines = axis.limitLines if limitLines.count == 0 { @@ -347,46 +336,196 @@ open class YAxisRenderer: AxisRendererBase if l.labelPosition == .rightTop { ChartUtils.drawText(context: context, - text: label, - point: CGPoint( - x: viewPortHandler.contentRight - xOffset, - y: position.y - yOffset), - align: .right, - attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) + text: label, + point: CGPoint( + x: viewPortHandler.contentRight - xOffset, + y: position.y - yOffset), + align: .right, + attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) } else if l.labelPosition == .rightBottom { ChartUtils.drawText(context: context, - text: label, - point: CGPoint( - x: viewPortHandler.contentRight - xOffset, - y: position.y + yOffset - labelLineHeight), - align: .right, - attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) + text: label, + point: CGPoint( + x: viewPortHandler.contentRight - xOffset, + y: position.y + yOffset - labelLineHeight), + align: .right, + attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) } else if l.labelPosition == .leftTop { ChartUtils.drawText(context: context, - text: label, - point: CGPoint( - x: viewPortHandler.contentLeft + xOffset, - y: position.y - yOffset), - align: .left, - attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) + text: label, + point: CGPoint( + x: viewPortHandler.contentLeft + xOffset, + y: position.y - yOffset), + align: .left, + attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) } else { ChartUtils.drawText(context: context, - text: label, - point: CGPoint( - x: viewPortHandler.contentLeft + xOffset, - y: position.y + yOffset - labelLineHeight), - align: .left, - attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) + text: label, + point: CGPoint( + x: viewPortHandler.contentLeft + xOffset, + y: position.y + yOffset - labelLineHeight), + align: .left, + attributes: [NSAttributedStringKey.font: l.valueFont, NSAttributedStringKey.foregroundColor: l.valueTextColor]) } } } context.restoreGState() } + + @objc open func computeAxis(min: Double, max: Double, inverted: Bool) + { + var min = min, max = max + + if let transformer = self.transformer + { + // calculate the starting and entry point of the y-labels (depending on zoom / contentrect bounds) + if viewPortHandler.contentWidth > 10.0 && !viewPortHandler.isFullyZoomedOutY + { + let p1 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) + let p2 = transformer.valueForTouchPoint(CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentBottom)) + + if !inverted + { + min = Double(p2.y) + max = Double(p1.y) + } + else + { + min = Double(p1.y) + max = Double(p2.y) + } + } + } + + computeAxisValues(min: min, max: max) + } + + @objc open func computeAxisValues(min: Double, max: Double) + { + let yMin = min + let yMax = max + + let labelCount = axis.labelCount + let range = abs(yMax - yMin) + + if labelCount == 0 || range <= 0 || range.isInfinite + { + axis.entries = [Double]() + axis.centeredEntries = [Double]() + return + } + + // Find out how much spacing (in y value space) between axis values + let rawInterval = range / Double(labelCount) + var interval = rawInterval.roundedToNextSignificant() + + // If granularity is enabled, then do not allow the interval to go below specified granularity. + // This is used to avoid repeated values when rounding values for display. + if axis.granularityEnabled + { + interval = interval < axis.granularity ? axis.granularity : interval + } + + // Normalize interval + let intervalMagnitude = pow(10.0, Double(Int(log10(interval)))).roundedToNextSignificant() + let intervalSigDigit = Int(interval / intervalMagnitude) + if intervalSigDigit > 5 + { + // Use one order of magnitude higher, to avoid intervals like 0.9 or 90 + interval = floor(10.0 * Double(intervalMagnitude)) + } + + var n = axis.centerAxisLabelsEnabled ? 1 : 0 + + // force label count + if axis.isForceLabelsEnabled + { + interval = Double(range) / Double(labelCount - 1) + + // Ensure stops contains at least n elements. + axis.entries.removeAll(keepingCapacity: true) + axis.entries.reserveCapacity(labelCount) + + var v = yMin + + for _ in 0 ..< labelCount + { + axis.entries.append(v) + v += interval + } + + n = labelCount + } + else + { + // no forced count + + var first = interval == 0.0 ? 0.0 : ceil(yMin / interval) * interval + + if axis.centerAxisLabelsEnabled + { + first -= interval + } + + let last = interval == 0.0 ? 0.0 : (floor(yMax / interval) * interval).nextUp + + if interval != 0.0 && last != first + { + for _ in stride(from: first, through: last, by: interval) + { + n += 1 + } + } + + // Ensure stops contains at least n elements. + axis.entries.removeAll(keepingCapacity: true) + axis.entries.reserveCapacity(labelCount) + + var f = first + var i = 0 + while i < n + { + if f == 0.0 + { + // Fix for IEEE negative zero case (Where value == -0.0, and 0.0 == -0.0) + f = 0.0 + } + + axis.entries.append(Double(f)) + + f += interval + i += 1 + } + } + + // set decimals + if interval < 1 + { + axis.decimals = Int(ceil(-log10(interval))) + } + else + { + axis.decimals = 0 + } + + if axis.centerAxisLabelsEnabled + { + axis.centeredEntries.reserveCapacity(n) + axis.centeredEntries.removeAll() + + let offset: Double = interval / 2.0 + + for i in 0 ..< n + { + axis.centeredEntries.append(axis.entries[i] + offset) + } + } + } } diff --git a/Source/Charts/Renderers/YAxisRendererHorizontalBarChart.swift b/Source/Charts/Renderers/YAxisRendererHorizontalBarChart.swift index ba7c51f17f..163a74d146 100644 --- a/Source/Charts/Renderers/YAxisRendererHorizontalBarChart.swift +++ b/Source/Charts/Renderers/YAxisRendererHorizontalBarChart.swift @@ -18,9 +18,9 @@ import CoreGraphics open class YAxisRendererHorizontalBarChart: YAxisRenderer { - public override init(viewPortHandler: ViewPortHandler, yAxis: YAxis?, transformer: Transformer?) + public override init(viewPortHandler: ViewPortHandler, axis: YAxis, transformer: Transformer?) { - super.init(viewPortHandler: viewPortHandler, yAxis: yAxis, transformer: transformer) + super.init(viewPortHandler: viewPortHandler, axis: axis, transformer: transformer) } /// Computes the axis values. @@ -54,18 +54,16 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer /// draws the y-axis labels to the screen open override func renderAxisLabels(context: CGContext) { - guard let yAxis = axis as? YAxis else { return } - - if !yAxis.isEnabled || !yAxis.isDrawLabelsEnabled + if !axis.isEnabled || !axis.isDrawLabelsEnabled { return } - let lineHeight = yAxis.labelFont.lineHeight + let lineHeight = axis.labelFont.lineHeight let baseYOffset: CGFloat = 2.5 - let dependency = yAxis.axisDependency - let labelPosition = yAxis.labelPosition + let dependency = axis.axisDependency + let labelPosition = axis.labelPosition var yPos: CGFloat = 0.0 @@ -100,32 +98,30 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer context: context, fixedPosition: yPos, positions: transformedPositions(), - offset: yAxis.yOffset) + offset: axis.yOffset) } open override func renderAxisLine(context: CGContext) { - guard let yAxis = axis as? YAxis else { return } - - if !yAxis.isEnabled || !yAxis.drawAxisLineEnabled + if !axis.isEnabled || !axis.drawAxisLineEnabled { return } context.saveGState() - context.setStrokeColor(yAxis.axisLineColor.cgColor) - context.setLineWidth(yAxis.axisLineWidth) - if yAxis.axisLineDashLengths != nil + context.setStrokeColor(axis.axisLineColor.cgColor) + context.setLineWidth(axis.axisLineWidth) + if axis.axisLineDashLengths != nil { - context.setLineDash(phase: yAxis.axisLineDashPhase, lengths: yAxis.axisLineDashLengths) + context.setLineDash(phase: axis.axisLineDashPhase, lengths: axis.axisLineDashLengths) } else { context.setLineDash(phase: 0.0, lengths: []) } - if yAxis.axisDependency == .left + if axis.axisDependency == .left { context.beginPath() context.move(to: CGPoint(x: viewPortHandler.contentLeft, y: viewPortHandler.contentTop)) @@ -149,19 +145,15 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer positions: [CGPoint], offset: CGFloat) { - guard let - yAxis = axis as? YAxis - else { return } - - let labelFont = yAxis.labelFont - let labelTextColor = yAxis.labelTextColor + let labelFont = axis.labelFont + let labelTextColor = axis.labelTextColor - let from = yAxis.isDrawBottomYLabelEntryEnabled ? 0 : 1 - let to = yAxis.isDrawTopYLabelEntryEnabled ? yAxis.entryCount : (yAxis.entryCount - 1) + let from = axis.isDrawBottomYLabelEntryEnabled ? 0 : 1 + let to = axis.isDrawTopYLabelEntryEnabled ? axis.entryCount : (axis.entryCount - 1) for i in stride(from: from, to: to, by: 1) { - let text = yAxis.getFormattedLabel(i) + let text = axis.getFormattedLabel(i) ChartUtils.drawText( context: context, @@ -175,7 +167,7 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer open override var gridClippingRect: CGRect { var contentRect = viewPortHandler.contentRect - let dx = self.axis?.gridLineWidth ?? 0.0 + let dx = self.axis.gridLineWidth contentRect.origin.x -= dx / 2.0 contentRect.size.width += dx return contentRect @@ -193,17 +185,14 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer open override func transformedPositions() -> [CGPoint] { - guard - let yAxis = self.axis as? YAxis, - let transformer = self.transformer - else { return [CGPoint]() } + guard let transformer = self.transformer else { return [] } var positions = [CGPoint]() - positions.reserveCapacity(yAxis.entryCount) + positions.reserveCapacity(axis.entryCount) - let entries = yAxis.entries + let entries = axis.entries - for i in stride(from: 0, to: yAxis.entryCount, by: 1) + for i in stride(from: 0, to: axis.entryCount, by: 1) { positions.append(CGPoint(x: entries[i], y: 0.0)) } @@ -217,27 +206,26 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer open override func drawZeroLine(context: CGContext) { guard - let yAxis = self.axis as? YAxis, let transformer = self.transformer, - let zeroLineColor = yAxis.zeroLineColor + let zeroLineColor = axis.zeroLineColor else { return } context.saveGState() defer { context.restoreGState() } var clippingRect = viewPortHandler.contentRect - clippingRect.origin.x -= yAxis.zeroLineWidth / 2.0 - clippingRect.size.width += yAxis.zeroLineWidth + clippingRect.origin.x -= axis.zeroLineWidth / 2.0 + clippingRect.size.width += axis.zeroLineWidth context.clip(to: clippingRect) context.setStrokeColor(zeroLineColor.cgColor) - context.setLineWidth(yAxis.zeroLineWidth) + context.setLineWidth(axis.zeroLineWidth) let pos = transformer.pixelForValues(x: 0.0, y: 0.0) - if yAxis.zeroLineDashLengths != nil + if axis.zeroLineDashLengths != nil { - context.setLineDash(phase: yAxis.zeroLineDashPhase, lengths: yAxis.zeroLineDashLengths!) + context.setLineDash(phase: axis.zeroLineDashPhase, lengths: axis.zeroLineDashLengths!) } else { @@ -253,12 +241,9 @@ open class YAxisRendererHorizontalBarChart: YAxisRenderer open override func renderLimitLines(context: CGContext) { - guard - let yAxis = axis as? YAxis, - let transformer = self.transformer - else { return } + guard let transformer = self.transformer else { return } - var limitLines = yAxis.limitLines + var limitLines = axis.limitLines if limitLines.count <= 0 { diff --git a/Source/Charts/Renderers/YAxisRendererRadarChart.swift b/Source/Charts/Renderers/YAxisRendererRadarChart.swift index b23b987556..2c6ca48ed2 100644 --- a/Source/Charts/Renderers/YAxisRendererRadarChart.swift +++ b/Source/Charts/Renderers/YAxisRendererRadarChart.swift @@ -20,19 +20,15 @@ open class YAxisRendererRadarChart: YAxisRenderer { private weak var chart: RadarChartView? - @objc public init(viewPortHandler: ViewPortHandler, yAxis: YAxis?, chart: RadarChartView) + @objc public init(viewPortHandler: ViewPortHandler, axis: YAxis, chart: RadarChartView) { - super.init(viewPortHandler: viewPortHandler, yAxis: yAxis, transformer: nil) + super.init(viewPortHandler: viewPortHandler, axis: axis, transformer: nil) self.chart = chart } open override func computeAxisValues(min yMin: Double, max yMax: Double) { - guard let - axis = axis as? YAxis - else { return } - let labelCount = axis.labelCount let range = abs(yMax - yMin) @@ -45,7 +41,7 @@ open class YAxisRendererRadarChart: YAxisRenderer // Find out how much spacing (in yValue space) between axis values let rawInterval = range / Double(labelCount) - var interval = ChartUtils.roundToNextSignificant(number: Double(rawInterval)) + var interval = rawInterval.roundedToNextSignificant() // If granularity is enabled, then do not allow the interval to go below specified granularity. // This is used to avoid repeated values when rounding values for display. @@ -55,7 +51,7 @@ open class YAxisRendererRadarChart: YAxisRenderer } // Normalize interval - let intervalMagnitude = ChartUtils.roundToNextSignificant(number: pow(10.0, floor(log10(interval)))) + let intervalMagnitude = pow(10.0, floor(log10(interval))).roundedToNextSignificant() let intervalSigDigit = Int(interval / intervalMagnitude) if intervalSigDigit > 5 @@ -98,7 +94,7 @@ open class YAxisRendererRadarChart: YAxisRenderer first -= interval } - let last = interval == 0.0 ? 0.0 : ChartUtils.nextUp(floor(yMax / interval) * interval) + let last = interval == 0.0 ? 0.0 : (floor(yMax / interval) * interval).nextUp if interval != 0.0 { @@ -161,34 +157,31 @@ open class YAxisRendererRadarChart: YAxisRenderer open override func renderAxisLabels(context: CGContext) { - guard let - yAxis = axis as? YAxis, - let chart = chart - else { return } + guard let chart = chart else { return } - if !yAxis.isEnabled || !yAxis.isDrawLabelsEnabled + if !axis.isEnabled || !axis.isDrawLabelsEnabled { return } - let labelFont = yAxis.labelFont - let labelTextColor = yAxis.labelTextColor + let labelFont = axis.labelFont + let labelTextColor = axis.labelTextColor let center = chart.centerOffsets let factor = chart.factor - let labelLineHeight = yAxis.labelFont.lineHeight + let labelLineHeight = axis.labelFont.lineHeight - let from = yAxis.isDrawBottomYLabelEntryEnabled ? 0 : 1 - let to = yAxis.isDrawTopYLabelEntryEnabled ? yAxis.entryCount : (yAxis.entryCount - 1) + let from = axis.isDrawBottomYLabelEntryEnabled ? 0 : 1 + let to = axis.isDrawTopYLabelEntryEnabled ? axis.entryCount : (axis.entryCount - 1) for j in stride(from: from, to: to, by: 1) { - let r = CGFloat(yAxis.entries[j] - yAxis._axisMinimum) * factor + let r = CGFloat(axis.entries[j] - axis._axisMinimum) * factor let p = ChartUtils.getPosition(center: center, dist: r, angle: chart.rotationAngle) - let label = yAxis.getFormattedLabel(j) + let label = axis.getFormattedLabel(j) ChartUtils.drawText( context: context, @@ -205,12 +198,11 @@ open class YAxisRendererRadarChart: YAxisRenderer open override func renderLimitLines(context: CGContext) { guard - let yAxis = axis as? YAxis, let chart = chart, let data = chart.data else { return } - var limitLines = yAxis.limitLines + var limitLines = axis.limitLines if limitLines.count == 0 { diff --git a/Source/Charts/Utils/ChartUtils.swift b/Source/Charts/Utils/ChartUtils.swift index 8b0cec179c..b96b337729 100644 --- a/Source/Charts/Utils/ChartUtils.swift +++ b/Source/Charts/Utils/ChartUtils.swift @@ -47,53 +47,44 @@ extension CGSize { } } -open class ChartUtils -{ - private static var _defaultValueFormatter: IValueFormatter = ChartUtils.generateDefaultValueFormatter() +extension Double { + /// Rounds the number to the nearest multiple of it's order of magnitude, rounding away from zero if halfway. + func roundedToNextSignificant() -> Double { + guard + !isInfinite, + !isNaN, + self != 0 + else { return self } - internal class func roundToNextSignificant(number: Double) -> Double - { - if number.isInfinite || number.isNaN || number == 0 - { - return number - } - - let d = ceil(log10(number < 0.0 ? -number : number)) + let d = ceil(log10(self < 0 ? -self : self)) let pw = 1 - Int(d) - let magnitude = pow(Double(10.0), Double(pw)) - let shifted = round(number * magnitude) + let magnitude = pow(10.0, Double(pw)) + let shifted = (self * magnitude).rounded() return shifted / magnitude } - - internal class func decimals(_ number: Double) -> Int - { - if number.isNaN || number.isInfinite || number == 0.0 - { - return 0 - } - - let i = roundToNextSignificant(number: Double(number)) - - if i.isInfinite || i.isNaN - { - return 0 - } - + + var decimalPlaces: Int { + guard + !isNaN, + !isInfinite, + self != 0.0 + else { return 0 } + + let i = self.roundedToNextSignificant() + + guard + !i.isInfinite, + !i.isNaN + else { return 0 } + return Int(ceil(-log10(i))) + 2 } - - internal class func nextUp(_ number: Double) -> Double - { - if number.isInfinite || number.isNaN - { - return number - } - else - { - return number + Double.ulpOfOne - } - } - +} + +open class ChartUtils +{ + private static var _defaultValueFormatter: ValueFormatter = ChartUtils.generateDefaultValueFormatter() + /// Calculates the position around a center point, depending on the distance from the center, and the angle of the position around the center. internal class func getPosition(center: CGPoint, dist: CGFloat, angle: CGFloat) -> CGPoint { @@ -272,14 +263,14 @@ open class ChartUtils drawMultilineText(context: context, text: text, knownTextSize: rect.size, point: point, attributes: attributes, constrainedToSize: constrainedToSize, anchor: anchor, angleRadians: angleRadians) } - private class func generateDefaultValueFormatter() -> IValueFormatter + private class func generateDefaultValueFormatter() -> ValueFormatter { let formatter = DefaultValueFormatter(decimals: 1) return formatter } /// - returns: The default value formatter used for all chart components that needs a default - open class func defaultValueFormatter() -> IValueFormatter + open class func defaultValueFormatter() -> ValueFormatter { return _defaultValueFormatter } diff --git a/Source/Charts/Utils/ViewPortHandler.swift b/Source/Charts/Utils/ViewPortHandler.swift index db45d61cb3..4fde6eca50 100755 --- a/Source/Charts/Utils/ViewPortHandler.swift +++ b/Source/Charts/Utils/ViewPortHandler.swift @@ -332,7 +332,7 @@ open class ViewPortHandler: NSObject @objc open func setMinMaxScaleX(minScaleX: CGFloat, maxScaleX: CGFloat) { var newMin = minScaleX - var newMax = minScaleY + var newMax = maxScaleX if newMin < 1.0 { diff --git a/Tests/Charts/ChartUtilsTests.swift b/Tests/Charts/ChartUtilsTests.swift index d464a25220..9e5da3a07b 100644 --- a/Tests/Charts/ChartUtilsTests.swift +++ b/Tests/Charts/ChartUtilsTests.swift @@ -17,7 +17,7 @@ class ChartUtilsTests: XCTestCase { let number = Double.nan - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 0 XCTAssertEqual(expected, actual) @@ -27,7 +27,7 @@ class ChartUtilsTests: XCTestCase { let number = Double.infinity - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 0 XCTAssertEqual(expected, actual) @@ -37,7 +37,7 @@ class ChartUtilsTests: XCTestCase { let number = 0.0 - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 0 XCTAssertEqual(expected, actual) @@ -47,7 +47,7 @@ class ChartUtilsTests: XCTestCase { let number = Double.greatestFiniteMagnitude - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 0 XCTAssertEqual(expected, actual) @@ -57,7 +57,7 @@ class ChartUtilsTests: XCTestCase { let number = Double.leastNormalMagnitude - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 310 // Don't think this is supposed to be this value maybe 0? XCTAssertEqual(expected, actual) @@ -67,7 +67,7 @@ class ChartUtilsTests: XCTestCase { let number = 13.123123 - let actual = ChartUtils.decimals(number) + let actual = number.decimalPlaces let expected = 1 // Don't think this is supposed to be this value maybe 6? XCTAssertEqual(expected, actual) diff --git a/Tests/Charts/CombinedChartTests.swift b/Tests/Charts/CombinedChartTests.swift new file mode 100644 index 0000000000..269ced6880 --- /dev/null +++ b/Tests/Charts/CombinedChartTests.swift @@ -0,0 +1,104 @@ +// +// CombinedChartTests.swift +// ChartsTests +// +// Created by Xuan Liu on 14/10/2017. +// + +import XCTest +import FBSnapshotTestCase +@testable import Charts + +class CombinedChartTests: FBSnapshotTestCase +{ + var chart: CombinedChartView! + var lineDataSet: LineChartDataSet! + var barDataSet: BarChartDataSet! + + override func setUp() + { + super.setUp() + + // Set to `true` to re-capture all snapshots + self.recordMode = false + + // Sample data + let combinedData = CombinedChartData() + combinedData.barData = generateBarData() + combinedData.lineData = generateLineData() + chart = CombinedChartView(frame: CGRect(x: 0, y: 0, width: 480, height: 350)) + chart.backgroundColor = NSUIColor.clear + chart.leftAxis.axisMinimum = 0.0 + chart.rightAxis.axisMinimum = 0.0 + chart.data = combinedData + } + + func generateBarData() -> BarChartData + { + let values: [Double] = [8, 104, 81, 93, 52, 44, 97, 101, 75, 28, + 76, 25, 20, 13, 52, 44, 57, 23, 45, 91, + 99, 14, 84, 48, 40, 71, 106, 41, 45, 61] + + var entries: [ChartDataEntry] = Array() + + for (i, value) in values.enumerated() + { + entries.append(BarChartDataEntry(x: Double(i), y: value, icon: UIImage(named: "icon", in: Bundle(for: self.classForCoder), compatibleWith: nil))) + } + + barDataSet = BarChartDataSet(values: entries, label: "Bar chart unit test data") + barDataSet.drawIconsEnabled = false + + let data = BarChartData(dataSet: barDataSet) + data.barWidth = 0.85 + return data + } + + func generateLineData() -> LineChartData + { + let values: [Double] = [0, 254, 81, 93, 52, 44, 97, 101, 75, 28, + 76, 25, 20, 13, 52, 44, 57, 23, 45, 91, + 99, 14, 84, 48, 40, 71, 106, 41, 45, 61] + + var entries: [ChartDataEntry] = Array() + + for (i, value) in values.enumerated() + { + entries.append(ChartDataEntry(x: Double(i), y: value, icon: UIImage(named: "icon", in: Bundle(for: self.classForCoder), compatibleWith: nil))) + } + + lineDataSet = LineChartDataSet(values: entries, label: "Line chart unit test data") + lineDataSet.drawIconsEnabled = false + return LineChartData(dataSet: lineDataSet) + } + + override func tearDown() + { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testDefaultAxisDependency() + { + FBSnapshotVerifyView(chart, identifier: Snapshot.identifier(UIScreen.main.bounds.size), tolerance: Snapshot.tolerance) + } + + func testLeftRightAxisDependency() + { + lineDataSet.axisDependency = .left + barDataSet.axisDependency = .right + chart.data?.notifyDataChanged() + chart.notifyDataSetChanged() + FBSnapshotVerifyView(chart, identifier: Snapshot.identifier(UIScreen.main.bounds.size), tolerance: Snapshot.tolerance) + } + + func testAllRightAxisDependency() + { + lineDataSet.axisDependency = .right + barDataSet.axisDependency = .right + chart.data?.notifyDataChanged() + chart.notifyDataSetChanged() + FBSnapshotVerifyView(chart, identifier: Snapshot.identifier(UIScreen.main.bounds.size), tolerance: Snapshot.tolerance) + } +} + diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_iOS_375.0_667.0@2x.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_iOS_375.0_667.0@2x.png new file mode 100644 index 0000000000..c4dfe1df09 Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_iOS_375.0_667.0@2x.png differ diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_tvOS_1920.0_1080.0.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_tvOS_1920.0_1080.0.png new file mode 100644 index 0000000000..2e4743d92a Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_tvOS_1920.0_1080.0.png differ diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_iOS_375.0_667.0@2x.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_iOS_375.0_667.0@2x.png new file mode 100644 index 0000000000..c4dfe1df09 Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_iOS_375.0_667.0@2x.png differ diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_tvOS_1920.0_1080.0.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_tvOS_1920.0_1080.0.png new file mode 100644 index 0000000000..2e4743d92a Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_tvOS_1920.0_1080.0.png differ diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_iOS_375.0_667.0@2x.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_iOS_375.0_667.0@2x.png new file mode 100644 index 0000000000..2cd6c9332e Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_iOS_375.0_667.0@2x.png differ diff --git a/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_tvOS_1920.0_1080.0.png b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_tvOS_1920.0_1080.0.png new file mode 100644 index 0000000000..bd033e47b6 Binary files /dev/null and b/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_tvOS_1920.0_1080.0.png differ