OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
4 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 4 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
11 * This library is distributed in the hope that it will be useful, | 11 * This library is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 * Library General Public License for more details. | 14 * Library General Public License for more details. |
15 * | 15 * |
16 * You should have received a copy of the GNU Library General Public License | 16 * You should have received a copy of the GNU Library General Public License |
17 * along with this library; see the file COPYING.LIB. If not, write to | 17 * along with this library; see the file COPYING.LIB. If not, write to |
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 * Boston, MA 02110-1301, USA. | 19 * Boston, MA 02110-1301, USA. |
20 */ | 20 */ |
21 | 21 |
22 #include "config.h" | 22 #include "config.h" |
23 #include "StylePropertyShorthand.h" | 23 #include "StylePropertyShorthand.h" |
24 #include "RuntimeEnabledFeatures.h" | 24 #include "RuntimeEnabledFeatures.h" |
25 | 25 |
26 #include "wtf/HashMap.h" | 26 #include "wtf/HashMap.h" |
27 #include "wtf/StdLibExtras.h" | 27 #include "wtf/StdLibExtras.h" |
28 | 28 |
29 namespace WebCore { | 29 namespace WebCore { |
| 30 {% for property_id, property in properties.items() %} |
30 | 31 |
31 {%- for property_id, property in properties.items() %} | 32 const StylePropertyShorthand& {{property.camel_case_name}}Shorthand() |
32 | |
33 const StylePropertyShorthand& {{ property.camel_case_name }}Shorthand() | |
34 { | 33 { |
35 static const CSSPropertyID {{ property.camel_case_name }}Properties[] = { | 34 static const CSSPropertyID {{property.camel_case_name}}Properties[] = { |
36 {%- for longhand_id in property.camel_case_longhands %} | 35 {% for longhand_id in property.camel_case_longhands %} |
37 {{ longhand_id }}, | 36 {{longhand_id}}, |
38 {%- endfor %} | 37 {% endfor %} |
39 }; | 38 }; |
40 DEFINE_STATIC_LOCAL(StylePropertyShorthand, {{ property.camel_case_name }}Lo
nghands, ({{ property_id }}, {{ property.camel_case_name }}Properties, WTF_ARRAY
_LENGTH({{ property.camel_case_name }}Properties))); | 39 DEFINE_STATIC_LOCAL(StylePropertyShorthand, {{property.camel_case_name}}Long
hands, ({{property_id}}, {{property.camel_case_name}}Properties, WTF_ARRAY_LENGT
H({{property.camel_case_name}}Properties))); |
41 return {{ property.camel_case_name }}Longhands; | 40 return {{property.camel_case_name}}Longhands; |
42 } | 41 } |
43 {%- endfor %} | 42 {% endfor %} |
44 | 43 |
45 // Returns an empty list if the property is not a shorthand | 44 // Returns an empty list if the property is not a shorthand |
46 const StylePropertyShorthand& shorthandForProperty(CSSPropertyID propertyID) | 45 const StylePropertyShorthand& shorthandForProperty(CSSPropertyID propertyID) |
47 { | 46 { |
48 DEFINE_STATIC_LOCAL(StylePropertyShorthand, emptyShorthand, ()); | 47 DEFINE_STATIC_LOCAL(StylePropertyShorthand, emptyShorthand, ()); |
49 switch (propertyID) { | 48 switch (propertyID) { |
50 {%- for property_id, property in properties.items() %} | 49 {% for property_id, property in properties.items() %} |
51 {%- if property.camel_case_name not in ["width", "height", "marker"] %} | 50 {% if property.camel_case_name not in ["width", "height", "marker"] %} |
52 case {{ property_id }}: | 51 case {{property_id}}: |
53 {%- if property.runtime_conditional_getter %} | 52 {% if property.runtime_conditional_getter %} |
54 if (!RuntimeEnabledFeatures::{{ property.runtime_conditional_getter
}}()) | 53 if (!RuntimeEnabledFeatures::{{property.runtime_conditional_getter}}
()) |
55 return emptyShorthand; | 54 return emptyShorthand; |
56 {%- endif %} | 55 {% endif %} |
57 return {{ property.camel_case_name }}Shorthand(); | 56 return {{property.camel_case_name}}Shorthand(); |
58 {%- endif %} | 57 {% endif %} |
59 {%- endfor %} | 58 {% endfor %} |
60 default: { | 59 default: { |
61 return emptyShorthand; | 60 return emptyShorthand; |
62 } | 61 } |
63 } | 62 } |
64 } | 63 } |
65 | 64 |
66 void getMatchingShorthandsForLonghand(CSSPropertyID propertyID, Vector<StyleProp
ertyShorthand, 4>* result) | 65 void getMatchingShorthandsForLonghand(CSSPropertyID propertyID, Vector<StyleProp
ertyShorthand, 4>* result) |
67 { | 66 { |
68 ASSERT(!result->size()); | 67 ASSERT(!result->size()); |
69 switch (propertyID) { | 68 switch (propertyID) { |
70 {%- for longhand_id, shorthands in longhands_dictionary.items() %} | 69 {% for longhand_id, shorthands in longhands_dictionary.items() %} |
71 case {{ longhand_id }}: { | 70 case {{longhand_id}}: { |
72 {%- if shorthands|length == 1 %} | 71 {# FIXME: indentation should be 4, not 0+3 #} |
73 {% for shorthand in shorthands -%} | 72 {# FIXME: this length check looks unnecessary #} |
74 result->uncheckedAppend({{ shorthand.camel_case_name }}Shorthand()); | 73 {% if shorthands|length == 1 %} |
| 74 {% for shorthand in shorthands %} |
| 75 result->uncheckedAppend({{shorthand.camel_case_name}}Shorthand()); |
75 break; | 76 break; |
76 {%- endfor %} | 77 {% endfor %} |
77 {%- else %} | 78 {% else %} |
78 {% for shorthand in shorthands -%} | 79 {% for shorthand in shorthands %} |
79 result->uncheckedAppend({{ shorthand.camel_case_name }}Shorthand()); | 80 result->uncheckedAppend({{shorthand.camel_case_name}}Shorthand()); |
80 {% endfor -%} | 81 {% endfor %} |
81 break; | 82 break; |
82 {% endif %} | 83 {# FIXME: remove blank line #} |
| 84 |
| 85 {% endif %} |
83 } | 86 } |
84 {%- endfor %} | 87 {% endfor %} |
85 default: | 88 default: |
86 break; | 89 break; |
87 } | 90 } |
88 } | 91 } |
89 | 92 |
90 } // namespace WebCore | 93 } // namespace WebCore |
OLD | NEW |