internal CssValue Derive_ComputedValue(ICssProperty Property) {/* Docs: https://www.w3.org/TR/css-cascade-3/#computed */ StyleDefinition Def = Property.Definition; // Resolve any relative values switch (Type) { case ECssValueTypes.INHERIT: // Docs: https://www.w3.org/TR/CSS2/cascade.html#value-def-inherit { return(Property.Find_Inherited_Value()); } case ECssValueTypes.PERCENT: { if (Def.Percentage_Resolver != null) { return(Def.Percentage_Resolver(Property, (double)value)); } } break; case ECssValueTypes.DIMENSION: { double nv = Resolve(Property.Owner.ownerDocument.cssUnitResolver); return(CssValue.From(nv)); } } // If we havent resolved a value yet that means this was meant to be handled by a custom handler var ResolutionDelegate = Def.PropertyStageResolver[(int)EPropertyStage.Computed]; if (ResolutionDelegate is object) { return((CssValue)ResolutionDelegate.Invoke(Property)); } return(this); }