146 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
| namespace SRF.UI
 | |
| {
 | |
|     using Internal;
 | |
|     using UnityEngine;
 | |
|     using UnityEngine.EventSystems;
 | |
|     using UnityEngine.UI;
 | |
| 
 | |
|     [RequireComponent(typeof (RectTransform))]
 | |
|     [ExecuteInEditMode]
 | |
|     [AddComponentMenu(ComponentMenuPaths.ContentFitText)]
 | |
|     public class ContentFitText : UIBehaviour, ILayoutElement
 | |
|     {
 | |
|         public SRText CopySource;
 | |
|         public Vector2 Padding;
 | |
| 
 | |
|         public float minWidth
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetMinWidth(CopySource.rectTransform) + Padding.x;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public float preferredWidth
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetPreferredWidth(CopySource.rectTransform) + Padding.x;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public float flexibleWidth
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetFlexibleWidth(CopySource.rectTransform);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public float minHeight
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform) + Padding.y;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public float preferredHeight
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetPreferredHeight(CopySource.rectTransform) + Padding.y;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public float flexibleHeight
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (CopySource == null)
 | |
|                 {
 | |
|                     return -1f;
 | |
|                 }
 | |
|                 return LayoutUtility.GetFlexibleHeight(CopySource.rectTransform);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public int layoutPriority
 | |
|         {
 | |
|             get { return 0; }
 | |
|         }
 | |
| 
 | |
|         public void CalculateLayoutInputHorizontal()
 | |
|         {
 | |
|             CopySource.CalculateLayoutInputHorizontal();
 | |
|         }
 | |
| 
 | |
|         public void CalculateLayoutInputVertical()
 | |
|         {
 | |
|             CopySource.CalculateLayoutInputVertical();
 | |
|         }
 | |
| 
 | |
|         protected override void OnEnable()
 | |
|         {
 | |
|             SetDirty();
 | |
|             CopySource.LayoutDirty += CopySourceOnLayoutDirty;
 | |
|         }
 | |
| 
 | |
|         private void CopySourceOnLayoutDirty(SRText srText)
 | |
|         {
 | |
|             SetDirty();
 | |
|         }
 | |
| 
 | |
|         protected override void OnTransformParentChanged()
 | |
|         {
 | |
|             SetDirty();
 | |
|         }
 | |
| 
 | |
|         protected override void OnDisable()
 | |
|         {
 | |
|             CopySource.LayoutDirty -= CopySourceOnLayoutDirty;
 | |
|             SetDirty();
 | |
|         }
 | |
| 
 | |
|         protected override void OnDidApplyAnimationProperties()
 | |
|         {
 | |
|             SetDirty();
 | |
|         }
 | |
| 
 | |
|         protected override void OnBeforeTransformParentChanged()
 | |
|         {
 | |
|             SetDirty();
 | |
|         }
 | |
| 
 | |
|         protected void SetDirty()
 | |
|         {
 | |
|             if (!IsActive())
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             LayoutRebuilder.MarkLayoutForRebuild(transform as RectTransform);
 | |
|         }
 | |
|     }
 | |
| }
 |