108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | |||
|  | using UnityEngine; | |||
|  | 
 | |||
|  | #pragma warning disable CS0660, CS0661 | |||
|  | 
 | |||
|  | namespace TMPro | |||
|  | { | |||
|  |     /// <summary> | |||
|  |     /// The SingleSubstitutionRecord defines the substitution of a single glyph by another. | |||
|  |     /// </summary> | |||
|  |     [Serializable] | |||
|  |     public struct SingleSubstitutionRecord | |||
|  |     { | |||
|  |         // | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// The MultipleSubstitutionRecord defines the substitution of a single glyph by multiple glyphs. | |||
|  |     /// </summary> | |||
|  |     [Serializable] | |||
|  |     public struct MultipleSubstitutionRecord | |||
|  |     { | |||
|  |         /// <summary> | |||
|  |         /// The index of the target glyph being substituted. | |||
|  |         /// </summary> | |||
|  |         public uint targetGlyphID { get { return m_TargetGlyphID; } set { m_TargetGlyphID = value; } } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// Array that contains the index of the glyphs replacing the single target glyph. | |||
|  |         /// </summary> | |||
|  |         public uint[] substituteGlyphIDs { get { return m_SubstituteGlyphIDs; } set { m_SubstituteGlyphIDs = value; } } | |||
|  | 
 | |||
|  |         // ============================================= | |||
|  |         // Private backing fields for public properties. | |||
|  |         // ============================================= | |||
|  | 
 | |||
|  |         [SerializeField] | |||
|  |         private uint m_TargetGlyphID; | |||
|  | 
 | |||
|  |         [SerializeField] | |||
|  |         private uint[] m_SubstituteGlyphIDs; | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// The AlternateSubstitutionRecord defines the substitution of a single glyph by several potential alternative glyphs. | |||
|  |     /// </summary> | |||
|  |     [Serializable] | |||
|  |     public struct AlternateSubstitutionRecord | |||
|  |     { | |||
|  | 
 | |||
|  |     } | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// The LigatureSubstitutionRecord defines the substitution of multiple glyphs by a single glyph. | |||
|  |     /// </summary> | |||
|  |     [Serializable] | |||
|  |     public struct LigatureSubstitutionRecord | |||
|  |     { | |||
|  |         /// <summary> | |||
|  |         /// Array that contains the index of the glyphs being substituted. | |||
|  |         /// </summary> | |||
|  |         public uint[] componentGlyphIDs { get { return m_ComponentGlyphIDs; } set { m_ComponentGlyphIDs = value; } } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// The index of the replacement glyph. | |||
|  |         /// </summary> | |||
|  |         public uint ligatureGlyphID { get { return m_LigatureGlyphID; } set { m_LigatureGlyphID = value; } } | |||
|  | 
 | |||
|  |         // ============================================= | |||
|  |         // Private backing fields for public properties. | |||
|  |         // ============================================= | |||
|  | 
 | |||
|  |         [SerializeField] | |||
|  |         private uint[] m_ComponentGlyphIDs; | |||
|  | 
 | |||
|  |         [SerializeField] | |||
|  |         private uint m_LigatureGlyphID; | |||
|  |          | |||
|  |         // ============================================= | |||
|  |         // Operator overrides | |||
|  |         // ============================================= | |||
|  | 
 | |||
|  |         public static bool operator==(LigatureSubstitutionRecord lhs, LigatureSubstitutionRecord rhs) | |||
|  |         { | |||
|  |             if (lhs.ligatureGlyphID != rhs.m_LigatureGlyphID) | |||
|  |                 return false; | |||
|  |              | |||
|  |             int lhsComponentCount = lhs.m_ComponentGlyphIDs.Length; | |||
|  |              | |||
|  |             if (lhsComponentCount != rhs.m_ComponentGlyphIDs.Length) | |||
|  |                 return false; | |||
|  | 
 | |||
|  |             for (int i = 0; i < lhsComponentCount; i++) | |||
|  |             { | |||
|  |                 if (lhs.m_ComponentGlyphIDs[i] != rhs.m_ComponentGlyphIDs[i]) | |||
|  |                     return false; | |||
|  |             } | |||
|  | 
 | |||
|  |             return true; | |||
|  |         } | |||
|  | 
 | |||
|  |         public static bool operator!=(LigatureSubstitutionRecord lhs, LigatureSubstitutionRecord rhs) | |||
|  |         { | |||
|  |             return !(lhs == rhs); | |||
|  |         } | |||
|  |     } | |||
|  | } |