Esempio n. 1
0
        public static Color32 GetLineColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
        {
            Color32 color     = ChartConst.clearColor32;
            var     lineStyle = GetLineStyle(serie, serieData);

            if (highlight)
            {
                var itemStyleEmphasis = GetItemStyleEmphasis(serie, null);
                if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.color))
                {
                    color = itemStyleEmphasis.color;
                    ChartHelper.SetColorOpacity(ref color, itemStyleEmphasis.opacity);
                    return(color);
                }
            }
            if (!ChartHelper.IsClearColor(lineStyle.color))
            {
                color = lineStyle.color;
            }
            else if (!ChartHelper.IsClearColor(serie.itemStyle.color))
            {
                color = serie.itemStyle.GetColor();
            }
            if (ChartHelper.IsClearColor(color))
            {
                color = theme.GetColor(index);
            }
            ChartHelper.SetColorOpacity(ref color, lineStyle.opacity);
            if (highlight)
            {
                color = ChartHelper.GetHighlightColor(color);
            }
            return(color);
        }
Esempio n. 2
0
        public static Color32 GetAreaToColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight)
        {
            Color32 color     = ChartConst.clearColor32;
            var     areaStyle = GetAreaStyle(serie, serieData);

            if (areaStyle == null || !areaStyle.show)
            {
                return(color);
            }
            if (!ChartHelper.IsClearColor(areaStyle.toColor))
            {
                color = areaStyle.toColor;
            }
            else if (!ChartHelper.IsClearColor(serie.itemStyle.toColor))
            {
                color = serie.itemStyle.toColor;
            }
            else
            {
                color = theme.GetColor(index);
            }
            ChartHelper.SetColorOpacity(ref color, areaStyle.opacity);
            if (highlight)
            {
                if (!ChartHelper.IsClearColor(areaStyle.highlightToColor))
                {
                    color = areaStyle.highlightToColor;
                }
                else
                {
                    color = ChartHelper.GetHighlightColor(color);
                }
            }
            return(color);
        }
Esempio n. 3
0
        public static Color32 GetItemColor0(Serie serie, SerieData serieData, ThemeStyle theme, bool highlight, Color32 defaultColor)
        {
            if (serie == null)
            {
                return(ChartConst.clearColor32);
            }

            ItemStyle itemStyle = null;

            if (highlight)
            {
                itemStyle = GetItemStyleEmphasis(serie, serieData);
            }
            if (itemStyle == null)
            {
                itemStyle = GetItemStyle(serie, serieData);
            }

            var color = ChartHelper.IsClearColor(itemStyle.color0) ?
                        defaultColor :
                        itemStyle.color0;

            if (highlight)
            {
                color = ChartHelper.GetHighlightColor(color);
            }

            ChartHelper.SetColorOpacity(ref color, itemStyle.opacity);
            return(color);
        }
Esempio n. 4
0
        public static Color32 GetItemColor(Serie serie, SerieData serieData, ThemeStyle theme, int index, bool highlight, bool opacity = true)
        {
            if (serie == null)
            {
                return(ChartConst.clearColor32);
            }

            ItemStyle itemStyle = null;

            if (highlight)
            {
                itemStyle = GetItemStyleEmphasis(serie, serieData);
            }
            if (itemStyle == null)
            {
                itemStyle = GetItemStyle(serie, serieData);
            }

            var color = ChartHelper.IsClearColor(itemStyle.color) ?
                        theme.GetColor(index) :
                        itemStyle.color;

            if (highlight)
            {
                color = ChartHelper.GetHighlightColor(color);
            }
            if (opacity)
            {
                ChartHelper.SetColorOpacity(ref color, itemStyle.opacity);
            }
            return(color);
        }
Esempio n. 5
0
        public static Color32 GetItemBackgroundColor(Serie serie, SerieData serieData, ThemeStyle theme, int index,
                                                     bool highlight, bool useDefault = true)
        {
            var color = ChartConst.clearColor32;

            if (highlight)
            {
                var itemStyleEmphasis = GetItemStyleEmphasis(serie, serieData);
                if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.backgroundColor))
                {
                    color = itemStyleEmphasis.backgroundColor;
                    ChartHelper.SetColorOpacity(ref color, itemStyleEmphasis.opacity);
                    return(color);
                }
            }
            var itemStyle = GetItemStyle(serie, serieData);

            if (!ChartHelper.IsClearColor(itemStyle.backgroundColor))
            {
                color = itemStyle.backgroundColor;
                if (highlight)
                {
                    color = ChartHelper.GetHighlightColor(color);
                }
                ChartHelper.SetColorOpacity(ref color, itemStyle.opacity);
                return(color);
            }
            else if (useDefault)
            {
                color = theme.GetColor(index);
                if (highlight)
                {
                    color = ChartHelper.GetHighlightColor(color);
                }
                color.a = 50;
                return(color);
            }
            return(color);
        }
