private static void ReadFontStyle(StyleSheet sheet, StyleRule rule, bool throwIfNotFound, GUIStyle style) { string fontStyleStr = null; string weight = null; GetProperty(rule, ConverterUtils.k_FontStyle, throwIfNotFound, property => { fontStyleStr = sheet.ReadEnum(property.values[0]); }); GetProperty(rule, ConverterUtils.k_FontWeight, throwIfNotFound, property => { weight = sheet.ReadEnum(property.values[0]); }); FontStyle fontStyle; if (ConverterUtils.TryGetFontStyle(fontStyleStr, weight, out fontStyle)) { style.fontStyle = fontStyle; } }
internal static void PopulateStyle(StyleCatalog catalog, GUIStyle style, string blockName, bool useExtensionDefaultValues = true) { if (string.IsNullOrEmpty(blockName)) { blockName = ConverterUtils.EscapeSelectorName(style.name); } var styleBlock = catalog.GetStyle(blockName); var rootBlock = catalog.GetStyle(StyleCatalogKeyword.root, StyleState.root); style.name = styleBlock.GetText(ConverterUtils.k_Name, style.name); if (string.IsNullOrEmpty(style.name)) { style.name = BlockNameToStyleName(blockName); } style.fixedWidth = styleBlock.GetFloat(StyleCatalogKeyword.width, style.fixedWidth); style.fixedHeight = styleBlock.GetFloat(StyleCatalogKeyword.height, style.fixedHeight); GetStyleRectOffset(styleBlock, "margin", style.margin); GetStyleRectOffset(styleBlock, "padding", style.padding); style.stretchHeight = styleBlock.GetBool("-unity-stretch-height".GetHashCode(), style.stretchHeight); style.stretchWidth = styleBlock.GetBool("-unity-stretch-width".GetHashCode(), style.stretchWidth); GetStyleRectOffset(styleBlock, "-unity-slice", style.border); GetStyleRectOffset(styleBlock, "-unity-overflow", style.overflow); var contentOffsetKey = "-unity-content-offset".GetHashCode(); if (styleBlock.HasValue(contentOffsetKey, StyleValue.Type.Rect)) { var contentOffsetSize = styleBlock.GetRect(contentOffsetKey); style.contentOffset = new Vector2(contentOffsetSize.width, contentOffsetSize.height); } // Support both properties for font: style.font = styleBlock.GetResource <Font>("-unity-font".GetHashCode(), style.font); style.font = styleBlock.GetResource <Font>("font".GetHashCode(), style.font); if (style.fontSize == 0 || styleBlock.HasValue(StyleCatalogKeyword.fontSize, StyleValue.Type.Number)) { style.fontSize = styleBlock.GetInt(StyleCatalogKeyword.fontSize, style.fontSize); } var fontStyleStr = styleBlock.GetText(ConverterUtils.k_FontStyle.GetHashCode()); var fontWeightStr = styleBlock.GetText(ConverterUtils.k_FontWeight.GetHashCode()); FontStyle fontStyle; if (ConverterUtils.TryGetFontStyle(fontStyleStr, fontWeightStr, out fontStyle)) { style.fontStyle = fontStyle; } style.imagePosition = ConverterUtils.ToImagePosition(styleBlock.GetText("-unity-image-position".GetHashCode(), ConverterUtils.ToUssString(style.imagePosition))); style.clipping = ConverterUtils.ToTextClipping(styleBlock.GetText("-unity-clipping".GetHashCode(), ConverterUtils.ToUssString(style.clipping))); style.alignment = ConverterUtils.ToTextAnchor(styleBlock.GetText("-unity-text-align".GetHashCode(), ConverterUtils.ToUssString(style.alignment))); style.richText = styleBlock.GetBool("-unity-rich-text".GetHashCode(), style.richText); style.wordWrap = styleBlock.GetBool("-unity-word-wrap".GetHashCode(), style.wordWrap); var defaultStyleState = useExtensionDefaultValues ? new GUIStyleState() { textColor = styleBlock.GetColor(StyleCatalogKeyword.color, rootBlock.GetColor("--unity-text-color")) } : null; PopulateStyleState(styleBlock, style.normal, defaultStyleState); PopulateStyleState(catalog.GetStyle(blockName, StyleState.hover), style.hover, defaultStyleState); PopulateStyleState(catalog.GetStyle(blockName, StyleState.focus), style.focused, defaultStyleState); // Supports GUISkin Generation selector that assumes GUIStyle.active maps to :hover:active PopulateStyleState(catalog.GetStyle(blockName, StyleState.hover | StyleState.active), style.active, defaultStyleState); PopulateStyleState(catalog.GetStyle(blockName, StyleState.active), style.active, null); //// All "on" states uses their parent pseudo class (without :checked) as their default value PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked), style.onNormal, useExtensionDefaultValues ? style.normal : null); PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked | StyleState.hover), style.onHover, useExtensionDefaultValues ? style.hover : null); // Supports GUISkin Generation selector that assumes GUIStyle.onActive maps to :hover:active:checked PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked | StyleState.active), style.onActive, useExtensionDefaultValues ? style.active : null); PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked | StyleState.hover | StyleState.active), style.onActive, null); // Supports GUISkin Generation selector that assumes GUIStyle.onFocused maps to:hover:focus:checked PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked | StyleState.focus), style.onFocused, useExtensionDefaultValues ? style.focused : null); PopulateStyleState(catalog.GetStyle(blockName, StyleState.@checked | StyleState.hover | StyleState.focus), style.onFocused, null); }