예제 #1
0
        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;
                }
            }
        }
예제 #2
0
        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));
        }
예제 #3
0
        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;
                }
            }
        }