Exemple #1
0
    public void IntProperties_OverrideBaseStyle()
    {
        Action <string, string, string> TestBody = (setFnName, propName, defaultName) => {
            MockApplication view = MockApplication.Setup <StyleSetTestThing>();

            StyleSetTestThing root = (StyleSetTestThing)view.RootElement;

            UIStyle baseStyle = new UIStyle();
            SetStyleValue(baseStyle, propName, 5);

            CallMethod(root.style, setFnName, 15, StyleState.Normal);
            UIStyleGroup group = new UIStyleGroup()
            {
                name   = "Name",
                normal = new UIStyleRunCommand()
                {
                    style = baseStyle
                }
            };
            group.styleType = StyleType.Shared;

            UIStyleGroupContainer container = new UIStyleGroupContainer(0, "Name", StyleType.Shared, new[] { group });
            root.style.AddStyleGroupContainer(container);

            Assert.AreEqual(15, ComputedValue <int>(root, propName));

            root.style.RemoveStyleGroupContainer(container);

            Assert.AreEqual(15, ComputedValue <int>(root, propName));
        };

        RunIntTests(TestBody);
    }
Exemple #2
0
    public void SizeProperties_OverrideBaseStyleInState()
    {
        Action <string, string, string> TestBody = (setFnName, propName, defaultName) => {
            MockApplication view = MockApplication.Setup <StyleSetTestThing>();

            StyleSetTestThing root = (StyleSetTestThing)view.RootElement;

            UIStyle baseStyle = new UIStyle();
            SetStyleValue(baseStyle, propName, new UIMeasurement(500));

            CallMethod(root.style, setFnName, new UIMeasurement(1500), StyleState.Hover);
            UIStyleGroup group = new UIStyleGroup()
            {
                name   = "Name",
                normal = new UIStyleRunCommand()
                {
                    style = baseStyle
                }
            };
            UIStyleGroupContainer container = new UIStyleGroupContainer(0, "Name", StyleType.Shared, new[] { group });
            root.style.AddStyleGroupContainer(container);
            Assert.AreEqual(new UIMeasurement(500), ComputedValue <UIMeasurement>(root, propName));

            root.style.EnterState(StyleState.Hover);
            Assert.AreEqual(new UIMeasurement(1500), ComputedValue <UIMeasurement>(root, propName));
        };

        RunSizeTests(TestBody);
    }
