Esempio n. 1
0
        private void DrawStyles()
        {
            UIStyleSet styleSet = selectedElement.style;

            List <UIStyleGroupContainer> baseStyles = styleSet.GetBaseStyles();

            float labelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 100;

            GUILayout.BeginHorizontal();
            DrawStyleStateButton("Hover", StyleState.Hover);
            DrawStyleStateButton("Focus", StyleState.Focused);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            DrawStyleStateButton("Active", StyleState.Active);
            GUILayout.EndHorizontal();

            GUILayout.Space(10f);

            EditorGUIUtility.labelWidth = labelWidth;

            EditorGUILayout.BeginVertical();

            UIStyleGroup instanceStyle = styleSet.GetInstanceStyle();

            if (instanceStyle != null)
            {
                s_Content.text = "Instance";
                DrawStyleGroup("", instanceStyle);
            }

//
            for (int i = 0; i < baseStyles.Count; i++)
            {
                UIStyleGroupContainer container = baseStyles[i];
                s_Content.text = $"{container.name} ({container.styleType.ToString()})";

                for (int j = 0; j < container.groups.Length; j++)
                {
                    DrawStyleGroup(container.styleSheet?.path, container.groups[j]);
                }
            }

            ListPool <UIStyleGroupContainer> .Release(ref baseStyles);

            GUILayout.EndVertical();
        }
Esempio n. 2
0
        protected static float ResolveHeightMeasurement(UIElement element, Rect viewport, UIMeasurement measurement)
        {
            switch (measurement.unit)
            {
            case UIMeasurementUnit.Unset:
                return(0);

            case UIMeasurementUnit.Pixel:
                return(measurement.value);

            case UIMeasurementUnit.Content:
                return(element.layoutResult.actualSize.height * measurement.value);

            case UIMeasurementUnit.BlockSize:
                if (element.parent.style.PreferredHeight.IsContentBased)
                {
                    return(0f);
                }

                return(Mathf.Max(0, element.parent.layoutResult.AllocatedHeight * measurement.value));

            case UIMeasurementUnit.ViewportWidth:
                return(Mathf.Max(0, viewport.width * measurement.value));

            case UIMeasurementUnit.ViewportHeight:
                return(Mathf.Max(0, viewport.height * measurement.value));

            case UIMeasurementUnit.ParentContentArea:
                UIStyleSet parentStyle = element.parent.style;
                if (parentStyle.PreferredHeight.IsContentBased)
                {
                    return(0f);
                }

                return(Mathf.Max(0, (element.parent.layoutResult.AllocatedHeight
                                     - ResolveFixedWidth(element, viewport, parentStyle.PaddingTop)
                                     - ResolveFixedWidth(element, viewport, parentStyle.PaddingBottom)
                                     - ResolveFixedWidth(element, viewport, parentStyle.BorderBottom)
                                     - ResolveFixedWidth(element, viewport, parentStyle.BorderTop))));

            case UIMeasurementUnit.Em:
                return(Mathf.Max(0, element.style.TextFontAsset.faceInfo.PointSize * measurement.value));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 3
0
        private void DrawComputedStyle()
        {
            // style name, style value, source

            UIStyleSet style = selectedElement.style;

            bool isSet = (selectedElement.flags & UIElementFlags.DebugLayout) != 0;

            if (EditorGUILayout.ToggleLeft("Debug Layout", isSet))
            {
                selectedElement.flags |= UIElementFlags.DebugLayout;
            }
            else
            {
                selectedElement.flags &= ~UIElementFlags.DebugLayout;
            }

            GUILayout.BeginHorizontal();
            DrawStyleStateButton("Hover", StyleState.Hover);
            DrawStyleStateButton("Focus", StyleState.Focused);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            DrawStyleStateButton("Active", StyleState.Active);
            GUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            showAllComputedStyles = EditorGUILayout.ToggleLeft("Show All", showAllComputedStyles);
            showComputedSources   = EditorGUILayout.ToggleLeft("Show Sources", showComputedSources);
            EditorGUILayout.EndHorizontal();

            GUILayout.Space(4);
            searchString = searchField.OnGUI(searchString);
            GUILayout.Space(4);

            List <ValueTuple <string, StyleProperty> > properties = ListPool <ValueTuple <string, StyleProperty> > .Get();

            string lowerSearch = searchString.ToLower();

            for (int i = 0; i < StyleUtil.StylePropertyIdList.Length; i++)
            {
                StylePropertyId propertyId = StyleUtil.StylePropertyIdList[i];
                if (showAllComputedStyles || style.IsDefined(propertyId))
                {
                    if (!string.IsNullOrEmpty(searchString))
                    {
                        string propertyName = StyleUtil.GetPropertyName(propertyId).ToLower();
                        if (!propertyName.Contains(lowerSearch))
                        {
                            continue;
                        }
                    }

                    string        source   = selectedElement.style.GetPropertySource(propertyId);
                    StyleProperty property = selectedElement.style.GetComputedStyleProperty(propertyId);
                    if (!property.hasValue)
                    {
                        property = DefaultStyleValues_Generated.GetPropertyValue(propertyId);
                    }

                    properties.Add(ValueTuple.Create(source, property));
                }
            }

            if (properties.Count == 0)
            {
                return;
            }

            if (showComputedSources)
            {
                properties.Sort(
                    (a, b) => {
                    if (a.Item1 == b.Item1)
                    {
                        return(0);
                    }

                    bool aInstance = a.Item1.Contains("Instance");
                    bool bInstance = b.Item1.Contains("Instance");

                    if (aInstance && bInstance)
                    {
                        return(string.Compare(a.Item1, b.Item1, StringComparison.Ordinal));
                    }

                    if (aInstance)
                    {
                        return(-1);
                    }
                    if (bInstance)
                    {
                        return(1);
                    }

                    bool aDefault = a.Item1.Contains("Default");
                    bool bDefault = b.Item1.Contains("Default");

                    if (aDefault && bDefault)
                    {
                        return(string.Compare(a.Item1, b.Item1, StringComparison.Ordinal));
                    }

                    if (aDefault)
                    {
                        return(1);
                    }
                    if (bDefault)
                    {
                        return(-1);
                    }

                    return(string.Compare(a.Item1, b.Item1, StringComparison.Ordinal));
                });

                GUILayout.Space(10);
                string currentSource = properties[0].Item1;
                EditorGUILayout.LabelField(currentSource);
                int start = 0;
                for (int i = 0; i < properties.Count; i++)
                {
                    if (currentSource != properties[i].Item1)
                    {
                        properties.Sort(start, i - start, s_StyleCompare);

                        for (int j = start; j < i; j++)
                        {
                            DrawStyleProperty(properties[j].Item2, false);
                        }

                        start         = i;
                        currentSource = properties[i].Item1;
                        GUILayout.Space(10);
                        EditorGUILayout.LabelField(currentSource);
                    }
                }

                properties.Sort(start, properties.Count - start, s_StyleCompare);
                for (int j = start; j < properties.Count; j++)
                {
                    DrawStyleProperty(properties[j].Item2, false);
                }
            }
            else
            {
                properties.Sort(0, properties.Count - 1, s_StyleCompare);
                for (int i = 0; i < properties.Count; i++)
                {
                    DrawStyleProperty(properties[i].Item2, false);
                }
            }
        }
Esempio n. 4
0
 internal UIStyleSetStateProxy(UIStyleSet styleSet, StyleState state)
 {
     this.m_StyleSet = styleSet;
     this.state      = state;
 }