234 lines
7.4 KiB
C#
234 lines
7.4 KiB
C#
|
using System;
|
||
|
using UnityEngine;
|
||
|
#if dUI_TextMeshPro
|
||
|
using TMPro;
|
||
|
#endif
|
||
|
|
||
|
namespace XCharts.Runtime
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Settings related to text.
|
||
|
/// |文本的相关设置。
|
||
|
/// </summary>
|
||
|
[Serializable]
|
||
|
public class TextStyle : ChildComponent
|
||
|
{
|
||
|
[SerializeField] private bool m_Show = true;
|
||
|
[SerializeField] private Font m_Font;
|
||
|
[SerializeField] private bool m_AutoWrap = false;
|
||
|
[SerializeField] private bool m_AutoAlign = true;
|
||
|
[SerializeField] private float m_Rotate = 0;
|
||
|
[SerializeField] private bool m_AutoColor = false;
|
||
|
[SerializeField] private Color m_Color = Color.clear;
|
||
|
[SerializeField] private int m_FontSize = 0;
|
||
|
[SerializeField] private FontStyle m_FontStyle = FontStyle.Normal;
|
||
|
[SerializeField] private float m_LineSpacing = 1f;
|
||
|
[SerializeField] private TextAnchor m_Alignment = TextAnchor.MiddleCenter;
|
||
|
#if dUI_TextMeshPro
|
||
|
[SerializeField] private TMP_FontAsset m_TMPFont;
|
||
|
[SerializeField] private FontStyles m_TMPFontStyle = FontStyles.Normal;
|
||
|
[SerializeField] private TextAlignmentOptions m_TMPAlignment = TextAlignmentOptions.Left;
|
||
|
#endif
|
||
|
public bool show
|
||
|
{
|
||
|
get { return m_Show; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// Rotation of text.
|
||
|
/// |文本的旋转。
|
||
|
/// [default: `0f`]
|
||
|
/// </summary>
|
||
|
public float rotate
|
||
|
{
|
||
|
get { return m_Rotate; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_Rotate, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 是否开启自动颜色。当开启时,会自动设置颜色。
|
||
|
/// </summary>
|
||
|
public bool autoColor
|
||
|
{
|
||
|
get { return m_AutoColor; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_AutoColor, value)) SetAllDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// the color of text.
|
||
|
/// |文本的颜色。
|
||
|
/// [default: `Color.clear`]
|
||
|
/// </summary>
|
||
|
public Color color
|
||
|
{
|
||
|
get { return m_Color; }
|
||
|
set { if (PropertyUtil.SetColor(ref m_Color, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// the font of text. When `null`, the theme's font is used by default.
|
||
|
/// |文本字体。
|
||
|
/// [default: null]
|
||
|
/// </summary>
|
||
|
public Font font
|
||
|
{
|
||
|
get { return m_Font; }
|
||
|
set { if (PropertyUtil.SetClass(ref m_Font, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// font size.
|
||
|
/// |文本字体大小。
|
||
|
/// [default: 18]
|
||
|
/// </summary>
|
||
|
public int fontSize
|
||
|
{
|
||
|
get { return m_FontSize; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_FontSize, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// font style.
|
||
|
/// |文本字体的风格。
|
||
|
/// [default: FontStyle.Normal]
|
||
|
/// </summary>
|
||
|
public FontStyle fontStyle
|
||
|
{
|
||
|
get { return m_FontStyle; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_FontStyle, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// text line spacing.
|
||
|
/// |行间距。
|
||
|
/// [default: 1f]
|
||
|
/// </summary>
|
||
|
public float lineSpacing
|
||
|
{
|
||
|
get { return m_LineSpacing; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_LineSpacing, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 是否自动换行。
|
||
|
/// </summary>
|
||
|
public bool autoWrap
|
||
|
{
|
||
|
get { return m_AutoWrap; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_AutoWrap, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 文本是否让系统自动选对齐方式。为false时才会用alignment。
|
||
|
/// </summary>
|
||
|
public bool autoAlign
|
||
|
{
|
||
|
get { return m_AutoAlign; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_AutoAlign, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 对齐方式。
|
||
|
/// </summary>
|
||
|
public TextAnchor alignment
|
||
|
{
|
||
|
get { return m_Alignment; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_Alignment, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
#if dUI_TextMeshPro
|
||
|
/// <summary>
|
||
|
/// the font of textmeshpro.
|
||
|
/// |TextMeshPro字体。
|
||
|
/// </summary>
|
||
|
public TMP_FontAsset tmpFont
|
||
|
{
|
||
|
get { return m_TMPFont; }
|
||
|
set { if (PropertyUtil.SetClass(ref m_TMPFont, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// the font style of TextMeshPro.
|
||
|
/// |TextMeshPro字体类型。
|
||
|
/// </summary>
|
||
|
public FontStyles tmpFontStyle
|
||
|
{
|
||
|
get { return m_TMPFontStyle; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_TMPFontStyle, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// the text alignment of TextMeshPro.
|
||
|
/// |TextMeshPro字体对齐方式。
|
||
|
/// </summary>
|
||
|
public TextAlignmentOptions tmpFontStyle
|
||
|
{
|
||
|
get { return m_TMPAlignment; }
|
||
|
set { if (PropertyUtil.SetStruct(ref m_TMPAlignment, value)) SetComponentDirty(); }
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
public TextStyle() { }
|
||
|
|
||
|
public TextStyle(int fontSize)
|
||
|
{
|
||
|
this.fontSize = fontSize;
|
||
|
}
|
||
|
|
||
|
public TextStyle(int fontSize, FontStyle fontStyle)
|
||
|
{
|
||
|
this.fontSize = fontSize;
|
||
|
this.fontStyle = fontStyle;
|
||
|
}
|
||
|
|
||
|
public TextStyle(int fontSize, FontStyle fontStyle, Color color)
|
||
|
{
|
||
|
this.fontSize = fontSize;
|
||
|
this.fontStyle = fontStyle;
|
||
|
this.color = color;
|
||
|
}
|
||
|
|
||
|
public TextStyle(int fontSize, FontStyle fontStyle, Color color, int rorate)
|
||
|
{
|
||
|
this.fontSize = fontSize;
|
||
|
this.fontStyle = fontStyle;
|
||
|
this.color = color;
|
||
|
this.rotate = rotate;
|
||
|
}
|
||
|
|
||
|
public void Copy(TextStyle textStyle)
|
||
|
{
|
||
|
font = textStyle.font;
|
||
|
rotate = textStyle.rotate;
|
||
|
color = textStyle.color;
|
||
|
fontSize = textStyle.fontSize;
|
||
|
fontStyle = textStyle.fontStyle;
|
||
|
lineSpacing = textStyle.lineSpacing;
|
||
|
alignment = textStyle.alignment;
|
||
|
autoWrap = textStyle.autoWrap;
|
||
|
autoAlign = textStyle.autoAlign;
|
||
|
#if dUI_TextMeshPro
|
||
|
m_TMPFont = textStyle.tmpFont;
|
||
|
m_TMPFontStyle = textStyle.tmpFontStyle;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
public void UpdateAlignmentByLocation(Location location)
|
||
|
{
|
||
|
#if dUI_TextMeshPro
|
||
|
m_TMPAlignment = location.runtimeTMPTextAlignment;
|
||
|
#else
|
||
|
m_Alignment = location.runtimeTextAlignment;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
public Color GetColor(Color defaultColor)
|
||
|
{
|
||
|
if (ChartHelper.IsClearColor(color))
|
||
|
return defaultColor;
|
||
|
else
|
||
|
return color;
|
||
|
}
|
||
|
|
||
|
public int GetFontSize(ComponentTheme defaultTheme)
|
||
|
{
|
||
|
if (fontSize == 0)
|
||
|
return defaultTheme.fontSize;
|
||
|
else
|
||
|
return fontSize;
|
||
|
}
|
||
|
|
||
|
public TextAnchor GetAlignment(TextAnchor defaultAlignment)
|
||
|
{
|
||
|
return m_AutoAlign ? defaultAlignment : alignment;
|
||
|
}
|
||
|
}
|
||
|
}
|