protected void PickLine(Vector3 mouse, out int pickedIndex, out int pickedType, out object selectionData) { pickedIndex = -1; pickedType = -1; selectionData = null; for (int i = 0; i < mCandles.Count; i++) { CandleChartData.CandleValue candle = mCandles[i]; float max = (float)candle.Max; float min = (float)candle.Min; float start = (float)candle.Start; float end = (float)(candle.Start + candle.Duration); float mid = (start + end) * 0.5f; Rect high = ChartCommon.RectFromCenter(mid, (float)mCandleSettings.LineThickness, max, (float)candle.High); Rect low = ChartCommon.RectFromCenter(mid, (float)mCandleSettings.LineThickness, (float)candle.Low, min); if (high.Contains(mouse)) { selectionData = high; pickedType = 0; pickedIndex = i; return; } if (low.Contains(mouse)) { selectionData = low; pickedType = 2; pickedIndex = i; return; } } }
protected Rect RectFromIndex(int index, int type, Rect Default) { if (index >= mCandles.Count) { return(Default); } CandleChartData.CandleValue candle = mCandles[index]; float max = (float)candle.Max; float min = (float)candle.Min; float start = (float)candle.Start; float end = (float)(candle.Start + candle.Duration); float mid = (start + end) * 0.5f; if (type == 0) { return(ChartCommon.RectFromCenter(mid, (float)mCandleSettings.LineThickness, max, (float)candle.High)); } if (type == 2) { return(ChartCommon.RectFromCenter(mid, (float)mCandleSettings.LineThickness, (float)candle.Low, min)); } return(ChartCommon.RectFromCenter(mid, (float)(mCandleSettings.CandleThicknessMultiplier * candle.Duration), min, max)); }
protected void PickBody(Vector3 mouse, out int pickedIndex, out int pickedType, out object selectionData) { pickedIndex = -1; pickedType = -1; selectionData = null; for (int i = 0; i < mCandles.Count; i++) { CandleChartData.CandleValue candle = mCandles[i]; float max = (float)candle.Max; float min = (float)candle.Min; float start = (float)candle.Start; float end = (float)(candle.Start + candle.Duration); float mid = (start + end) * 0.5f; Rect Body = ChartCommon.RectFromCenter(mid, (float)(mCandleSettings.CandleThicknessMultiplier * candle.Duration), min, max); if (Body.Contains(mouse)) { selectionData = Body; pickedType = 1; pickedIndex = i; return; } } }