Esempio n. 6
0
        private void DrawHeatmapSerie(VertexHelper vh, Heatmap serie)
        {
            if (serie.animation.HasFadeOut())
            {
                return;
            }
            XAxis xAxis;
            YAxis yAxis;

            if (!chart.TryGetChartComponent <XAxis>(out xAxis, serie.xAxisIndex))
            {
                return;
            }
            if (!chart.TryGetChartComponent <YAxis>(out yAxis, serie.yAxisIndex))
            {
                return;
            }
            m_SerieGrid       = chart.GetChartComponent <GridCoord>(xAxis.gridIndex);
            xAxis.boundaryGap = true;
            yAxis.boundaryGap = true;
            var visualMap         = chart.GetVisualMapOfSerie(serie);
            var emphasisItemStyle = serie.emphasisItemStyle;
            var xCount            = xAxis.data.Count;
            var yCount            = yAxis.data.Count;
            var xWidth            = m_SerieGrid.context.width / xCount;
            var yWidth            = m_SerieGrid.context.height / yCount;

            var zeroX       = m_SerieGrid.context.x;
            var zeroY       = m_SerieGrid.context.y;
            var rangeMin    = visualMap.rangeMin;
            var rangeMax    = visualMap.rangeMax;
            var color       = chart.theme.GetColor(serie.index);
            var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0;
            var rectWid     = xWidth - 2 * borderWidth;
            var rectHig     = yWidth - 2 * borderWidth;

            var borderColor = serie.itemStyle.opacity > 0 ?
                              serie.itemStyle.borderColor :
                              ChartConst.clearColor32;

            borderColor.a = (byte)(borderColor.a * serie.itemStyle.opacity);

            var borderToColor = serie.itemStyle.opacity > 0 ?
                                serie.itemStyle.borderToColor :
                                ChartConst.clearColor32;

            borderToColor.a = (byte)(borderToColor.a * serie.itemStyle.opacity);

            serie.context.dataPoints.Clear();
            serie.animation.InitProgress(0, xCount);
            var animationIndex     = serie.animation.GetCurrIndex();
            var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
            var dataChanging       = false;

            serie.containerIndex       = m_SerieGrid.index;
            serie.containterInstanceId = m_SerieGrid.instanceId;
            for (int n = 0; n < serie.dataCount; n++)
            {
                var serieData = serie.data[n];
                serieData.index = n;
                var i         = (int)serieData.GetData(0);
                var j         = (int)serieData.GetData(1);
                var dimension = VisualMapHelper.GetDimension(visualMap, serieData.data.Count);
                if (serie.IsIgnoreValue(serieData, dimension))
                {
                    serie.context.dataPoints.Add(Vector3.zero);
                    continue;
                }
                var value = serieData.GetCurrData(dimension, dataChangeDuration, yAxis.inverse,
                                                  yAxis.context.minValue, yAxis.context.maxValue);
                if (serieData.IsDataChanged())
                {
                    dataChanging = true;
                }
                var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth,
                                      zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth);
                serie.context.dataPoints.Add(pos);
                serieData.context.position = pos;

                serieData.context.canShowLabel = false;
                serieData.context.rect         = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
                if (value == 0)
                {
                    continue;
                }
                if ((value < rangeMin && rangeMin != visualMap.min) ||
                    (value > rangeMax && rangeMax != visualMap.max))
                {
                    continue;
                }
                if (!visualMap.IsInSelectedValue(value))
                {
                    continue;
                }
                if (animationIndex >= 0 && i > animationIndex)
                {
                    continue;
                }
                color = visualMap.GetColor(value);
                if (serieData.context.highlight)
                {
                    color = ChartHelper.GetHighlightColor(color);
                }

                serieData.context.canShowLabel = true;
                serieData.context.color        = color;

                var highlight = (serieData.context.highlight) ||
                                visualMap.context.pointerIndex > 0;

                //UGL.DrawRectangle(vh, pos, rectWid / 2, rectHig / 2, color);
                UGL.DrawRectangle(vh, serieData.context.rect, color);

                if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor))
                {
                    UGL.DrawBorder(vh, pos, rectWid, rectHig, borderWidth, borderColor, borderToColor);
                }
                if (visualMap.hoverLink && highlight && emphasisItemStyle != null &&
                    emphasisItemStyle.borderWidth > 0)
                {
                    var emphasisBorderWidth = emphasisItemStyle.borderWidth;
                    var emphasisBorderColor = emphasisItemStyle.opacity > 0 ?
                                              emphasisItemStyle.borderColor : ChartConst.clearColor32;
                    var emphasisBorderToColor = emphasisItemStyle.opacity > 0 ?
                                                emphasisItemStyle.borderToColor : ChartConst.clearColor32;
                    UGL.DrawBorder(vh, pos, rectWid, rectHig, emphasisBorderWidth, emphasisBorderColor,
                                   emphasisBorderToColor);
                }
            }
            if (!serie.animation.IsFinish())
            {
                serie.animation.CheckProgress(xCount);
                chart.RefreshPainter(serie);
            }
            if (dataChanging)
            {
                chart.RefreshPainter(serie);
            }
        }