コード例 #1
0
 internal StyleValueImporter()
 {
     m_Context = null;
     m_Parser  = new Parser();
     m_Builder = new StyleSheetBuilder();
     m_Errors  = new StyleSheetImportErrors();
 }
コード例 #2
0
 public void BeginRule(int ruleLine)
 {
     StyleSheetBuilder.Log("Beginning rule");
     this.m_BuilderState = StyleSheetBuilder.BuilderState.Rule;
     this.m_CurrentRule  = new StyleRule
     {
         line = ruleLine
     };
 }
コード例 #3
0
 public StyleSheetBuilder.ComplexSelectorScope BeginComplexSelector(int specificity)
 {
     StyleSheetBuilder.Log("Begin complex selector with specificity " + specificity);
     this.m_BuilderState                       = StyleSheetBuilder.BuilderState.ComplexSelector;
     this.m_CurrentComplexSelector             = new StyleComplexSelector();
     this.m_CurrentComplexSelector.specificity = specificity;
     this.m_CurrentComplexSelector.ruleIndex   = this.m_Rules.Count;
     return(new StyleSheetBuilder.ComplexSelectorScope(this));
 }
コード例 #4
0
        public void AddSimpleSelector(StyleSelectorPart[] parts, StyleSelectorRelationship previousRelationsip)
        {
            StyleSelector styleSelector = new StyleSelector();

            styleSelector.parts = parts;
            styleSelector.previousRelationship = previousRelationsip;
            StyleSheetBuilder.Log("Add simple selector " + styleSelector);
            this.m_CurrentSelectors.Add(styleSelector);
        }
コード例 #5
0
 public void EndRule()
 {
     StyleSheetBuilder.Log("Ending rule");
     this.m_BuilderState           = StyleSheetBuilder.BuilderState.Init;
     this.m_CurrentRule.properties = this.m_CurrentProperties.ToArray();
     this.m_Rules.Add(this.m_CurrentRule);
     this.m_CurrentRule = null;
     this.m_CurrentProperties.Clear();
 }
コード例 #6
0
        public void EndProperty()
        {
            StyleSheetBuilder.Log("Ending property");
            this.m_BuilderState = StyleSheetBuilder.BuilderState.Rule;
            StyleProperty styleProperty = new StyleProperty();

            styleProperty.name   = this.m_CurrentPropertyName;
            styleProperty.values = this.m_CurrentValues.ToArray();
            this.m_CurrentProperties.Add(styleProperty);
            this.m_CurrentValues.Clear();
        }
コード例 #7
0
        internal StyleValueImporter()
        {
            m_Context   = null;
            m_AssetPath = null;
            m_Parser    = new Parser();
            m_Builder   = new StyleSheetBuilder();
            m_Errors    = new StyleSheetImportErrors();
            m_Validator = new StyleValidator();

            LoadPropertiesDefinition();
        }
コード例 #8
0
 private void RegisterValue <T>(List <T> list, StyleValueType type, T value)
 {
     StyleSheetBuilder.Log(string.Concat(new object[]
     {
         "Add value of type ",
         type,
         " : ",
         value
     }));
     list.Add(value);
     this.m_CurrentValues.Add(new StyleValueHandle(list.Count - 1, type));
 }
コード例 #9
0
 public void EndComplexSelector()
 {
     StyleSheetBuilder.Log("Ending complex selector");
     this.m_BuilderState = StyleSheetBuilder.BuilderState.Rule;
     if (this.m_CurrentSelectors.Count > 0)
     {
         this.m_CurrentComplexSelector.selectors = this.m_CurrentSelectors.ToArray();
         this.m_ComplexSelectors.Add(this.m_CurrentComplexSelector);
         this.m_CurrentSelectors.Clear();
     }
     this.m_CurrentComplexSelector = null;
 }
コード例 #10
0
        public StyleValueImporter(AssetImportContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            m_Context = context;
            m_Parser  = new Parser();
            m_Builder = new StyleSheetBuilder();
            m_Errors  = new StyleSheetImportErrors();
        }
コード例 #11
0
        public StyleValueImporter(AssetImportContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            m_Context   = context;
            m_AssetPath = context.assetPath;
            m_Parser    = new Parser();
            m_Builder   = new StyleSheetBuilder();
            m_Errors    = new StyleSheetImportErrors();
            m_Validator = new StyleValidator();

            LoadPropertiesDefinition();
        }
コード例 #12
0
 public StyleSheetBuilderHelper(UssExportOptions opts = null)
 {
     builder = new StyleSheetBuilder();
     options = opts ?? new UssExportOptions();
 }
コード例 #13
0
 public void BeginProperty(string name)
 {
     StyleSheetBuilder.Log("Begin property named " + name);
     this.m_BuilderState        = StyleSheetBuilder.BuilderState.Property;
     this.m_CurrentPropertyName = name;
 }
コード例 #14
0
 public StyleSheetImporterImpl()
 {
     this.m_Parser  = new Parser();
     this.m_Builder = new StyleSheetBuilder();
     this.m_Errors  = new StyleSheetImportErrors();
 }
