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); }
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); }
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); }
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); }
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(); }
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); } } }
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); }
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); } } }
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; } } }
public DynamicStyleList(UIStyleGroupContainer styleRef) { type = DataType.StyleRef; data = styleRef; }
public void internal_AddBaseStyle(UIStyleGroupContainer style) { styleGroupContainers.Add(style); }