mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
50 lines
1.7 KiB
Cheetah
50 lines
1.7 KiB
Cheetah
{% from 'macros.tmpl' import license %}
|
|
{{license()}}
|
|
|
|
#include "core/css/resolver/StyleBuilder.h"
|
|
|
|
#include "StyleBuilderFunctions.h"
|
|
#include "core/css/CSSProperty.h"
|
|
#include "core/css/resolver/StyleResolverState.h"
|
|
|
|
// FIXME: currently we're just generating a switch statement, but we should
|
|
// test other variations for performance once we have more properties here.
|
|
|
|
namespace blink {
|
|
|
|
void StyleBuilder::applyProperty(CSSPropertyID property, StyleResolverState& state, CSSValue* value, bool isInitial, bool isInherit) {
|
|
switch(property) {
|
|
{% for property_id, property in properties.items()
|
|
if property.should_declare_functions or property.use_handlers_for %}
|
|
{% set used_property = properties[property.use_handlers_for] or property %}
|
|
{% set used_property_id = used_property.property_id %}
|
|
case {{property_id}}:
|
|
if (isInitial)
|
|
StyleBuilderFunctions::applyInitial{{used_property_id}}(state);
|
|
else if (isInherit)
|
|
StyleBuilderFunctions::applyInherit{{used_property_id}}(state);
|
|
else
|
|
StyleBuilderFunctions::applyValue{{used_property_id}}(state, value);
|
|
return;
|
|
|
|
{% endfor %}
|
|
{% for property_id, property in properties.items() if property.direction_aware %}
|
|
case {{property_id}}:
|
|
{% endfor %}
|
|
{
|
|
CSSPropertyID resolvedProperty = CSSProperty::resolveDirectionAwareProperty(property, state.style()->direction());
|
|
ASSERT(resolvedProperty != property);
|
|
applyProperty(resolvedProperty, state, value);
|
|
return;
|
|
}
|
|
{% for property_id, property in properties.items() if property.builder_skip %}
|
|
case {{property_id}}:
|
|
{% endfor %}
|
|
return;
|
|
default:
|
|
ASSERT_NOT_REACHED();
|
|
}
|
|
}
|
|
|
|
} // namespace blink
|