コード例 #1
0
 public MatchedRule(SelectorMatchRecord matchRecord)
     : this()
 {
     this.matchRecord = matchRecord;
     fullPath         = AssetDatabase.GetAssetPath(matchRecord.sheet);
     lineNumber       = matchRecord.complexSelector.rule.line;
     if (fullPath != null)
     {
         if (fullPath == "Library/unity editor resources")
         {
             displayPath = matchRecord.sheet.name + ":" + lineNumber;
         }
         else
         {
             displayPath = Path.GetFileNameWithoutExtension(fullPath) + ":" + lineNumber;
         }
     }
 }
コード例 #2
0
 public MatchedRule(SelectorMatchRecord matchRecord)
     : this()
 {
     this.matchRecord = matchRecord;
     fullPath         = AssetDatabase.GetAssetPath(matchRecord.sheet);
     lineNumber       = matchRecord.complexSelector.rule.line;
     if (string.IsNullOrEmpty(fullPath))
     {
         displayPath = matchRecord.sheet.name + ":" + lineNumber;
     }
     else
     {
         if (fullPath == "Library/unity editor resources")
         {
             displayPath = matchRecord.sheet.name + ":" + lineNumber;
         }
         else
         {
             displayPath = Path.GetFileName(fullPath) + ":" + lineNumber;
         }
     }
 }
コード例 #3
0
        void ProcessMatchedRules(VisualElement element, List <SelectorMatchRecord> matchingSelectors)
        {
            matchingSelectors.Sort((a, b) => SelectorMatchRecord.Compare(a, b));

            Int64 matchingRulesHash = element.fullTypeName.GetHashCode();

            // Let current DPI contribute to the hash so cache is invalidated when this changes
            matchingRulesHash = (matchingRulesHash * 397) ^ currentPixelsPerPoint.GetHashCode();

            int oldVariablesHash      = m_StyleMatchingContext.variableContext.GetVariableHash();
            int customPropertiesCount = 0;

            foreach (var record in matchingSelectors)
            {
                StyleRule rule        = record.complexSelector.rule;
                int       specificity = record.complexSelector.specificity;
                matchingRulesHash = (matchingRulesHash * 397) ^ rule.GetHashCode();
                matchingRulesHash = (matchingRulesHash * 397) ^ specificity;

                if (rule.customPropertiesCount > 0)
                {
                    customPropertiesCount += rule.customPropertiesCount;
                    ProcessMatchedVariables(record.sheet, rule);
                }
            }

            var parent             = element.hierarchy.parent;
            int inheritedStyleHash = parent != null ? parent.inheritedStylesHash : 0;

            matchingRulesHash = (matchingRulesHash * 397) ^ inheritedStyleHash;

            int variablesHash = oldVariablesHash;

            if (customPropertiesCount > 0)
            {
                // Element defines new variables, add the parents variables at the beginning of the processing context
                m_ProcessVarContext.InsertRange(0, m_StyleMatchingContext.variableContext);
                variablesHash = m_ProcessVarContext.GetVariableHash();
            }
            matchingRulesHash = (matchingRulesHash * 397) ^ variablesHash;

            if (oldVariablesHash != variablesHash)
            {
                StyleVariableContext ctx;
                if (!StyleCache.TryGetValue(variablesHash, out ctx))
                {
                    ctx = new StyleVariableContext(m_ProcessVarContext);
                    StyleCache.SetValue(variablesHash, ctx);
                }

                m_StyleMatchingContext.variableContext = ctx;
            }
            element.variableContext = m_StyleMatchingContext.variableContext;
            m_ProcessVarContext.Clear();

            ComputedStyle resolvedStyles;

            if (StyleCache.TryGetValue(matchingRulesHash, out resolvedStyles))
            {
                element.SetSharedStyles(resolvedStyles);
            }
            else
            {
                var parentStyle = parent?.computedStyle;
                resolvedStyles = ComputedStyle.Create(parentStyle, true);

                float dpiScaling = element.scaledPixelsPerPoint;
                foreach (var record in matchingSelectors)
                {
                    m_StylePropertyReader.SetContext(record.sheet, record.complexSelector, m_StyleMatchingContext.variableContext, dpiScaling);
                    resolvedStyles.ApplyProperties(m_StylePropertyReader, parentStyle);
                }

                resolvedStyles.FinalizeApply(parentStyle);

                StyleCache.SetValue(matchingRulesHash, resolvedStyles);

                element.SetSharedStyles(resolvedStyles);
            }
        }
コード例 #4
0
 internal int <ProcessMatchedRules> b__18_0(SelectorMatchRecord a, SelectorMatchRecord b)
 {
     return(SelectorMatchRecord.Compare(a, b));
 }