using System;
using UnityEngine;
using UnityEngine.TextCore;
namespace TMPro
{
    public enum TextElementType : byte
    {
        Character   = 0x1,
        Sprite      = 0x2,
    }
    /// 
    /// Base class for all text elements like Character and SpriteCharacter.
    /// 
    [Serializable]
    public class TMP_TextElement
    {
        /// 
        /// The type of text element which can be a character or sprite.
        /// 
        public TextElementType elementType { get { return m_ElementType; } }
        /// 
        /// The unicode value (code point) of the character.
        /// 
        public uint unicode { get { return m_Unicode; } set { m_Unicode = value; } }
        /// 
        /// The Text Asset to which this Text Element belongs.
        /// 
        public TMP_Asset textAsset { get { return m_TextAsset; } set { m_TextAsset = value; } }
        /// 
        /// The glyph used by this text element.
        /// 
        public Glyph glyph { get { return m_Glyph; } set { m_Glyph = value; } }
        /// 
        /// The index of the glyph used by this text element.
        /// 
        public uint glyphIndex { get { return m_GlyphIndex; } set { m_GlyphIndex = value; } }
        /// 
        /// The relative scale of the character.
        /// 
        public float scale { get { return m_Scale; } set { m_Scale = value; } }
        // =============================================
        // Private backing fields for public properties.
        // =============================================
        [SerializeField]
        internal TextElementType m_ElementType;
        [SerializeField]
        internal uint m_Unicode;
        internal TMP_Asset m_TextAsset;
        internal Glyph m_Glyph;
        [SerializeField]
        internal uint m_GlyphIndex;
        [SerializeField]
        internal float m_Scale;
    }
}