123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- /************************************************/
- /* */
- /* Copyright (c) 2018 - 2021 monitor1394 */
- /* https://github.com/monitor1394 */
- /* */
- /************************************************/
- using System;
- using UnityEngine;
- using UnityEngine.UI;
- namespace XCharts
- {
- public class LegendItem
- {
- private int m_Index;
- private string m_Name;
- private string m_LegendName;
- private GameObject m_GameObject;
- private Button m_Button;
- private Image m_Icon;
- private ChartText m_Text;
- private Image m_TextBackground;
- private RectTransform m_Rect;
- private RectTransform m_IconRect;
- private RectTransform m_TextRect;
- private RectTransform m_TextBackgroundRect;
- private float m_Gap = 0f;
- private float m_LabelPaddingLeftRight = 0f;
- private float m_LabelPaddingTopBottom = 0f;
- private bool m_LabelAutoSize = true;
- public int index { get { return m_Index; } set { m_Index = value; } }
- public string name { get { return m_Name; } set { m_Name = value; } }
- public string legendName { get { return m_LegendName; } set { m_LegendName = value; } }
- public GameObject gameObject { get { return m_GameObject; } }
- public Button button { get { return m_Button; } }
- public float width
- {
- get
- {
- if (m_IconRect && m_TextBackgroundRect)
- {
- return m_IconRect.sizeDelta.x + m_Gap + m_TextBackgroundRect.sizeDelta.x;
- }
- else
- {
- return 0;
- }
- }
- }
- public float height
- {
- get
- {
- if (m_IconRect && m_TextBackgroundRect)
- {
- return Mathf.Max(m_IconRect.sizeDelta.y, m_TextBackgroundRect.sizeDelta.y);
- }
- else
- {
- return 0;
- }
- }
- }
- public void SetObject(GameObject obj)
- {
- m_GameObject = obj;
- m_Button = obj.GetComponent<Button>();
- m_Rect = obj.GetComponent<RectTransform>();
- m_Icon = obj.transform.Find("icon").gameObject.GetComponent<Image>();
- m_TextBackground = obj.transform.Find("content").gameObject.GetComponent<Image>();
- m_Text = new ChartText(obj);
- m_IconRect = m_Icon.gameObject.GetComponent<RectTransform>();
- m_TextRect = m_Text.gameObject.GetComponent<RectTransform>();
- m_TextBackgroundRect = m_TextBackground.gameObject.GetComponent<RectTransform>();
- }
- public void SetButton(Button button)
- {
- m_Button = button;
- }
- public void SetIcon(Image icon)
- {
- m_Icon = icon;
- }
- public void SetText(ChartText text)
- {
- m_Text = text;
- }
- public void SetTextBackground(Image image)
- {
- m_TextBackground = image;
- }
- public void SetIconSize(float width, float height)
- {
- if (m_IconRect)
- {
- m_IconRect.sizeDelta = new Vector2(width, height);
- }
- }
- public Rect GetIconRect()
- {
- if (m_GameObject && m_IconRect)
- {
- var pos = m_GameObject.transform.localPosition;
- var sizeDelta = m_IconRect.sizeDelta;
- var y = pos.y - (m_Rect.sizeDelta.y - sizeDelta.y) / 2 - sizeDelta.y;
- return new Rect(pos.x, y, m_IconRect.sizeDelta.x, m_IconRect.sizeDelta.y);
- }
- else
- {
- return Rect.zero;
- }
- }
- public Color GetIconColor()
- {
- if (m_Icon) return m_Icon.color;
- else return Color.clear;
- }
- public void SetIconColor(Color color)
- {
- if (m_Icon)
- {
- m_Icon.color = color;
- }
- }
- public void SetIconImage(Sprite image)
- {
- if (m_Icon)
- {
- m_Icon.sprite = image;
- }
- }
- public void SetIconActive(bool active)
- {
- if (m_Icon)
- {
- m_Icon.gameObject.SetActive(active);
- }
- }
- public void SetContentColor(Color color)
- {
- if (m_Text != null)
- {
- m_Text.SetColor(color);
- }
- }
- public void SetContentBackgroundColor(Color color)
- {
- if (m_TextBackground)
- {
- m_TextBackground.color = color;
- }
- }
- public void SetContentPosition(Vector3 offset)
- {
- m_Gap = offset.x;
- if (m_TextBackgroundRect)
- {
- var posX = m_IconRect.sizeDelta.x + offset.x;
- m_TextBackgroundRect.anchoredPosition3D = new Vector3(posX, offset.y, 0);
- }
- }
- public bool SetContent(string content)
- {
- if (m_Text != null && !m_Text.GetText().Equals(content))
- {
- m_Text.SetText(content);
- if (m_LabelAutoSize)
- {
- var newSize = string.IsNullOrEmpty(content) ? Vector2.zero :
- new Vector2(m_Text.GetPreferredWidth(), m_Text.GetPreferredHeight());
- var sizeChange = newSize.x != m_TextRect.sizeDelta.x || newSize.y != m_TextRect.sizeDelta.y;
- if (sizeChange)
- {
- m_TextRect.sizeDelta = newSize;
- m_TextRect.anchoredPosition3D = new Vector3(m_LabelPaddingLeftRight, 0);
- m_TextBackgroundRect.sizeDelta = new Vector2(m_Text.GetPreferredWidth() + m_LabelPaddingLeftRight * 2,
- m_Text.GetPreferredHeight() + m_LabelPaddingTopBottom * 2 - 4);
- m_Rect.sizeDelta = new Vector3(width, height);
- }
- return sizeChange;
- }
- }
- return false;
- }
- public void SetPosition(Vector3 position)
- {
- if (m_GameObject)
- {
- m_GameObject.transform.localPosition = position;
- }
- }
- public void SetActive(bool active)
- {
- if (m_GameObject)
- {
- m_GameObject.SetActive(active);
- }
- }
- }
- }
|