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); } } }