Пример #1
0
 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;
            }
            }
        }
Пример #5
0
 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);
 }