/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
using UnityEngine.UI;
namespace XCharts
{
///
/// 系列数据项的图标
///
[System.Serializable]
public class IconStyle : SubComponent
{
public enum Layer
{
UnderLabel,
AboveLabel
}
[SerializeField] private bool m_Show;
[SerializeField] private Layer m_Layer;
[SerializeField] private Sprite m_Sprite;
[SerializeField] private Color m_Color = Color.white;
[SerializeField] private float m_Width = 40;
[SerializeField] private float m_Height = 40;
[SerializeField] private Vector3 m_Offset;
///
/// Whether the data icon is show.
/// 是否显示图标。
///
public bool show { get { return m_Show; } set { m_Show = value; UpdateIcon(); } }
///
/// 显示在上层还是在下层。
///
public Layer layer { get { return m_Layer; } set { m_Layer = value; } }
///
/// The image of icon.
/// 图标的图片。
///
public Sprite sprite { get { return m_Sprite; } set { m_Sprite = value; } }
///
/// 图标颜色。
///
public Color color { get { return m_Color; } set { m_Color = value; } }
///
/// 图标宽。
///
public float width { get { return m_Width; } set { m_Width = value; } }
///
/// 图标高。
///
public float height { get { return m_Height; } set { m_Height = value; } }
///
/// 图标偏移。
///
public Vector3 offset { get { return m_Offset; } set { m_Offset = value; } }
public Image image { get; private set; }
public RectTransform rect { get; private set; }
public void SetImage(Image image)
{
this.image = image;
if (image)
{
rect = image.GetComponent();
if (m_Layer == Layer.UnderLabel)
rect.SetSiblingIndex(0);
else
rect.SetSiblingIndex(image.transform.childCount - 1);
UpdateIcon();
}
}
public void SetActive(bool flag)
{
if (image)
{
ChartHelper.SetActive(image.gameObject, flag);
}
}
public void UpdateIcon()
{
if (image == null) return;
if (show)
{
ChartHelper.SetActive(image.gameObject, true);
image.sprite = m_Sprite;
image.color = m_Color;
rect.sizeDelta = new Vector2(m_Width, m_Height);
image.transform.localPosition = m_Offset;
}
else
{
ChartHelper.SetActive(image.gameObject, false);
}
}
}
}