コード例 #15
0
        internal static void VisitValue(StyleSheetImportErrors errors, StyleSheetBuilder ssb, Term term)
        {
            PrimitiveTerm   primitiveTerm   = term as PrimitiveTerm;
            HtmlColor       htmlColor       = term as HtmlColor;
            GenericFunction genericFunction = term as GenericFunction;
            TermList        termList        = term as TermList;

            if (term == Term.Inherit)
            {
                ssb.AddValue(StyleValueKeyword.Inherit);
            }
            else if (primitiveTerm != null)
            {
                string   text          = term.ToString();
                UnitType primitiveType = primitiveTerm.PrimitiveType;
                switch (primitiveType)
                {
                case UnitType.String:
                {
                    string value = text.Trim(new char[]
                        {
                            '\'',
                            '"'
                        });
                    ssb.AddValue(value, StyleValueType.String);
                    goto IL_F9;
                }

                case UnitType.Uri:
IL_63:
                    if (primitiveType != UnitType.Number && primitiveType != UnitType.Pixel)
                    {
                        errors.AddSemanticError(StyleSheetImportErrorCode.UnsupportedUnit, primitiveTerm.ToString());
                        return;
                    }
                    ssb.AddValue(primitiveTerm.GetFloatValue(UnitType.Pixel).Value);
                    goto IL_F9;

                case UnitType.Ident:
                {
                    StyleValueKeyword keyword;
                    if (StyleSheetImporterImpl.TryParseKeyword(text, out keyword))
                    {
                        ssb.AddValue(keyword);
                    }
                    else
                    {
                        ssb.AddValue(text, StyleValueType.Enum);
                    }
                    goto IL_F9;
                }
                }
                goto IL_63;
                IL_F9 :;
            }
            else if (htmlColor != null)
            {
                Color value2 = new Color((float)htmlColor.R / 255f, (float)htmlColor.G / 255f, (float)htmlColor.B / 255f, (float)htmlColor.A / 255f);
                ssb.AddValue(value2);
            }
            else if (genericFunction != null)
            {
                primitiveTerm = (genericFunction.Arguments.FirstOrDefault <Term>() as PrimitiveTerm);
                if (genericFunction.Name == "resource" && primitiveTerm != null)
                {
                    string value3 = primitiveTerm.Value as string;
                    ssb.AddValue(value3, StyleValueType.ResourcePath);
                }
                else
                {
                    errors.AddSemanticError(StyleSheetImportErrorCode.UnsupportedFunction, genericFunction.Name);
                }
            }
            else if (termList != null)
            {
                foreach (Term current in termList)
                {
                    StyleSheetImporterImpl.VisitValue(errors, ssb, current);
                }
            }
            else
            {
                errors.AddInternalError(term.GetType().Name);
            }
        }
コード例 #16
0
        internal static void VisitValue(StyleSheetImportErrors errors, StyleSheetBuilder ssb, Term term)
        {
            var primitiveTerm = term as PrimitiveTerm;
            var colorTerm     = term as HtmlColor;
            var funcTerm      = term as GenericFunction;
            var termList      = term as TermList;

            if (term == PrimitiveTerm.Inherit)
            {
                ssb.AddValue(StyleValueKeyword.Inherit);
            }
            else if (primitiveTerm != null)
            {
                string rawStr = term.ToString();

                switch (primitiveTerm.PrimitiveType)
                {
                case UnitType.Pixel:
                case UnitType.Number:
                    float?floatValue = primitiveTerm.GetFloatValue(UnitType.Pixel);
                    ssb.AddValue(floatValue.Value);
                    break;

                case UnitType.Ident:
                    StyleValueKeyword keyword;
                    if (TryParseKeyword(rawStr, out keyword))
                    {
                        ssb.AddValue(keyword);
                    }
                    else
                    {
                        ssb.AddValue(rawStr, StyleValueType.Enum);
                    }
                    break;

                case UnitType.String:
                    string unquotedStr = rawStr.Trim('\'', '\"');
                    ssb.AddValue(unquotedStr, StyleValueType.String);
                    break;

                default:
                    errors.AddSemanticError(StyleSheetImportErrorCode.UnsupportedUnit, primitiveTerm.ToString());
                    return;
                }
            }
            else if (colorTerm != null)
            {
                var color = new Color((float)colorTerm.R / 255.0f, (float)colorTerm.G / 255.0f, (float)colorTerm.B / 255.0f, (float)colorTerm.A / 255.0f);
                ssb.AddValue(color);
            }
            else if (funcTerm != null)
            {
                primitiveTerm = funcTerm.Arguments.FirstOrDefault() as PrimitiveTerm;
                if (funcTerm.Name == k_ResourcePathFunctionName && primitiveTerm != null)
                {
                    string path = primitiveTerm.Value as string;
                    ssb.AddValue(path, StyleValueType.ResourcePath);
                }
                else
                {
                    errors.AddSemanticError(StyleSheetImportErrorCode.UnsupportedFunction, funcTerm.Name);
                }
            }
            else if (termList != null)
            {
                foreach (Term childTerm in termList)
                {
                    VisitValue(errors, ssb, childTerm);
                }
                return;
            }
            else
            {
                errors.AddInternalError(term.GetType().Name);
            }
        }
コード例 #17
0
 public ComplexSelectorScope(StyleSheetBuilder builder)
 {
     this.m_Builder = builder;
 }