internal void ApplyStyleValue(StylePropertyID propertyID, StyleValue value, int specificity) { if (value.keyword == StyleKeyword.Initial) { ApplyInitialStyleValue(propertyID, specificity); } else { s_StyleValueApplicator.currentStyleValue = value; ApplyStyleProperty(s_StyleValueApplicator, null, propertyID, null, specificity); } }
internal void ApplyStyleValue(StylePropertyID propertyID, StyleValue value, int specificity) { if (value.keyword == StyleKeyword.Initial) { ApplyInitialStyleValue(propertyID, specificity); } else { s_StyleValuePropertyReader.Set(propertyID, value, specificity); ApplyStyleProperty(s_StyleValuePropertyReader); } }
public void Set(StylePropertyID id, StyleValue value, int spec) { propertyID = id; m_CurrentStyleValue = value; specificity = spec; }
private void ApplyInitialStyleValue(StylePropertyID propertyID, int specificity) { switch (propertyID) { case StylePropertyID.Unknown: case StylePropertyID.Custom: { Debug.LogAssertion($"Unexpected style property ID {propertyID.ToString()}."); break; } case StylePropertyID.BorderColor: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderLeftColor); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderTopColor); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderRightColor); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderBottomColor); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.BorderRadius: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderTopLeftRadius); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderTopRightRadius); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderBottomLeftRadius); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderBottomRightRadius); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.BorderWidth: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderLeftWidth); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderTopWidth); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderRightWidth); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.BorderBottomWidth); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.Flex: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.FlexGrow); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.FlexShrink); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.FlexBasis); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.Margin: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.MarginLeft); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.MarginTop); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.MarginRight); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.MarginBottom); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.Padding: { StyleValue sv = StyleSheetCache.GetInitialValue(StylePropertyID.PaddingLeft); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.PaddingTop); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.PaddingRight); ApplyStyleValue(sv.id, sv, specificity); sv = StyleSheetCache.GetInitialValue(StylePropertyID.PaddingBottom); ApplyStyleValue(sv.id, sv, specificity); break; } case StylePropertyID.Cursor: { ApplyStyleCursor(new StyleCursor(), specificity); break; } default: { StyleValue sv = StyleSheetCache.GetInitialValue(propertyID); Debug.Assert(sv.keyword != StyleKeyword.Initial, "Recursive apply initial value"); ApplyStyleValue(sv.id, sv, specificity); break; } } }
static StyleSheetCache() { // Values set to StyleKeyword.Initial require special treatment when applying them. s_InitialStyleValues[(int)StylePropertyID.MarginLeft] = StyleValue.Create(StylePropertyID.MarginLeft, 0f); s_InitialStyleValues[(int)StylePropertyID.MarginTop] = StyleValue.Create(StylePropertyID.MarginTop, 0f); s_InitialStyleValues[(int)StylePropertyID.MarginRight] = StyleValue.Create(StylePropertyID.MarginRight, 0f); s_InitialStyleValues[(int)StylePropertyID.MarginBottom] = StyleValue.Create(StylePropertyID.MarginBottom, 0f); s_InitialStyleValues[(int)StylePropertyID.PaddingLeft] = StyleValue.Create(StylePropertyID.PaddingLeft, 0f); s_InitialStyleValues[(int)StylePropertyID.PaddingTop] = StyleValue.Create(StylePropertyID.PaddingTop, 0f); s_InitialStyleValues[(int)StylePropertyID.PaddingRight] = StyleValue.Create(StylePropertyID.PaddingRight, 0f); s_InitialStyleValues[(int)StylePropertyID.PaddingBottom] = StyleValue.Create(StylePropertyID.PaddingBottom, 0f); s_InitialStyleValues[(int)StylePropertyID.Position] = StyleValue.Create(StylePropertyID.Position, (int)Position.Relative); s_InitialStyleValues[(int)StylePropertyID.PositionLeft] = StyleValue.Create(StylePropertyID.PositionLeft, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.PositionTop] = StyleValue.Create(StylePropertyID.PositionTop, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.PositionRight] = StyleValue.Create(StylePropertyID.PositionRight, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.PositionBottom] = StyleValue.Create(StylePropertyID.PositionBottom, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.Width] = StyleValue.Create(StylePropertyID.Width, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.Height] = StyleValue.Create(StylePropertyID.Height, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.MinWidth] = StyleValue.Create(StylePropertyID.MinWidth, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.MinHeight] = StyleValue.Create(StylePropertyID.MinHeight, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.MaxWidth] = StyleValue.Create(StylePropertyID.MaxWidth, StyleKeyword.None); s_InitialStyleValues[(int)StylePropertyID.MaxHeight] = StyleValue.Create(StylePropertyID.MaxHeight, StyleKeyword.None); s_InitialStyleValues[(int)StylePropertyID.FlexBasis] = StyleValue.Create(StylePropertyID.FlexBasis, StyleKeyword.Auto); s_InitialStyleValues[(int)StylePropertyID.FlexGrow] = StyleValue.Create(StylePropertyID.FlexGrow, 0f); s_InitialStyleValues[(int)StylePropertyID.FlexShrink] = StyleValue.Create(StylePropertyID.FlexShrink, 1f); s_InitialStyleValues[(int)StylePropertyID.BorderLeftWidth] = StyleValue.Create(StylePropertyID.BorderLeftWidth, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderTopWidth] = StyleValue.Create(StylePropertyID.BorderTopWidth, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderRightWidth] = StyleValue.Create(StylePropertyID.BorderRightWidth, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderBottomWidth] = StyleValue.Create(StylePropertyID.BorderBottomWidth, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderTopLeftRadius] = StyleValue.Create(StylePropertyID.BorderTopLeftRadius, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderTopRightRadius] = StyleValue.Create(StylePropertyID.BorderTopRightRadius, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderBottomLeftRadius] = StyleValue.Create(StylePropertyID.BorderBottomLeftRadius, 0f); s_InitialStyleValues[(int)StylePropertyID.BorderBottomRightRadius] = StyleValue.Create(StylePropertyID.BorderBottomRightRadius, 0f); s_InitialStyleValues[(int)StylePropertyID.FlexDirection] = StyleValue.Create(StylePropertyID.FlexDirection, (int)FlexDirection.Column); s_InitialStyleValues[(int)StylePropertyID.FlexWrap] = StyleValue.Create(StylePropertyID.FlexWrap, (int)Wrap.NoWrap); s_InitialStyleValues[(int)StylePropertyID.JustifyContent] = StyleValue.Create(StylePropertyID.JustifyContent, (int)Justify.FlexStart); s_InitialStyleValues[(int)StylePropertyID.AlignContent] = StyleValue.Create(StylePropertyID.AlignContent, (int)Align.FlexStart); s_InitialStyleValues[(int)StylePropertyID.AlignSelf] = StyleValue.Create(StylePropertyID.AlignSelf, (int)Align.Auto); s_InitialStyleValues[(int)StylePropertyID.AlignItems] = StyleValue.Create(StylePropertyID.AlignItems, (int)Align.Stretch); s_InitialStyleValues[(int)StylePropertyID.UnityTextAlign] = StyleValue.Create(StylePropertyID.UnityTextAlign, (int)TextAnchor.UpperLeft); s_InitialStyleValues[(int)StylePropertyID.WhiteSpace] = StyleValue.Create(StylePropertyID.WhiteSpace, (int)WhiteSpace.Normal); s_InitialStyleValues[(int)StylePropertyID.Font] = StyleValue.Create(StylePropertyID.Font); // null resource s_InitialStyleValues[(int)StylePropertyID.FontSize] = StyleValue.Create(StylePropertyID.FontSize, 0f); s_InitialStyleValues[(int)StylePropertyID.FontStyleAndWeight] = StyleValue.Create(StylePropertyID.FontStyleAndWeight, (int)FontStyle.Normal); s_InitialStyleValues[(int)StylePropertyID.BackgroundScaleMode] = StyleValue.Create(StylePropertyID.BackgroundScaleMode, (int)ScaleMode.StretchToFill); s_InitialStyleValues[(int)StylePropertyID.BackgroundImageTintColor] = StyleValue.Create(StylePropertyID.BackgroundImageTintColor, Color.white); s_InitialStyleValues[(int)StylePropertyID.Visibility] = StyleValue.Create(StylePropertyID.Visibility, (int)Visibility.Visible); s_InitialStyleValues[(int)StylePropertyID.Overflow] = StyleValue.Create(StylePropertyID.Overflow, (int)Overflow.Visible); s_InitialStyleValues[(int)StylePropertyID.Display] = StyleValue.Create(StylePropertyID.Display, (int)DisplayStyle.Flex); s_InitialStyleValues[(int)StylePropertyID.BackgroundImage] = StyleValue.Create(StylePropertyID.BackgroundImage); // null resource s_InitialStyleValues[(int)StylePropertyID.Color] = StyleValue.Create(StylePropertyID.Color, Color.black); s_InitialStyleValues[(int)StylePropertyID.BackgroundColor] = StyleValue.Create(StylePropertyID.BackgroundColor, Color.clear); s_InitialStyleValues[(int)StylePropertyID.BorderColor] = StyleValue.Create(StylePropertyID.BorderColor, Color.clear); s_InitialStyleValues[(int)StylePropertyID.SliceLeft] = StyleValue.Create(StylePropertyID.SliceLeft, 0f); s_InitialStyleValues[(int)StylePropertyID.SliceTop] = StyleValue.Create(StylePropertyID.SliceTop, 0f); s_InitialStyleValues[(int)StylePropertyID.SliceRight] = StyleValue.Create(StylePropertyID.SliceRight, 0f); s_InitialStyleValues[(int)StylePropertyID.SliceBottom] = StyleValue.Create(StylePropertyID.SliceBottom, 0f); s_InitialStyleValues[(int)StylePropertyID.Opacity] = StyleValue.Create(StylePropertyID.Opacity, 1f); // Shorthand value s_InitialStyleValues[(int)StylePropertyID.BorderRadius] = StyleValue.Create(StylePropertyID.BorderRadius, StyleKeyword.Initial); s_InitialStyleValues[(int)StylePropertyID.BorderWidth] = StyleValue.Create(StylePropertyID.BorderWidth, StyleKeyword.Initial); s_InitialStyleValues[(int)StylePropertyID.Flex] = StyleValue.Create(StylePropertyID.Flex, StyleKeyword.Initial); s_InitialStyleValues[(int)StylePropertyID.Margin] = StyleValue.Create(StylePropertyID.Margin, StyleKeyword.Initial); s_InitialStyleValues[(int)StylePropertyID.Padding] = StyleValue.Create(StylePropertyID.Padding, StyleKeyword.Initial); // Complex value s_InitialStyleValues[(int)StylePropertyID.Cursor] = StyleValue.Create(StylePropertyID.Cursor, StyleKeyword.Initial); }