< Summary

Class:DCL.Components.UIText
Assembly:MainScripts
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UI/UIText/UIText.cs
Covered lines:60
Uncovered lines:10
Coverable lines:70
Total lines:177
Line coverage:85.7% (60 of 70)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Model()0%110100%
GetDataFromJSON(...)0%110100%
UIText()0%110100%
GetClassId()0%2100%
AttachTo(...)0%2100%
DetachFrom(...)0%2100%
ApplyChanges()0%4.054085.71%
RefreshDCLSize(...)0%6.016093.75%
Dispose()0%6200%
ApplyModelChanges(...)0%1010096.55%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UI/UIText/UIText.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.Helpers;
 3using DCL.Models;
 4using System.Collections;
 5using System.Collections.Generic;
 6using Newtonsoft.Json;
 7using TMPro;
 8using UnityEngine;
 9
 10namespace DCL.Components
 11{
 12    public class UIText : UIShape<UITextReferencesContainer, UIText.Model>
 13    {
 14        [System.Serializable]
 15        new public class Model : UIShape.Model
 16        {
 17            public float outlineWidth = 0f;
 1618            public Color outlineColor = Color.white;
 19
 1620            public Color color = Color.white;
 21
 22            public bool adaptWidth = false;
 23            public bool adaptHeight = false;
 1624            public float fontSize = 100f;
 25            public bool fontAutoSize = false;
 26
 27            public string font;
 1628            public string value = "";
 29            public float lineSpacing = 0f;
 30            public int lineCount = 0;
 1631            public string hTextAlign = "bottom";
 1632            public string vTextAlign = "left";
 33            public bool textWrapping = false;
 34
 35            public float shadowBlur = 0f;
 36            public float shadowOffsetX = 0f;
 37            public float shadowOffsetY = 0f;
 1638            public Color shadowColor = new Color(1, 1, 1);
 39
 40            public float paddingTop = 0f;
 41            public float paddingRight = 0f;
 42            public float paddingBottom = 0f;
 43            public float paddingLeft = 0f;
 44
 45            public override BaseModel GetDataFromJSON(string json)
 46            {
 447                Model model = Utils.SafeFromJson<Model>(json);
 448                return model;
 49            }
 50        }
 51
 452        public override string referencesContainerPrefabName => "UIText";
 53
 1254        public UIText() { model = new Model(); }
 55
 056        public override int GetClassId() { return (int) CLASS_ID.UI_TEXT_SHAPE; }
 57
 058        public override void AttachTo(IDCLEntity entity, System.Type overridenAttachedType = null) { Debug.LogError("Abo
 59
 060        public override void DetachFrom(IDCLEntity entity, System.Type overridenAttachedType = null) { }
 61
 62        public override IEnumerator ApplyChanges(BaseModel newModel)
 63        {
 864            model = (Model) newModel;
 65
 66            // We avoid using even yield break; as this instruction skips a frame and we don't want that.
 867            if ( !DCLFont.IsFontLoaded(scene, model.font) )
 68            {
 069                yield return DCLFont.WaitUntilFontIsReady(scene, model.font);
 70            }
 71
 872            DCLFont.SetFontFromComponent(scene, model.font, referencesContainer.text);
 873            ApplyModelChanges(referencesContainer.text, model);
 874            MarkLayoutDirty();
 875        }
 76
 77        protected override void RefreshDCLSize(RectTransform parentTransform = null)
 78        {
 1679            if (parentTransform == null)
 80            {
 081                parentTransform = referencesContainer.GetComponentInParent<RectTransform>();
 82            }
 83
 1684            if (model.adaptWidth || model.adaptHeight)
 285                referencesContainer.text.ForceMeshUpdate(false);
 86
 1687            Bounds b = referencesContainer.text.textBounds;
 88
 89            float width, height;
 90
 1691            if (model.adaptWidth)
 92            {
 293                width = b.size.x;
 294            }
 95            else
 96            {
 1497                width = model.width.GetScaledValue(parentTransform.rect.width);
 98            }
 99
 16100            if (model.adaptHeight)
 101            {
 2102                height = b.size.y;
 2103            }
 104            else
 105            {
 14106                height = model.height.GetScaledValue(parentTransform.rect.height);
 107            }
 108
 16109            referencesContainer.layoutElementRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
 16110            referencesContainer.layoutElementRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
 16111        }
 112
 113        public override void Dispose()
 114        {
 0115            if (referencesContainer != null)
 0116                Utils.SafeDestroy(referencesContainer.gameObject);
 117
 0118            base.Dispose();
 0119        }
 120
 121        private static void ApplyModelChanges(TMP_Text text, Model model)
 122        {
 8123            text.text = model.value;
 124
 8125            text.color = new Color(model.color.r, model.color.g, model.color.b, model.visible ? model.opacity : 0);
 8126            text.fontSize = (int) model.fontSize;
 8127            text.richText = true;
 8128            text.overflowMode = TextOverflowModes.Overflow;
 8129            text.enableAutoSizing = model.fontAutoSize;
 130
 8131            text.margin =
 132                new Vector4
 133                (
 134                    (int) model.paddingLeft,
 135                    (int) model.paddingTop,
 136                    (int) model.paddingRight,
 137                    (int) model.paddingBottom
 138                );
 139
 8140            text.alignment = TextShape.GetAlignment(model.vTextAlign, model.hTextAlign);
 8141            text.lineSpacing = model.lineSpacing;
 142
 8143            if (model.lineCount != 0)
 144            {
 2145                text.maxVisibleLines = Mathf.Max(model.lineCount, 1);
 2146            }
 147            else
 148            {
 6149                text.maxVisibleLines = int.MaxValue;
 150            }
 151
 8152            text.enableWordWrapping = model.textWrapping && !text.enableAutoSizing;
 153
 8154            if (model.shadowOffsetX != 0 || model.shadowOffsetY != 0)
 155            {
 2156                text.fontSharedMaterial.EnableKeyword("UNDERLAY_ON");
 2157                text.fontSharedMaterial.SetColor("_UnderlayColor", model.shadowColor);
 2158                text.fontSharedMaterial.SetFloat("_UnderlaySoftness", model.shadowBlur);
 2159            }
 6160            else if (text.fontSharedMaterial.IsKeywordEnabled("UNDERLAY_ON"))
 161            {
 2162                text.fontSharedMaterial.DisableKeyword("UNDERLAY_ON");
 163            }
 164
 8165            if (model.outlineWidth > 0f)
 166            {
 1167                text.fontSharedMaterial.EnableKeyword("OUTLINE_ON");
 1168                text.outlineWidth = model.outlineWidth;
 1169                text.outlineColor = model.outlineColor;
 1170            }
 7171            else if (text.fontSharedMaterial.IsKeywordEnabled("OUTLINE_ON"))
 172            {
 0173                text.fontSharedMaterial.DisableKeyword("OUTLINE_ON");
 174            }
 7175        }
 176    }
 177}