void ApplyStyleSheetForSingleHtmlElement( HtmlElement element, BoxSpec parentSpec, TopDownActiveCssTemplate activeCssTemplate) { BoxSpec curSpec = element.Spec; BoxSpec.InheritStyles(curSpec, parentSpec); //-------------------------------- string classValue = null; if (element.HasAttributeClass) { classValue = element.AttrClassValue; } //-------------------------------- //1. apply style activeCssTemplate.ApplyCacheTemplate(element.LocalName, classValue,//class curSpec, parentSpec); //------------------------------------------------------------------- //2. specific id if (element.HasAttributeElementId) { // element.ElementId; activeCssTemplate.ApplyActiveTemplateForSpecificElementId(element); } //3. some html translate attributes if (element.WellknownElementName != WellKnownDomNodeName.svg) { //translate svg attributes AssignStylesFromTranslatedAttributesHTML5(element); } else { AssignSvgAttributes(element); } //------------------------------------------------------------------- //4. style attribute value //'style' object of this element if (!element.IsStyleEvaluated) { CssRuleSet parsedRuleSet = null; string attrStyleValue; if (element.TryGetAttribute(WellknownName.Style, out attrStyleValue)) { //parse and evaluate the ruleset parsedRuleSet = _miniCssParser.ParseCssPropertyDeclarationList(attrStyleValue.ToCharArray()); foreach (WebDom.CssPropertyDeclaration propDecl in parsedRuleSet.GetAssignmentIter()) { SpecSetter.AssignPropertyValue( curSpec, parentSpec, propDecl); } } else { } //---------------------------------------------------------------- element.IsStyleEvaluated = true; element.ElementRuleSet = parsedRuleSet; } else { var elemRuleSet = element.ElementRuleSet; if (elemRuleSet != null) { if (curSpec.IsFreezed) { curSpec.Defreeze(); //var newspec = new BoxSpec(); //BoxSpec.CloneAllStyles(newspec, curSpec); //curSpec = newspec; //element.Spec = curSpec; } foreach (WebDom.CssPropertyDeclaration propDecl in elemRuleSet.GetAssignmentIter()) { SpecSetter.AssignPropertyValue( curSpec, parentSpec, propDecl); } } } //===================== curSpec.Freeze(); //*** //===================== }