Exemple #3
0
    public void ReferenceAnimationInStyle()
    {
        var        nodes      = StyleParser.Parse(@"
            animation anim1 {
                [options] {
                    duration = 500;
                }

                [keyframes] {
                    0% { BackgroundColor = @regularColor; }
                    20% { BackgroundColor = yellow; }
                    80% { BackgroundColor = yellow; }
                    100% { BackgroundColor = @regularColor;}
                }
            }

            style someStyle {
                run animation(anim1);
                [hover] {
                    run animation(anim1);
                }
            }

            const regularColor = red;
        ".Trim());
        StyleSheet styleSheet = NewStyleSheetCompiler().Compile("test", nodes);

        Assert.AreEqual(1, styleSheet.styleGroupContainers.Length);
        UIStyleGroupContainer container = styleSheet.styleGroupContainers[0];

        Assert.AreEqual("someStyle", container.name);
        Assert.AreEqual(1, container.groups[0].normal.runCommands.Count);
        Assert.AreEqual(1, container.groups[0].hover.runCommands.Count);
    }
Exemple #4
0
        public int ResolveStyleNameWithFile(string name, out string file)
        {
            if (styleSheets == null)
            {
                file = null;
                return(-1);
            }

            string alias = string.Empty;

            if (name.Contains("."))
            {
                string[] split = name.Split(s_SplitChar, StringSplitOptions.RemoveEmptyEntries);
                if (split.Length == 2)
                {
                    alias = split[0];
                    name  = split[1];
                }
            }

            if (alias != string.Empty)
            {
                for (int i = 0; i < styleSheets.size; i++)
                {
                    if (styleSheets.array[i].alias == alias)
                    {
                        StyleSheet sheet = styleSheets.array[i].styleSheet;
                        for (int j = 0; j < sheet.styleGroupContainers.Length; j++)
                        {
                            UIStyleGroupContainer styleGroupContainer = sheet.styleGroupContainers[j];
                            if (styleGroupContainer.name == name)
                            {
                                file = sheet.path + ":" + name;
                                return(styleGroupContainer.id);
                            }
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < styleSheets.size; i++)
                {
                    StyleSheet sheet = styleSheets.array[i].styleSheet;
                    if (sheet.TryResolveStyleName(name, out UIStyleGroupContainer retn))
                    {
                        file = sheet.path + ":" + name;
                        return(retn.id);
                    }
                }
            }

            file = null;
            return(-1);
        }
Exemple #5
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();
        }
Exemple #6
0
        private void CreateStyleGroups(UIStyleGroupContainer groupContainer, LightList <StylePropertyId> toUpdate)
        {
            for (int i = 0; i < groupContainer.groups.Length; i++)
            {
                UIStyleGroup group = groupContainer.groups[i];

                if (group.HasAttributeRule)
                {
                    hasAttributeStyles = true;
                }

                if (group.rule == null || group.rule != null && group.rule.IsApplicableTo(element))
                {
                    int ruleCount = group.CountRules();
                    CreateStyleEntry(toUpdate, group, group.normal, groupContainer.styleType, StyleState.Normal, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.hover, groupContainer.styleType, StyleState.Hover, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.focused, groupContainer.styleType, StyleState.Focused, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.active, groupContainer.styleType, StyleState.Active, ruleCount);
                }
            }
        }
Exemple #7
0
    public void RunSound()
    {
        var        nodes      = StyleParser.Parse(@"
                sound notification {
                    Asset = ""sounds/notification1"";
                    MixerGroup = ""Master Group 1"";
                    Duration = 2s;
                    Iterations = Infinite;
                    Pitch = -0.4;
                    PitchRange = range(0.1, 0.4);
                    Tempo = 23.9;
                    Volume = 0.9;
                }

                style someStyle {
                    run sound(notification);
                }
            ".Trim());
        StyleSheet styleSheet = NewStyleSheetCompiler().Compile("test", nodes);

        Assert.AreEqual(1, styleSheet.styleGroupContainers.Length);
        UIStyleGroupContainer container = styleSheet.styleGroupContainers[0];

        Assert.AreEqual("someStyle", container.name);
        Assert.AreEqual(1, container.groups[0].normal.runCommands.Count);

        Assert.AreEqual(1, styleSheet.sounds.Length);
        UISoundData soundData = styleSheet.sounds[0];

        Assert.AreEqual("sounds/notification1", soundData.asset);
        Assert.AreEqual("Master Group 1", soundData.mixerGroup);
        Assert.AreEqual(UITimeMeasurementUnit.Seconds, soundData.duration.unit);
        Assert.AreEqual(2f, soundData.duration.value);
        Assert.AreEqual(-1, soundData.iterations);
        Assert.AreEqual(-0.4f, soundData.pitch);
        Assert.AreEqual(0.1f, soundData.pitchRange.Min);
        Assert.AreEqual(0.4f, soundData.pitchRange.Max);
        Assert.AreEqual(23.9f, soundData.tempo);
        Assert.AreEqual(0.9f, soundData.volume);
    }
Exemple #8
0
        private void AddStyleGroups(LightList <StylePropertyId> toUpdate, UIStyleGroupContainer container)
        {
            styleGroupContainers.Add(container);

            if (container.hasAttributeStyles)
            {
                hasAttributeStyles = true;
            }

            for (int j = 0; j < container.groups.Length; j++)
            {
                UIStyleGroup group = container.groups[j];

                if (group.rule == null || group.rule != null && group.rule.IsApplicableTo(element))
                {
                    int ruleCount = group.CountRules();
                    CreateStyleEntry(toUpdate, group, group.normal, container.styleType, StyleState.Normal, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.hover, container.styleType, StyleState.Hover, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.focused, container.styleType, StyleState.Focused, ruleCount);
                    CreateStyleEntry(toUpdate, group, group.active, container.styleType, StyleState.Active, ruleCount);
                }
            }
        }
Exemple #9
0
        public void Flatten(TemplateMetaData metaData, LightList <UIStyleGroupContainer> containers)
        {
            if (data == null)
            {
                return;
            }

            switch (type)
            {
            case DataType.String: {
                UIStyleGroupContainer style = metaData.ResolveStyleByName((string)data);
                if (style != null)
                {
                    containers.Add(style);
                }

                break;
            }

            case DataType.CharArray: {
                UIStyleGroupContainer style = metaData.ResolveStyleByName((char[])data);
                if (style != null)
                {
                    containers.Add(style);
                }

                break;
            }

            case DataType.StringList: {
                IList <string> list = (IList <string>)data;
                for (int i = 0; i < list.Count; i++)
                {
                    UIStyleGroupContainer style = metaData.ResolveStyleByName(list[i]);
                    if (style != null)
                    {
                        containers.Add(style);
                    }
                }

                break;
            }

            case DataType.StyleRef: {
                containers.Add((UIStyleGroupContainer)data);
                break;
            }

            case DataType.StyleRefList: {
                IList <UIStyleGroupContainer> list = (IList <UIStyleGroupContainer>)data;
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i] == null)
                    {
                        continue;
                    }
                    containers.Add(list[i]);
                }

                break;
            }
            }
        }
Exemple #10
0
 public DynamicStyleList(UIStyleGroupContainer styleRef)
 {
     type = DataType.StyleRef;
     data = styleRef;
 }
Exemple #11
0
 public void internal_AddBaseStyle(UIStyleGroupContainer style)
 {
     styleGroupContainers.Add(style);
 }