| OLD | NEW |
| (Empty) |
| 1 {% from "macros.tmpl" import wrap_with_condition, license -%} | |
| 2 {{ license() }} | |
| 3 | |
| 4 #include "config.h" | |
| 5 #include "core/css/resolver/StyleBuilder.h" | |
| 6 | |
| 7 #include "StyleBuilderFunctions.h" | |
| 8 #include "core/css/CSSPrimitiveValueMappings.h" | |
| 9 #include "core/css/resolver/StyleResolverState.h" | |
| 10 | |
| 11 // FIXME: currently we're just generating a switch statement, but we should | |
| 12 // test other variations for performance once we have more properties here. | |
| 13 | |
| 14 {%- macro set_value(property) %} | |
| 15 {%- if property.svg -%} | |
| 16 state.style()->accessSVGStyle()->{{property.setter}} | |
| 17 {%- else -%} | |
| 18 state.style()->{{property.setter}} | |
| 19 {%- endif %} | |
| 20 {%- endmacro %} | |
| 21 | |
| 22 namespace WebCore { | |
| 23 | |
| 24 {%- for property_id, property in properties.items() if not property.use_handlers
_for %} | |
| 25 {%- call wrap_with_condition(property.condition) %} | |
| 26 {%- set apply_type = property.apply_type %} | |
| 27 | |
| 28 {%- if not property.custom_initial %} | |
| 29 void StyleBuilderFunctions::applyInitial{{property_id}}(StyleResolverState& stat
e) | |
| 30 { | |
| 31 {%- if property.svg %} | |
| 32 {{ set_value(property) }}(SVGRenderStyle::{{property.initial}}()); | |
| 33 {%- else %} | |
| 34 {{ set_value(property) }}(RenderStyle::{{property.initial}}()); | |
| 35 {%- endif %} | |
| 36 } | |
| 37 {% endif %} | |
| 38 | |
| 39 {%- if not property.custom_inherit %} | |
| 40 void StyleBuilderFunctions::applyInherit{{property_id}}(StyleResolverState& stat
e) | |
| 41 { | |
| 42 {%- if property.svg %} | |
| 43 {{ set_value(property) }}(state.parentStyle()->svgStyle()->{{property.getter
}}()); | |
| 44 {%- else %} | |
| 45 {{ set_value(property) }}(state.parentStyle()->{{property.getter}}()); | |
| 46 {%- endif %} | |
| 47 } | |
| 48 {% endif %} | |
| 49 | |
| 50 {%- if not property.custom_value %} | |
| 51 void StyleBuilderFunctions::applyValue{{property_id}}(StyleResolverState& state,
CSSValue* value) | |
| 52 { | |
| 53 {%- if property.converter %} | |
| 54 {{ set_value(property) }}(StyleBuilderConverter::{{property.converter}}(stat
e, value)); | |
| 55 {%- else %} | |
| 56 {{ set_value(property) }}(static_cast<{{property.type_name}}>(*toCSSPrimitiv
eValue(value))); | |
| 57 {%- endif %} | |
| 58 } | |
| 59 {% endif %} | |
| 60 | |
| 61 {%- endcall %} | |
| 62 {%- endfor %} | |
| 63 | |
| 64 bool StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& sta
te, CSSValue* value, bool isInitial, bool isInherit) { | |
| 65 switch(property) { | |
| 66 {%- for property_id, property in properties.items() %} | |
| 67 {%- set used_property = properties[property.use_handlers_for] or property %} | |
| 68 {%- set used_property_id = used_property.property_id %} | |
| 69 {%- call wrap_with_condition(used_property.condition) %} | |
| 70 case {{ property_id }}: | |
| 71 if (isInitial) | |
| 72 StyleBuilderFunctions::applyInitial{{ used_property_id }}(state); | |
| 73 else if (isInherit) | |
| 74 StyleBuilderFunctions::applyInherit{{ used_property_id }}(state); | |
| 75 else | |
| 76 StyleBuilderFunctions::applyValue{{ used_property_id }}(state, value
); | |
| 77 return true; | |
| 78 {%- endcall %} | |
| 79 {% endfor %} | |
| 80 default: | |
| 81 return false; | |
| 82 } | |
| 83 } | |
| 84 | |
| 85 } // namespace WebCore | |
| OLD | NEW |