Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/text/qcssparser.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||
6 | - | |||||||||||||||||||||||||
7 | - | |||||||||||||||||||||||||
8 | - | |||||||||||||||||||||||||
9 | - | |||||||||||||||||||||||||
10 | using namespace QCss; | - | ||||||||||||||||||||||||
11 | - | |||||||||||||||||||||||||
12 | struct QCssKnownValue | - | ||||||||||||||||||||||||
13 | { | - | ||||||||||||||||||||||||
14 | const char name[28]; | - | ||||||||||||||||||||||||
15 | quint64 id; | - | ||||||||||||||||||||||||
16 | }; | - | ||||||||||||||||||||||||
17 | - | |||||||||||||||||||||||||
18 | static const QCssKnownValue properties[NumProperties - 1] = { | - | ||||||||||||||||||||||||
19 | { "-qt-background-role", QtBackgroundRole }, | - | ||||||||||||||||||||||||
20 | { "-qt-block-indent", QtBlockIndent }, | - | ||||||||||||||||||||||||
21 | { "-qt-line-height-type", QtLineHeightType }, | - | ||||||||||||||||||||||||
22 | { "-qt-list-indent", QtListIndent }, | - | ||||||||||||||||||||||||
23 | { "-qt-list-number-prefix", QtListNumberPrefix }, | - | ||||||||||||||||||||||||
24 | { "-qt-list-number-suffix", QtListNumberSuffix }, | - | ||||||||||||||||||||||||
25 | { "-qt-paragraph-type", QtParagraphType }, | - | ||||||||||||||||||||||||
26 | { "-qt-style-features", QtStyleFeatures }, | - | ||||||||||||||||||||||||
27 | { "-qt-table-type", QtTableType }, | - | ||||||||||||||||||||||||
28 | { "-qt-user-state", QtUserState }, | - | ||||||||||||||||||||||||
29 | { "alternate-background-color", QtAlternateBackground }, | - | ||||||||||||||||||||||||
30 | { "background", Background }, | - | ||||||||||||||||||||||||
31 | { "background-attachment", BackgroundAttachment }, | - | ||||||||||||||||||||||||
32 | { "background-clip", BackgroundClip }, | - | ||||||||||||||||||||||||
33 | { "background-color", BackgroundColor }, | - | ||||||||||||||||||||||||
34 | { "background-image", BackgroundImage }, | - | ||||||||||||||||||||||||
35 | { "background-origin", BackgroundOrigin }, | - | ||||||||||||||||||||||||
36 | { "background-position", BackgroundPosition }, | - | ||||||||||||||||||||||||
37 | { "background-repeat", BackgroundRepeat }, | - | ||||||||||||||||||||||||
38 | { "border", Border }, | - | ||||||||||||||||||||||||
39 | { "border-bottom", BorderBottom }, | - | ||||||||||||||||||||||||
40 | { "border-bottom-color", BorderBottomColor }, | - | ||||||||||||||||||||||||
41 | { "border-bottom-left-radius", BorderBottomLeftRadius }, | - | ||||||||||||||||||||||||
42 | { "border-bottom-right-radius", BorderBottomRightRadius }, | - | ||||||||||||||||||||||||
43 | { "border-bottom-style", BorderBottomStyle }, | - | ||||||||||||||||||||||||
44 | { "border-bottom-width", BorderBottomWidth }, | - | ||||||||||||||||||||||||
45 | { "border-color", BorderColor }, | - | ||||||||||||||||||||||||
46 | { "border-image", BorderImage }, | - | ||||||||||||||||||||||||
47 | { "border-left", BorderLeft }, | - | ||||||||||||||||||||||||
48 | { "border-left-color", BorderLeftColor }, | - | ||||||||||||||||||||||||
49 | { "border-left-style", BorderLeftStyle }, | - | ||||||||||||||||||||||||
50 | { "border-left-width", BorderLeftWidth }, | - | ||||||||||||||||||||||||
51 | { "border-radius", BorderRadius }, | - | ||||||||||||||||||||||||
52 | { "border-right", BorderRight }, | - | ||||||||||||||||||||||||
53 | { "border-right-color", BorderRightColor }, | - | ||||||||||||||||||||||||
54 | { "border-right-style", BorderRightStyle }, | - | ||||||||||||||||||||||||
55 | { "border-right-width", BorderRightWidth }, | - | ||||||||||||||||||||||||
56 | { "border-style", BorderStyles }, | - | ||||||||||||||||||||||||
57 | { "border-top", BorderTop }, | - | ||||||||||||||||||||||||
58 | { "border-top-color", BorderTopColor }, | - | ||||||||||||||||||||||||
59 | { "border-top-left-radius", BorderTopLeftRadius }, | - | ||||||||||||||||||||||||
60 | { "border-top-right-radius", BorderTopRightRadius }, | - | ||||||||||||||||||||||||
61 | { "border-top-style", BorderTopStyle }, | - | ||||||||||||||||||||||||
62 | { "border-top-width", BorderTopWidth }, | - | ||||||||||||||||||||||||
63 | { "border-width", BorderWidth }, | - | ||||||||||||||||||||||||
64 | { "bottom", Bottom }, | - | ||||||||||||||||||||||||
65 | { "color", Color }, | - | ||||||||||||||||||||||||
66 | { "float", Float }, | - | ||||||||||||||||||||||||
67 | { "font", Font }, | - | ||||||||||||||||||||||||
68 | { "font-family", FontFamily }, | - | ||||||||||||||||||||||||
69 | { "font-size", FontSize }, | - | ||||||||||||||||||||||||
70 | { "font-style", FontStyle }, | - | ||||||||||||||||||||||||
71 | { "font-variant", FontVariant }, | - | ||||||||||||||||||||||||
72 | { "font-weight", FontWeight }, | - | ||||||||||||||||||||||||
73 | { "height", Height }, | - | ||||||||||||||||||||||||
74 | { "image", QtImage }, | - | ||||||||||||||||||||||||
75 | { "image-position", QtImageAlignment }, | - | ||||||||||||||||||||||||
76 | { "left", Left }, | - | ||||||||||||||||||||||||
77 | { "line-height", LineHeight }, | - | ||||||||||||||||||||||||
78 | { "list-style", ListStyle }, | - | ||||||||||||||||||||||||
79 | { "list-style-type", ListStyleType }, | - | ||||||||||||||||||||||||
80 | { "margin" , Margin }, | - | ||||||||||||||||||||||||
81 | { "margin-bottom", MarginBottom }, | - | ||||||||||||||||||||||||
82 | { "margin-left", MarginLeft }, | - | ||||||||||||||||||||||||
83 | { "margin-right", MarginRight }, | - | ||||||||||||||||||||||||
84 | { "margin-top", MarginTop }, | - | ||||||||||||||||||||||||
85 | { "max-height", MaximumHeight }, | - | ||||||||||||||||||||||||
86 | { "max-width", MaximumWidth }, | - | ||||||||||||||||||||||||
87 | { "min-height", MinimumHeight }, | - | ||||||||||||||||||||||||
88 | { "min-width", MinimumWidth }, | - | ||||||||||||||||||||||||
89 | { "outline", Outline }, | - | ||||||||||||||||||||||||
90 | { "outline-bottom-left-radius", OutlineBottomLeftRadius }, | - | ||||||||||||||||||||||||
91 | { "outline-bottom-right-radius", OutlineBottomRightRadius }, | - | ||||||||||||||||||||||||
92 | { "outline-color", OutlineColor }, | - | ||||||||||||||||||||||||
93 | { "outline-offset", OutlineOffset }, | - | ||||||||||||||||||||||||
94 | { "outline-radius", OutlineRadius }, | - | ||||||||||||||||||||||||
95 | { "outline-style", OutlineStyle }, | - | ||||||||||||||||||||||||
96 | { "outline-top-left-radius", OutlineTopLeftRadius }, | - | ||||||||||||||||||||||||
97 | { "outline-top-right-radius", OutlineTopRightRadius }, | - | ||||||||||||||||||||||||
98 | { "outline-width", OutlineWidth }, | - | ||||||||||||||||||||||||
99 | { "padding", Padding }, | - | ||||||||||||||||||||||||
100 | { "padding-bottom", PaddingBottom }, | - | ||||||||||||||||||||||||
101 | { "padding-left", PaddingLeft }, | - | ||||||||||||||||||||||||
102 | { "padding-right", PaddingRight }, | - | ||||||||||||||||||||||||
103 | { "padding-top", PaddingTop }, | - | ||||||||||||||||||||||||
104 | { "page-break-after", PageBreakAfter }, | - | ||||||||||||||||||||||||
105 | { "page-break-before", PageBreakBefore }, | - | ||||||||||||||||||||||||
106 | { "position", Position }, | - | ||||||||||||||||||||||||
107 | { "right", Right }, | - | ||||||||||||||||||||||||
108 | { "selection-background-color", QtSelectionBackground }, | - | ||||||||||||||||||||||||
109 | { "selection-color", QtSelectionForeground }, | - | ||||||||||||||||||||||||
110 | { "spacing", QtSpacing }, | - | ||||||||||||||||||||||||
111 | { "subcontrol-origin", QtOrigin }, | - | ||||||||||||||||||||||||
112 | { "subcontrol-position", QtPosition }, | - | ||||||||||||||||||||||||
113 | { "text-align", TextAlignment }, | - | ||||||||||||||||||||||||
114 | { "text-decoration", TextDecoration }, | - | ||||||||||||||||||||||||
115 | { "text-indent", TextIndent }, | - | ||||||||||||||||||||||||
116 | { "text-transform", TextTransform }, | - | ||||||||||||||||||||||||
117 | { "text-underline-style", TextUnderlineStyle }, | - | ||||||||||||||||||||||||
118 | { "top", Top }, | - | ||||||||||||||||||||||||
119 | { "vertical-align", VerticalAlignment }, | - | ||||||||||||||||||||||||
120 | { "white-space", Whitespace }, | - | ||||||||||||||||||||||||
121 | { "width", Width } | - | ||||||||||||||||||||||||
122 | }; | - | ||||||||||||||||||||||||
123 | - | |||||||||||||||||||||||||
124 | static const QCssKnownValue values[NumKnownValues - 1] = { | - | ||||||||||||||||||||||||
125 | { "active", Value_Active }, | - | ||||||||||||||||||||||||
126 | { "alternate-base", Value_AlternateBase }, | - | ||||||||||||||||||||||||
127 | { "always", Value_Always }, | - | ||||||||||||||||||||||||
128 | { "auto", Value_Auto }, | - | ||||||||||||||||||||||||
129 | { "base", Value_Base }, | - | ||||||||||||||||||||||||
130 | { "bold", Value_Bold }, | - | ||||||||||||||||||||||||
131 | { "bottom", Value_Bottom }, | - | ||||||||||||||||||||||||
132 | { "bright-text", Value_BrightText }, | - | ||||||||||||||||||||||||
133 | { "button", Value_Button }, | - | ||||||||||||||||||||||||
134 | { "button-text", Value_ButtonText }, | - | ||||||||||||||||||||||||
135 | { "center", Value_Center }, | - | ||||||||||||||||||||||||
136 | { "circle", Value_Circle }, | - | ||||||||||||||||||||||||
137 | { "dark", Value_Dark }, | - | ||||||||||||||||||||||||
138 | { "dashed", Value_Dashed }, | - | ||||||||||||||||||||||||
139 | { "decimal", Value_Decimal }, | - | ||||||||||||||||||||||||
140 | { "disabled", Value_Disabled }, | - | ||||||||||||||||||||||||
141 | { "disc", Value_Disc }, | - | ||||||||||||||||||||||||
142 | { "dot-dash", Value_DotDash }, | - | ||||||||||||||||||||||||
143 | { "dot-dot-dash", Value_DotDotDash }, | - | ||||||||||||||||||||||||
144 | { "dotted", Value_Dotted }, | - | ||||||||||||||||||||||||
145 | { "double", Value_Double }, | - | ||||||||||||||||||||||||
146 | { "groove", Value_Groove }, | - | ||||||||||||||||||||||||
147 | { "highlight", Value_Highlight }, | - | ||||||||||||||||||||||||
148 | { "highlighted-text", Value_HighlightedText }, | - | ||||||||||||||||||||||||
149 | { "inset", Value_Inset }, | - | ||||||||||||||||||||||||
150 | { "italic", Value_Italic }, | - | ||||||||||||||||||||||||
151 | { "large", Value_Large }, | - | ||||||||||||||||||||||||
152 | { "left", Value_Left }, | - | ||||||||||||||||||||||||
153 | { "light", Value_Light }, | - | ||||||||||||||||||||||||
154 | { "line-through", Value_LineThrough }, | - | ||||||||||||||||||||||||
155 | { "link", Value_Link }, | - | ||||||||||||||||||||||||
156 | { "link-visited", Value_LinkVisited }, | - | ||||||||||||||||||||||||
157 | { "lower-alpha", Value_LowerAlpha }, | - | ||||||||||||||||||||||||
158 | { "lower-roman", Value_LowerRoman }, | - | ||||||||||||||||||||||||
159 | { "lowercase", Value_Lowercase }, | - | ||||||||||||||||||||||||
160 | { "medium", Value_Medium }, | - | ||||||||||||||||||||||||
161 | { "mid", Value_Mid }, | - | ||||||||||||||||||||||||
162 | { "middle", Value_Middle }, | - | ||||||||||||||||||||||||
163 | { "midlight", Value_Midlight }, | - | ||||||||||||||||||||||||
164 | { "native", Value_Native }, | - | ||||||||||||||||||||||||
165 | { "none", Value_None }, | - | ||||||||||||||||||||||||
166 | { "normal", Value_Normal }, | - | ||||||||||||||||||||||||
167 | { "nowrap", Value_NoWrap }, | - | ||||||||||||||||||||||||
168 | { "oblique", Value_Oblique }, | - | ||||||||||||||||||||||||
169 | { "off", Value_Off }, | - | ||||||||||||||||||||||||
170 | { "on", Value_On }, | - | ||||||||||||||||||||||||
171 | { "outset", Value_Outset }, | - | ||||||||||||||||||||||||
172 | { "overline", Value_Overline }, | - | ||||||||||||||||||||||||
173 | { "pre", Value_Pre }, | - | ||||||||||||||||||||||||
174 | { "pre-wrap", Value_PreWrap }, | - | ||||||||||||||||||||||||
175 | { "ridge", Value_Ridge }, | - | ||||||||||||||||||||||||
176 | { "right", Value_Right }, | - | ||||||||||||||||||||||||
177 | { "selected", Value_Selected }, | - | ||||||||||||||||||||||||
178 | { "shadow", Value_Shadow }, | - | ||||||||||||||||||||||||
179 | { "small" , Value_Small }, | - | ||||||||||||||||||||||||
180 | { "small-caps", Value_SmallCaps }, | - | ||||||||||||||||||||||||
181 | { "solid", Value_Solid }, | - | ||||||||||||||||||||||||
182 | { "square", Value_Square }, | - | ||||||||||||||||||||||||
183 | { "sub", Value_Sub }, | - | ||||||||||||||||||||||||
184 | { "super", Value_Super }, | - | ||||||||||||||||||||||||
185 | { "text", Value_Text }, | - | ||||||||||||||||||||||||
186 | { "top", Value_Top }, | - | ||||||||||||||||||||||||
187 | { "transparent", Value_Transparent }, | - | ||||||||||||||||||||||||
188 | { "underline", Value_Underline }, | - | ||||||||||||||||||||||||
189 | { "upper-alpha", Value_UpperAlpha }, | - | ||||||||||||||||||||||||
190 | { "upper-roman", Value_UpperRoman }, | - | ||||||||||||||||||||||||
191 | { "uppercase", Value_Uppercase }, | - | ||||||||||||||||||||||||
192 | { "wave", Value_Wave }, | - | ||||||||||||||||||||||||
193 | { "window", Value_Window }, | - | ||||||||||||||||||||||||
194 | { "window-text", Value_WindowText }, | - | ||||||||||||||||||||||||
195 | { "x-large", Value_XLarge }, | - | ||||||||||||||||||||||||
196 | { "xx-large", Value_XXLarge } | - | ||||||||||||||||||||||||
197 | }; | - | ||||||||||||||||||||||||
198 | - | |||||||||||||||||||||||||
199 | - | |||||||||||||||||||||||||
200 | static const short indexOfId[NumKnownValues] = { 0, 41, 48, 42, 49, 54, 35, 26, 70, 71, 25, 43, 5, 63, 47, | - | ||||||||||||||||||||||||
201 | 29, 58, 59, 27, 51, 61, 6, 10, 39, 56, 19, 13, 17, 18, 20, 21, 50, 24, 46, 67, 37, 3, 2, 40, 62, 16, | - | ||||||||||||||||||||||||
202 | 11, 57, 14, 32, 64, 33, 65, 55, 66, 34, 69, 8, 28, 38, 12, 36, 60, 7, 9, 4, 68, 53, 22, 23, 30, 31, | - | ||||||||||||||||||||||||
203 | 1, 15, 0, 52, 45, 44 }; | - | ||||||||||||||||||||||||
204 | - | |||||||||||||||||||||||||
205 | QString Value::toString() const | - | ||||||||||||||||||||||||
206 | { | - | ||||||||||||||||||||||||
207 | if (type == KnownIdentifier
| 0 | ||||||||||||||||||||||||
208 | return never executed: QLatin1String(values[indexOfId[variant.toInt()]].name);return QLatin1String(values[indexOfId[variant.toInt()]].name); never executed: return QLatin1String(values[indexOfId[variant.toInt()]].name); | 0 | ||||||||||||||||||||||||
209 | } else { | - | ||||||||||||||||||||||||
210 | return never executed: variant.toString();return variant.toString(); never executed: return variant.toString(); | 0 | ||||||||||||||||||||||||
211 | } | - | ||||||||||||||||||||||||
212 | } | - | ||||||||||||||||||||||||
213 | - | |||||||||||||||||||||||||
214 | static const QCssKnownValue pseudos[NumPseudos - 1] = { | - | ||||||||||||||||||||||||
215 | { "active", PseudoClass_Active }, | - | ||||||||||||||||||||||||
216 | { "adjoins-item", PseudoClass_Item }, | - | ||||||||||||||||||||||||
217 | { "alternate", PseudoClass_Alternate }, | - | ||||||||||||||||||||||||
218 | { "bottom", PseudoClass_Bottom }, | - | ||||||||||||||||||||||||
219 | { "checked", PseudoClass_Checked }, | - | ||||||||||||||||||||||||
220 | { "closable", PseudoClass_Closable }, | - | ||||||||||||||||||||||||
221 | { "closed", PseudoClass_Closed }, | - | ||||||||||||||||||||||||
222 | { "default", PseudoClass_Default }, | - | ||||||||||||||||||||||||
223 | { "disabled", PseudoClass_Disabled }, | - | ||||||||||||||||||||||||
224 | { "edit-focus", PseudoClass_EditFocus }, | - | ||||||||||||||||||||||||
225 | { "editable", PseudoClass_Editable }, | - | ||||||||||||||||||||||||
226 | { "enabled", PseudoClass_Enabled }, | - | ||||||||||||||||||||||||
227 | { "exclusive", PseudoClass_Exclusive }, | - | ||||||||||||||||||||||||
228 | { "first", PseudoClass_First }, | - | ||||||||||||||||||||||||
229 | { "flat", PseudoClass_Flat }, | - | ||||||||||||||||||||||||
230 | { "floatable", PseudoClass_Floatable }, | - | ||||||||||||||||||||||||
231 | { "focus", PseudoClass_Focus }, | - | ||||||||||||||||||||||||
232 | { "has-children", PseudoClass_Children }, | - | ||||||||||||||||||||||||
233 | { "has-siblings", PseudoClass_Sibling }, | - | ||||||||||||||||||||||||
234 | { "horizontal", PseudoClass_Horizontal }, | - | ||||||||||||||||||||||||
235 | { "hover", PseudoClass_Hover }, | - | ||||||||||||||||||||||||
236 | { "indeterminate" , PseudoClass_Indeterminate }, | - | ||||||||||||||||||||||||
237 | { "last", PseudoClass_Last }, | - | ||||||||||||||||||||||||
238 | { "left", PseudoClass_Left }, | - | ||||||||||||||||||||||||
239 | { "maximized", PseudoClass_Maximized }, | - | ||||||||||||||||||||||||
240 | { "middle", PseudoClass_Middle }, | - | ||||||||||||||||||||||||
241 | { "minimized", PseudoClass_Minimized }, | - | ||||||||||||||||||||||||
242 | { "movable", PseudoClass_Movable }, | - | ||||||||||||||||||||||||
243 | { "next-selected", PseudoClass_NextSelected }, | - | ||||||||||||||||||||||||
244 | { "no-frame", PseudoClass_Frameless }, | - | ||||||||||||||||||||||||
245 | { "non-exclusive", PseudoClass_NonExclusive }, | - | ||||||||||||||||||||||||
246 | { "off", PseudoClass_Unchecked }, | - | ||||||||||||||||||||||||
247 | { "on", PseudoClass_Checked }, | - | ||||||||||||||||||||||||
248 | { "only-one", PseudoClass_OnlyOne }, | - | ||||||||||||||||||||||||
249 | { "open", PseudoClass_Open }, | - | ||||||||||||||||||||||||
250 | { "pressed", PseudoClass_Pressed }, | - | ||||||||||||||||||||||||
251 | { "previous-selected", PseudoClass_PreviousSelected }, | - | ||||||||||||||||||||||||
252 | { "read-only", PseudoClass_ReadOnly }, | - | ||||||||||||||||||||||||
253 | { "right", PseudoClass_Right }, | - | ||||||||||||||||||||||||
254 | { "selected", PseudoClass_Selected }, | - | ||||||||||||||||||||||||
255 | { "top", PseudoClass_Top }, | - | ||||||||||||||||||||||||
256 | { "unchecked" , PseudoClass_Unchecked }, | - | ||||||||||||||||||||||||
257 | { "vertical", PseudoClass_Vertical }, | - | ||||||||||||||||||||||||
258 | { "window", PseudoClass_Window } | - | ||||||||||||||||||||||||
259 | }; | - | ||||||||||||||||||||||||
260 | - | |||||||||||||||||||||||||
261 | static const QCssKnownValue origins[NumKnownOrigins - 1] = { | - | ||||||||||||||||||||||||
262 | { "border", Origin_Border }, | - | ||||||||||||||||||||||||
263 | { "content", Origin_Content }, | - | ||||||||||||||||||||||||
264 | { "margin", Origin_Margin }, | - | ||||||||||||||||||||||||
265 | { "padding", Origin_Padding } | - | ||||||||||||||||||||||||
266 | }; | - | ||||||||||||||||||||||||
267 | - | |||||||||||||||||||||||||
268 | static const QCssKnownValue repeats[NumKnownRepeats - 1] = { | - | ||||||||||||||||||||||||
269 | { "no-repeat", Repeat_None }, | - | ||||||||||||||||||||||||
270 | { "repeat-x", Repeat_X }, | - | ||||||||||||||||||||||||
271 | { "repeat-xy", Repeat_XY }, | - | ||||||||||||||||||||||||
272 | { "repeat-y", Repeat_Y } | - | ||||||||||||||||||||||||
273 | }; | - | ||||||||||||||||||||||||
274 | - | |||||||||||||||||||||||||
275 | static const QCssKnownValue tileModes[NumKnownTileModes - 1] = { | - | ||||||||||||||||||||||||
276 | { "repeat", TileMode_Repeat }, | - | ||||||||||||||||||||||||
277 | { "round", TileMode_Round }, | - | ||||||||||||||||||||||||
278 | { "stretch", TileMode_Stretch }, | - | ||||||||||||||||||||||||
279 | }; | - | ||||||||||||||||||||||||
280 | - | |||||||||||||||||||||||||
281 | static const QCssKnownValue positions[NumKnownPositionModes - 1] = { | - | ||||||||||||||||||||||||
282 | { "absolute", PositionMode_Absolute }, | - | ||||||||||||||||||||||||
283 | { "fixed", PositionMode_Fixed }, | - | ||||||||||||||||||||||||
284 | { "relative", PositionMode_Relative }, | - | ||||||||||||||||||||||||
285 | { "static", PositionMode_Static } | - | ||||||||||||||||||||||||
286 | }; | - | ||||||||||||||||||||||||
287 | - | |||||||||||||||||||||||||
288 | static const QCssKnownValue attachments[NumKnownAttachments - 1] = { | - | ||||||||||||||||||||||||
289 | { "fixed", Attachment_Fixed }, | - | ||||||||||||||||||||||||
290 | { "scroll", Attachment_Scroll } | - | ||||||||||||||||||||||||
291 | }; | - | ||||||||||||||||||||||||
292 | - | |||||||||||||||||||||||||
293 | static const QCssKnownValue styleFeatures[NumKnownStyleFeatures - 1] = { | - | ||||||||||||||||||||||||
294 | { "background-color", StyleFeature_BackgroundColor }, | - | ||||||||||||||||||||||||
295 | { "background-gradient", StyleFeature_BackgroundGradient }, | - | ||||||||||||||||||||||||
296 | { "none", StyleFeature_None } | - | ||||||||||||||||||||||||
297 | }; | - | ||||||||||||||||||||||||
298 | static bool operator<(const QString &name, const QCssKnownValue &prop) | - | ||||||||||||||||||||||||
299 | { | - | ||||||||||||||||||||||||
300 | return never executed: QString::compare(name, QLatin1String(prop.name), Qt::CaseInsensitive) < 0;return QString::compare(name, QLatin1String(prop.name), Qt::CaseInsensitive) < 0; never executed: return QString::compare(name, QLatin1String(prop.name), Qt::CaseInsensitive) < 0; | 0 | ||||||||||||||||||||||||
301 | } | - | ||||||||||||||||||||||||
302 | - | |||||||||||||||||||||||||
303 | static bool operator<(const QCssKnownValue &prop, const QString &name) | - | ||||||||||||||||||||||||
304 | { | - | ||||||||||||||||||||||||
305 | return never executed: QString::compare(QLatin1String(prop.name), name, Qt::CaseInsensitive) < 0;return QString::compare(QLatin1String(prop.name), name, Qt::CaseInsensitive) < 0; never executed: return QString::compare(QLatin1String(prop.name), name, Qt::CaseInsensitive) < 0; | 0 | ||||||||||||||||||||||||
306 | } | - | ||||||||||||||||||||||||
307 | - | |||||||||||||||||||||||||
308 | static quint64 findKnownValue(const QString &name, const QCssKnownValue *start, int numValues) | - | ||||||||||||||||||||||||
309 | { | - | ||||||||||||||||||||||||
310 | const QCssKnownValue *end = &start[numValues - 1]; | - | ||||||||||||||||||||||||
311 | const QCssKnownValue *prop = std::lower_bound(start, end, name); | - | ||||||||||||||||||||||||
312 | if ((
| 0 | ||||||||||||||||||||||||
313 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
314 | return never executed: prop->id;return prop->id; never executed: return prop->id; | 0 | ||||||||||||||||||||||||
315 | } | - | ||||||||||||||||||||||||
316 | - | |||||||||||||||||||||||||
317 | static inline bool isInheritable(Property propertyId) | - | ||||||||||||||||||||||||
318 | { | - | ||||||||||||||||||||||||
319 | switch (propertyId) { | - | ||||||||||||||||||||||||
320 | case never executed: Font:case Font: never executed: case Font: | 0 | ||||||||||||||||||||||||
321 | case never executed: FontFamily:case FontFamily: never executed: case FontFamily: | 0 | ||||||||||||||||||||||||
322 | case never executed: FontSize:case FontSize: never executed: case FontSize: | 0 | ||||||||||||||||||||||||
323 | case never executed: FontStyle:case FontStyle: never executed: case FontStyle: | 0 | ||||||||||||||||||||||||
324 | case never executed: FontWeight:case FontWeight: never executed: case FontWeight: | 0 | ||||||||||||||||||||||||
325 | case never executed: TextIndent:case TextIndent: never executed: case TextIndent: | 0 | ||||||||||||||||||||||||
326 | case never executed: Whitespace:case Whitespace: never executed: case Whitespace: | 0 | ||||||||||||||||||||||||
327 | case never executed: ListStyleType:case ListStyleType: never executed: case ListStyleType: | 0 | ||||||||||||||||||||||||
328 | case never executed: ListStyle:case ListStyle: never executed: case ListStyle: | 0 | ||||||||||||||||||||||||
329 | case never executed: TextAlignment:case TextAlignment: never executed: case TextAlignment: | 0 | ||||||||||||||||||||||||
330 | case never executed: FontVariant:case FontVariant: never executed: case FontVariant: | 0 | ||||||||||||||||||||||||
331 | case never executed: TextTransform:case TextTransform: never executed: case TextTransform: | 0 | ||||||||||||||||||||||||
332 | case never executed: LineHeight:case LineHeight: never executed: case LineHeight: | 0 | ||||||||||||||||||||||||
333 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
334 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
335 | break; never executed: break; | 0 | ||||||||||||||||||||||||
336 | } | - | ||||||||||||||||||||||||
337 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
338 | } | - | ||||||||||||||||||||||||
339 | - | |||||||||||||||||||||||||
340 | - | |||||||||||||||||||||||||
341 | - | |||||||||||||||||||||||||
342 | ValueExtractor::ValueExtractor(const QVector<Declaration> &decls, const QPalette &pal) | - | ||||||||||||||||||||||||
343 | : declarations(decls), adjustment(0), fontExtracted(false), pal(pal) | - | ||||||||||||||||||||||||
344 | { | - | ||||||||||||||||||||||||
345 | } never executed: end of block | 0 | ||||||||||||||||||||||||
346 | - | |||||||||||||||||||||||||
347 | LengthData ValueExtractor::lengthValue(const Value& v) | - | ||||||||||||||||||||||||
348 | { | - | ||||||||||||||||||||||||
349 | QString s = v.variant.toString(); | - | ||||||||||||||||||||||||
350 | s.reserve(s.length()); | - | ||||||||||||||||||||||||
351 | LengthData data; | - | ||||||||||||||||||||||||
352 | data.unit = LengthData::None; | - | ||||||||||||||||||||||||
353 | if (s.endsWith(QLatin1String("px"), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
354 | data.unit = LengthData::Px; never executed: data.unit = LengthData::Px; | 0 | ||||||||||||||||||||||||
355 | else if (s.endsWith(QLatin1String("ex"), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
356 | data.unit = LengthData::Ex; never executed: data.unit = LengthData::Ex; | 0 | ||||||||||||||||||||||||
357 | else if (s.endsWith(QLatin1String("em"), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
358 | data.unit = LengthData::Em; never executed: data.unit = LengthData::Em; | 0 | ||||||||||||||||||||||||
359 | - | |||||||||||||||||||||||||
360 | if (data.unit != LengthData::None
| 0 | ||||||||||||||||||||||||
361 | s.chop(2); never executed: s.chop(2); | 0 | ||||||||||||||||||||||||
362 | - | |||||||||||||||||||||||||
363 | data.number = s.toDouble(); | - | ||||||||||||||||||||||||
364 | return never executed: data;return data; never executed: return data; | 0 | ||||||||||||||||||||||||
365 | } | - | ||||||||||||||||||||||||
366 | - | |||||||||||||||||||||||||
367 | static int lengthValueFromData(const LengthData& data, const QFont& f) | - | ||||||||||||||||||||||||
368 | { | - | ||||||||||||||||||||||||
369 | if (data.unit == LengthData::Ex
| 0 | ||||||||||||||||||||||||
370 | return never executed: qRound(QFontMetrics(f).xHeight() * data.number);return qRound(QFontMetrics(f).xHeight() * data.number); never executed: return qRound(QFontMetrics(f).xHeight() * data.number); | 0 | ||||||||||||||||||||||||
371 | else if (data.unit == LengthData::Em
| 0 | ||||||||||||||||||||||||
372 | return never executed: qRound(QFontMetrics(f).height() * data.number);return qRound(QFontMetrics(f).height() * data.number); never executed: return qRound(QFontMetrics(f).height() * data.number); | 0 | ||||||||||||||||||||||||
373 | return never executed: qRound(data.number);return qRound(data.number); never executed: return qRound(data.number); | 0 | ||||||||||||||||||||||||
374 | } | - | ||||||||||||||||||||||||
375 | - | |||||||||||||||||||||||||
376 | int ValueExtractor::lengthValue(const Declaration &decl) | - | ||||||||||||||||||||||||
377 | { | - | ||||||||||||||||||||||||
378 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
379 | return never executed: lengthValueFromData(qvariant_cast<LengthData>(decl.d->parsed), f);return lengthValueFromData(qvariant_cast<LengthData>(decl.d->parsed), f); never executed: return lengthValueFromData(qvariant_cast<LengthData>(decl.d->parsed), f); | 0 | ||||||||||||||||||||||||
380 | if (decl.d->values.count() < 1
| 0 | ||||||||||||||||||||||||
381 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||||||||
382 | LengthData data = lengthValue(decl.d->values.at(0)); | - | ||||||||||||||||||||||||
383 | decl.d->parsed = QVariant::fromValue<LengthData>(data); | - | ||||||||||||||||||||||||
384 | return never executed: lengthValueFromData(data,f);return lengthValueFromData(data,f); never executed: return lengthValueFromData(data,f); | 0 | ||||||||||||||||||||||||
385 | } | - | ||||||||||||||||||||||||
386 | - | |||||||||||||||||||||||||
387 | void ValueExtractor::lengthValues(const Declaration &decl, int *m) | - | ||||||||||||||||||||||||
388 | { | - | ||||||||||||||||||||||||
389 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
390 | QList<QVariant> v = decl.d->parsed.toList(); | - | ||||||||||||||||||||||||
391 | for (int i = 0; i < 4
| 0 | ||||||||||||||||||||||||
392 | m[i] = lengthValueFromData(qvariant_cast<LengthData>(v.at(i)), f); never executed: m[i] = lengthValueFromData(qvariant_cast<LengthData>(v.at(i)), f); | 0 | ||||||||||||||||||||||||
393 | return; never executed: return; | 0 | ||||||||||||||||||||||||
394 | } | - | ||||||||||||||||||||||||
395 | - | |||||||||||||||||||||||||
396 | LengthData datas[4]; | - | ||||||||||||||||||||||||
397 | int i; | - | ||||||||||||||||||||||||
398 | for (i = 0; i < qMin(decl.d->values.count(), 4)
| 0 | ||||||||||||||||||||||||
399 | datas[i] = lengthValue(decl.d->values[i]); never executed: datas[i] = lengthValue(decl.d->values[i]); | 0 | ||||||||||||||||||||||||
400 | - | |||||||||||||||||||||||||
401 | if (i == 0
| 0 | ||||||||||||||||||||||||
402 | LengthData zero = {0.0, LengthData::None}; | - | ||||||||||||||||||||||||
403 | datas[0] = datas[1] = datas[2] = datas[3] = zero; | - | ||||||||||||||||||||||||
404 | } never executed: else if (i == 1end of block
| 0 | ||||||||||||||||||||||||
405 | datas[3] = datas[2] = datas[1] = datas[0]; | - | ||||||||||||||||||||||||
406 | } never executed: else if (i == 2end of block
| 0 | ||||||||||||||||||||||||
407 | datas[2] = datas[0]; | - | ||||||||||||||||||||||||
408 | datas[3] = datas[1]; | - | ||||||||||||||||||||||||
409 | } never executed: else if (i == 3end of block
| 0 | ||||||||||||||||||||||||
410 | datas[3] = datas[1]; | - | ||||||||||||||||||||||||
411 | } never executed: end of block | 0 | ||||||||||||||||||||||||
412 | - | |||||||||||||||||||||||||
413 | QList<QVariant> v; | - | ||||||||||||||||||||||||
414 | v.reserve(4); | - | ||||||||||||||||||||||||
415 | for (i = 0; i < 4
| 0 | ||||||||||||||||||||||||
416 | v += QVariant::fromValue<LengthData>(datas[i]); | - | ||||||||||||||||||||||||
417 | m[i] = lengthValueFromData(datas[i], f); | - | ||||||||||||||||||||||||
418 | } never executed: end of block | 0 | ||||||||||||||||||||||||
419 | decl.d->parsed = v; | - | ||||||||||||||||||||||||
420 | } never executed: end of block | 0 | ||||||||||||||||||||||||
421 | - | |||||||||||||||||||||||||
422 | bool ValueExtractor::extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh) | - | ||||||||||||||||||||||||
423 | { | - | ||||||||||||||||||||||||
424 | extractFont(); | - | ||||||||||||||||||||||||
425 | bool hit = false; | - | ||||||||||||||||||||||||
426 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
427 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
428 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
429 | case never executed: Width:case Width: never executed: *w = lengthValue(decl); break;case Width: never executed: break; | 0 | ||||||||||||||||||||||||
430 | case never executed: Height:case Height: never executed: *h = lengthValue(decl); break;case Height: never executed: break; | 0 | ||||||||||||||||||||||||
431 | case never executed: MinimumWidth:case MinimumWidth: never executed: *minw = lengthValue(decl); break;case MinimumWidth: never executed: break; | 0 | ||||||||||||||||||||||||
432 | case never executed: MinimumHeight:case MinimumHeight: never executed: *minh = lengthValue(decl); break;case MinimumHeight: never executed: break; | 0 | ||||||||||||||||||||||||
433 | case never executed: MaximumWidth:case MaximumWidth: never executed: *maxw = lengthValue(decl); break;case MaximumWidth: never executed: break; | 0 | ||||||||||||||||||||||||
434 | case never executed: MaximumHeight:case MaximumHeight: never executed: *maxh = lengthValue(decl); break;case MaximumHeight: never executed: break; | 0 | ||||||||||||||||||||||||
435 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
436 | } | - | ||||||||||||||||||||||||
437 | hit = true; | - | ||||||||||||||||||||||||
438 | } never executed: end of block | 0 | ||||||||||||||||||||||||
439 | - | |||||||||||||||||||||||||
440 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
441 | } | - | ||||||||||||||||||||||||
442 | - | |||||||||||||||||||||||||
443 | bool ValueExtractor::extractPosition(int *left, int *top, int *right, int *bottom, QCss::Origin *origin, | - | ||||||||||||||||||||||||
444 | Qt::Alignment *position, QCss::PositionMode *mode, Qt::Alignment *textAlignment) | - | ||||||||||||||||||||||||
445 | { | - | ||||||||||||||||||||||||
446 | extractFont(); | - | ||||||||||||||||||||||||
447 | bool hit = false; | - | ||||||||||||||||||||||||
448 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
449 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
450 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
451 | case never executed: Left:case Left: never executed: *left = lengthValue(decl); break;case Left: never executed: break; | 0 | ||||||||||||||||||||||||
452 | case never executed: Top:case Top: never executed: *top = lengthValue(decl); break;case Top: never executed: break; | 0 | ||||||||||||||||||||||||
453 | case never executed: Right:case Right: never executed: *right = lengthValue(decl); break;case Right: never executed: break; | 0 | ||||||||||||||||||||||||
454 | case never executed: Bottom:case Bottom: never executed: *bottom = lengthValue(decl); break;case Bottom: never executed: break; | 0 | ||||||||||||||||||||||||
455 | case never executed: QtOrigin:case QtOrigin: never executed: *origin = decl.originValue(); break;case QtOrigin: never executed: break; | 0 | ||||||||||||||||||||||||
456 | case never executed: QtPosition:case QtPosition: never executed: *position = decl.alignmentValue(); break;case QtPosition: never executed: break; | 0 | ||||||||||||||||||||||||
457 | case never executed: TextAlignment:case TextAlignment: never executed: *textAlignment = decl.alignmentValue(); break;case TextAlignment: never executed: break; | 0 | ||||||||||||||||||||||||
458 | case never executed: Position:case Position: never executed: *mode = decl.positionValue(); break;case Position: never executed: break; | 0 | ||||||||||||||||||||||||
459 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
460 | } | - | ||||||||||||||||||||||||
461 | hit = true; | - | ||||||||||||||||||||||||
462 | } never executed: end of block | 0 | ||||||||||||||||||||||||
463 | - | |||||||||||||||||||||||||
464 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
465 | } | - | ||||||||||||||||||||||||
466 | - | |||||||||||||||||||||||||
467 | bool ValueExtractor::extractBox(int *margins, int *paddings, int *spacing) | - | ||||||||||||||||||||||||
468 | { | - | ||||||||||||||||||||||||
469 | extractFont(); | - | ||||||||||||||||||||||||
470 | bool hit = false; | - | ||||||||||||||||||||||||
471 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
472 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
473 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
474 | case never executed: PaddingLeft:case PaddingLeft: never executed: paddings[LeftEdge] = lengthValue(decl); break;case PaddingLeft: never executed: break; | 0 | ||||||||||||||||||||||||
475 | case never executed: PaddingRight:case PaddingRight: never executed: paddings[RightEdge] = lengthValue(decl); break;case PaddingRight: never executed: break; | 0 | ||||||||||||||||||||||||
476 | case never executed: PaddingTop:case PaddingTop: never executed: paddings[TopEdge] = lengthValue(decl); break;case PaddingTop: never executed: break; | 0 | ||||||||||||||||||||||||
477 | case never executed: PaddingBottom:case PaddingBottom: never executed: paddings[BottomEdge] = lengthValue(decl); break;case PaddingBottom: never executed: break; | 0 | ||||||||||||||||||||||||
478 | case never executed: Padding:case Padding: never executed: lengthValues(decl, paddings); break;case Padding: never executed: break; | 0 | ||||||||||||||||||||||||
479 | - | |||||||||||||||||||||||||
480 | case never executed: MarginLeft:case MarginLeft: never executed: margins[LeftEdge] = lengthValue(decl); break;case MarginLeft: never executed: break; | 0 | ||||||||||||||||||||||||
481 | case never executed: MarginRight:case MarginRight: never executed: margins[RightEdge] = lengthValue(decl); break;case MarginRight: never executed: break; | 0 | ||||||||||||||||||||||||
482 | case never executed: MarginTop:case MarginTop: never executed: margins[TopEdge] = lengthValue(decl); break;case MarginTop: never executed: break; | 0 | ||||||||||||||||||||||||
483 | case never executed: MarginBottom:case MarginBottom: never executed: margins[BottomEdge] = lengthValue(decl); break;case MarginBottom: never executed: break; | 0 | ||||||||||||||||||||||||
484 | case never executed: Margin:case Margin: never executed: lengthValues(decl, margins); break;case Margin: never executed: break; | 0 | ||||||||||||||||||||||||
485 | case never executed: QtSpacing:case QtSpacing: never executed: if (spacingcase QtSpacing:
never executed: spacing = lengthValue(decl);*spacing = lengthValue(decl); never executed: break;*spacing = lengthValue(decl); never executed: break; | 0 | ||||||||||||||||||||||||
486 | - | |||||||||||||||||||||||||
487 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
488 | } | - | ||||||||||||||||||||||||
489 | hit = true; | - | ||||||||||||||||||||||||
490 | } never executed: end of block | 0 | ||||||||||||||||||||||||
491 | - | |||||||||||||||||||||||||
492 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
493 | } | - | ||||||||||||||||||||||||
494 | - | |||||||||||||||||||||||||
495 | int ValueExtractor::extractStyleFeatures() | - | ||||||||||||||||||||||||
496 | { | - | ||||||||||||||||||||||||
497 | int features = StyleFeature_None; | - | ||||||||||||||||||||||||
498 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
499 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
500 | if (decl.d->propertyId == QtStyleFeatures
| 0 | ||||||||||||||||||||||||
501 | features = decl.styleFeaturesValue(); never executed: features = decl.styleFeaturesValue(); | 0 | ||||||||||||||||||||||||
502 | } never executed: end of block | 0 | ||||||||||||||||||||||||
503 | return never executed: features;return features; never executed: return features; | 0 | ||||||||||||||||||||||||
504 | } | - | ||||||||||||||||||||||||
505 | - | |||||||||||||||||||||||||
506 | QSize ValueExtractor::sizeValue(const Declaration &decl) | - | ||||||||||||||||||||||||
507 | { | - | ||||||||||||||||||||||||
508 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
509 | QList<QVariant> v = decl.d->parsed.toList(); | - | ||||||||||||||||||||||||
510 | return never executed: QSize(lengthValueFromData(qvariant_cast<LengthData>(v.at(0)), f),return QSize(lengthValueFromData(qvariant_cast<LengthData>(v.at(0)), f), lengthValueFromData(qvariant_cast<LengthData>(v.at(1)), f)); never executed: return QSize(lengthValueFromData(qvariant_cast<LengthData>(v.at(0)), f), lengthValueFromData(qvariant_cast<LengthData>(v.at(1)), f)); | 0 | ||||||||||||||||||||||||
511 | lengthValueFromData(qvariant_cast<LengthData>(v.at(1)), f)); never executed: return QSize(lengthValueFromData(qvariant_cast<LengthData>(v.at(0)), f), lengthValueFromData(qvariant_cast<LengthData>(v.at(1)), f)); | 0 | ||||||||||||||||||||||||
512 | } | - | ||||||||||||||||||||||||
513 | - | |||||||||||||||||||||||||
514 | LengthData x[2] = { {0, LengthData::None }, {0, LengthData::None} }; | - | ||||||||||||||||||||||||
515 | if (decl.d->values.count() > 0
| 0 | ||||||||||||||||||||||||
516 | x[0] = lengthValue(decl.d->values.at(0)); never executed: x[0] = lengthValue(decl.d->values.at(0)); | 0 | ||||||||||||||||||||||||
517 | if (decl.d->values.count() > 1
| 0 | ||||||||||||||||||||||||
518 | x[1] = lengthValue(decl.d->values.at(1)); never executed: x[1] = lengthValue(decl.d->values.at(1)); | 0 | ||||||||||||||||||||||||
519 | else | - | ||||||||||||||||||||||||
520 | x[1] = x[0]; never executed: x[1] = x[0]; | 0 | ||||||||||||||||||||||||
521 | QList<QVariant> v; | - | ||||||||||||||||||||||||
522 | v << QVariant::fromValue<LengthData>(x[0]) << QVariant::fromValue<LengthData>(x[1]); | - | ||||||||||||||||||||||||
523 | decl.d->parsed = v; | - | ||||||||||||||||||||||||
524 | return never executed: QSize(lengthValueFromData(x[0], f), lengthValueFromData(x[1], f));return QSize(lengthValueFromData(x[0], f), lengthValueFromData(x[1], f)); never executed: return QSize(lengthValueFromData(x[0], f), lengthValueFromData(x[1], f)); | 0 | ||||||||||||||||||||||||
525 | } | - | ||||||||||||||||||||||||
526 | - | |||||||||||||||||||||||||
527 | void ValueExtractor::sizeValues(const Declaration &decl, QSize *radii) | - | ||||||||||||||||||||||||
528 | { | - | ||||||||||||||||||||||||
529 | radii[0] = sizeValue(decl); | - | ||||||||||||||||||||||||
530 | for (int i = 1; i < 4
| 0 | ||||||||||||||||||||||||
531 | radii[i] = radii[0]; never executed: radii[i] = radii[0]; | 0 | ||||||||||||||||||||||||
532 | } never executed: end of block | 0 | ||||||||||||||||||||||||
533 | - | |||||||||||||||||||||||||
534 | bool ValueExtractor::extractBorder(int *borders, QBrush *colors, BorderStyle *styles, | - | ||||||||||||||||||||||||
535 | QSize *radii) | - | ||||||||||||||||||||||||
536 | { | - | ||||||||||||||||||||||||
537 | extractFont(); | - | ||||||||||||||||||||||||
538 | bool hit = false; | - | ||||||||||||||||||||||||
539 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
540 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
541 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
542 | case never executed: BorderLeftWidth:case BorderLeftWidth: never executed: borders[LeftEdge] = lengthValue(decl); break;case BorderLeftWidth: never executed: break; | 0 | ||||||||||||||||||||||||
543 | case never executed: BorderRightWidth:case BorderRightWidth: never executed: borders[RightEdge] = lengthValue(decl); break;case BorderRightWidth: never executed: break; | 0 | ||||||||||||||||||||||||
544 | case never executed: BorderTopWidth:case BorderTopWidth: never executed: borders[TopEdge] = lengthValue(decl); break;case BorderTopWidth: never executed: break; | 0 | ||||||||||||||||||||||||
545 | case never executed: BorderBottomWidth:case BorderBottomWidth: never executed: borders[BottomEdge] = lengthValue(decl); break;case BorderBottomWidth: never executed: break; | 0 | ||||||||||||||||||||||||
546 | case never executed: BorderWidth:case BorderWidth: never executed: lengthValues(decl, borders); break;case BorderWidth: never executed: break; | 0 | ||||||||||||||||||||||||
547 | - | |||||||||||||||||||||||||
548 | case never executed: BorderLeftColor:case BorderLeftColor: never executed: colors[LeftEdge] = decl.brushValue(pal); break;case BorderLeftColor: never executed: break; | 0 | ||||||||||||||||||||||||
549 | case never executed: BorderRightColor:case BorderRightColor: never executed: colors[RightEdge] = decl.brushValue(pal); break;case BorderRightColor: never executed: break; | 0 | ||||||||||||||||||||||||
550 | case never executed: BorderTopColor:case BorderTopColor: never executed: colors[TopEdge] = decl.brushValue(pal); break;case BorderTopColor: never executed: break; | 0 | ||||||||||||||||||||||||
551 | case never executed: BorderBottomColor:case BorderBottomColor: never executed: colors[BottomEdge] = decl.brushValue(pal); break;case BorderBottomColor: never executed: break; | 0 | ||||||||||||||||||||||||
552 | case never executed: BorderColor:case BorderColor: never executed: decl.brushValues(colors, pal); break;case BorderColor: never executed: break; | 0 | ||||||||||||||||||||||||
553 | - | |||||||||||||||||||||||||
554 | case never executed: BorderTopStyle:case BorderTopStyle: never executed: styles[TopEdge] = decl.styleValue(); break;case BorderTopStyle: never executed: break; | 0 | ||||||||||||||||||||||||
555 | case never executed: BorderBottomStyle:case BorderBottomStyle: never executed: styles[BottomEdge] = decl.styleValue(); break;case BorderBottomStyle: never executed: break; | 0 | ||||||||||||||||||||||||
556 | case never executed: BorderLeftStyle:case BorderLeftStyle: never executed: styles[LeftEdge] = decl.styleValue(); break;case BorderLeftStyle: never executed: break; | 0 | ||||||||||||||||||||||||
557 | case never executed: BorderRightStyle:case BorderRightStyle: never executed: styles[RightEdge] = decl.styleValue(); break;case BorderRightStyle: never executed: break; | 0 | ||||||||||||||||||||||||
558 | case never executed: BorderStyles:case BorderStyles: never executed: decl.styleValues(styles); break;case BorderStyles: never executed: break; | 0 | ||||||||||||||||||||||||
559 | - | |||||||||||||||||||||||||
560 | - | |||||||||||||||||||||||||
561 | case never executed: BorderTopLeftRadius:case BorderTopLeftRadius: never executed: radii[0] = sizeValue(decl); break;case BorderTopLeftRadius: never executed: break; | 0 | ||||||||||||||||||||||||
562 | - | |||||||||||||||||||||||||
563 | - | |||||||||||||||||||||||||
564 | - | |||||||||||||||||||||||||
565 | case never executed: BorderTopRightRadius:case BorderTopRightRadius: never executed: radii[1] = sizeValue(decl); break;case BorderTopRightRadius: never executed: break; | 0 | ||||||||||||||||||||||||
566 | case never executed: BorderBottomLeftRadius:case BorderBottomLeftRadius: never executed: radii[2] = sizeValue(decl); break;case BorderBottomLeftRadius: never executed: break; | 0 | ||||||||||||||||||||||||
567 | case never executed: BorderBottomRightRadius:case BorderBottomRightRadius: never executed: radii[3] = sizeValue(decl); break;case BorderBottomRightRadius: never executed: break; | 0 | ||||||||||||||||||||||||
568 | case never executed: BorderRadius:case BorderRadius: never executed: sizeValues(decl, radii); break;case BorderRadius: never executed: break; | 0 | ||||||||||||||||||||||||
569 | - | |||||||||||||||||||||||||
570 | case never executed: BorderLeft:case BorderLeft: never executed: case BorderLeft: | 0 | ||||||||||||||||||||||||
571 | borderValue(decl, &borders[LeftEdge], &styles[LeftEdge], &colors[LeftEdge]); | - | ||||||||||||||||||||||||
572 | break; never executed: break; | 0 | ||||||||||||||||||||||||
573 | case never executed: BorderTop:case BorderTop: never executed: case BorderTop: | 0 | ||||||||||||||||||||||||
574 | borderValue(decl, &borders[TopEdge], &styles[TopEdge], &colors[TopEdge]); | - | ||||||||||||||||||||||||
575 | break; never executed: break; | 0 | ||||||||||||||||||||||||
576 | case never executed: BorderRight:case BorderRight: never executed: case BorderRight: | 0 | ||||||||||||||||||||||||
577 | borderValue(decl, &borders[RightEdge], &styles[RightEdge], &colors[RightEdge]); | - | ||||||||||||||||||||||||
578 | break; never executed: break; | 0 | ||||||||||||||||||||||||
579 | case never executed: BorderBottom:case BorderBottom: never executed: case BorderBottom: | 0 | ||||||||||||||||||||||||
580 | borderValue(decl, &borders[BottomEdge], &styles[BottomEdge], &colors[BottomEdge]); | - | ||||||||||||||||||||||||
581 | break; never executed: break; | 0 | ||||||||||||||||||||||||
582 | case never executed: Border:case Border: never executed: case Border: | 0 | ||||||||||||||||||||||||
583 | borderValue(decl, &borders[LeftEdge], &styles[LeftEdge], &colors[LeftEdge]); | - | ||||||||||||||||||||||||
584 | borders[TopEdge] = borders[RightEdge] = borders[BottomEdge] = borders[LeftEdge]; | - | ||||||||||||||||||||||||
585 | styles[TopEdge] = styles[RightEdge] = styles[BottomEdge] = styles[LeftEdge]; | - | ||||||||||||||||||||||||
586 | colors[TopEdge] = colors[RightEdge] = colors[BottomEdge] = colors[LeftEdge]; | - | ||||||||||||||||||||||||
587 | break; never executed: break; | 0 | ||||||||||||||||||||||||
588 | - | |||||||||||||||||||||||||
589 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
590 | } | - | ||||||||||||||||||||||||
591 | hit = true; | - | ||||||||||||||||||||||||
592 | } never executed: end of block | 0 | ||||||||||||||||||||||||
593 | - | |||||||||||||||||||||||||
594 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
595 | } | - | ||||||||||||||||||||||||
596 | - | |||||||||||||||||||||||||
597 | bool ValueExtractor::extractOutline(int *borders, QBrush *colors, BorderStyle *styles, | - | ||||||||||||||||||||||||
598 | QSize *radii, int *offsets) | - | ||||||||||||||||||||||||
599 | { | - | ||||||||||||||||||||||||
600 | extractFont(); | - | ||||||||||||||||||||||||
601 | bool hit = false; | - | ||||||||||||||||||||||||
602 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
603 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
604 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
605 | case never executed: OutlineWidth:case OutlineWidth: never executed: lengthValues(decl, borders); break;case OutlineWidth: never executed: break; | 0 | ||||||||||||||||||||||||
606 | case never executed: OutlineColor:case OutlineColor: never executed: decl.brushValues(colors, pal); break;case OutlineColor: never executed: break; | 0 | ||||||||||||||||||||||||
607 | case never executed: OutlineStyle:case OutlineStyle: never executed: decl.styleValues(styles); break;case OutlineStyle: never executed: break; | 0 | ||||||||||||||||||||||||
608 | - | |||||||||||||||||||||||||
609 | case never executed: OutlineTopLeftRadius:case OutlineTopLeftRadius: never executed: radii[0] = sizeValue(decl); break;case OutlineTopLeftRadius: never executed: break; | 0 | ||||||||||||||||||||||||
610 | case never executed: OutlineTopRightRadius:case OutlineTopRightRadius: never executed: radii[1] = sizeValue(decl); break;case OutlineTopRightRadius: never executed: break; | 0 | ||||||||||||||||||||||||
611 | case never executed: OutlineBottomLeftRadius:case OutlineBottomLeftRadius: never executed: radii[2] = sizeValue(decl); break;case OutlineBottomLeftRadius: never executed: break; | 0 | ||||||||||||||||||||||||
612 | case never executed: OutlineBottomRightRadius:case OutlineBottomRightRadius: never executed: radii[3] = sizeValue(decl); break;case OutlineBottomRightRadius: never executed: break; | 0 | ||||||||||||||||||||||||
613 | case never executed: OutlineRadius:case OutlineRadius: never executed: sizeValues(decl, radii); break;case OutlineRadius: never executed: break; | 0 | ||||||||||||||||||||||||
614 | case never executed: OutlineOffset:case OutlineOffset: never executed: lengthValues(decl, offsets); break;case OutlineOffset: never executed: break; | 0 | ||||||||||||||||||||||||
615 | - | |||||||||||||||||||||||||
616 | case never executed: Outline:case Outline: never executed: case Outline: | 0 | ||||||||||||||||||||||||
617 | borderValue(decl, &borders[LeftEdge], &styles[LeftEdge], &colors[LeftEdge]); | - | ||||||||||||||||||||||||
618 | borders[TopEdge] = borders[RightEdge] = borders[BottomEdge] = borders[LeftEdge]; | - | ||||||||||||||||||||||||
619 | styles[TopEdge] = styles[RightEdge] = styles[BottomEdge] = styles[LeftEdge]; | - | ||||||||||||||||||||||||
620 | colors[TopEdge] = colors[RightEdge] = colors[BottomEdge] = colors[LeftEdge]; | - | ||||||||||||||||||||||||
621 | break; never executed: break; | 0 | ||||||||||||||||||||||||
622 | - | |||||||||||||||||||||||||
623 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
624 | } | - | ||||||||||||||||||||||||
625 | hit = true; | - | ||||||||||||||||||||||||
626 | } never executed: end of block | 0 | ||||||||||||||||||||||||
627 | - | |||||||||||||||||||||||||
628 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
629 | } | - | ||||||||||||||||||||||||
630 | - | |||||||||||||||||||||||||
631 | static Qt::Alignment parseAlignment(const QCss::Value *values, int count) | - | ||||||||||||||||||||||||
632 | { | - | ||||||||||||||||||||||||
633 | Qt::Alignment a[2] = { 0, 0 }; | - | ||||||||||||||||||||||||
634 | for (int i = 0; i < qMin(2, count)
| 0 | ||||||||||||||||||||||||
635 | if (values[i].type != Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
636 | break; never executed: break; | 0 | ||||||||||||||||||||||||
637 | switch (values[i].variant.toInt()) { | - | ||||||||||||||||||||||||
638 | case never executed: Value_Left:case Value_Left: never executed: a[i] = Qt::AlignLeft; break;case Value_Left: never executed: break; | 0 | ||||||||||||||||||||||||
639 | case never executed: Value_Right:case Value_Right: never executed: a[i] = Qt::AlignRight; break;case Value_Right: never executed: break; | 0 | ||||||||||||||||||||||||
640 | case never executed: Value_Top:case Value_Top: never executed: a[i] = Qt::AlignTop; break;case Value_Top: never executed: break; | 0 | ||||||||||||||||||||||||
641 | case never executed: Value_Bottom:case Value_Bottom: never executed: a[i] = Qt::AlignBottom; break;case Value_Bottom: never executed: break; | 0 | ||||||||||||||||||||||||
642 | case never executed: Value_Center:case Value_Center: never executed: a[i] = Qt::AlignCenter; break;case Value_Center: never executed: break; | 0 | ||||||||||||||||||||||||
643 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
644 | } | - | ||||||||||||||||||||||||
645 | } | - | ||||||||||||||||||||||||
646 | - | |||||||||||||||||||||||||
647 | if (a[0] == Qt::AlignCenter
| 0 | ||||||||||||||||||||||||
648 | a[0] = (a[1] == Qt::AlignLeft
never executed: a[0] = (a[1] == Qt::AlignLeft || a[1] == Qt::AlignRight) ? Qt::AlignVCenter : Qt::AlignHCenter; | 0 | ||||||||||||||||||||||||
649 | if ((a[1] == 0
| 0 | ||||||||||||||||||||||||
650 | a[1] = (a[0] == Qt::AlignLeft
never executed: a[1] = (a[0] == Qt::AlignLeft || a[0] == Qt::AlignRight) ? Qt::AlignVCenter : Qt::AlignHCenter; | 0 | ||||||||||||||||||||||||
651 | return never executed: a[0] | a[1];return a[0] | a[1]; never executed: return a[0] | a[1]; | 0 | ||||||||||||||||||||||||
652 | } | - | ||||||||||||||||||||||||
653 | - | |||||||||||||||||||||||||
654 | static ColorData parseColorValue(QCss::Value v) | - | ||||||||||||||||||||||||
655 | { | - | ||||||||||||||||||||||||
656 | if (v.type == Value::Identifier
| 0 | ||||||||||||||||||||||||
657 | v.variant.convert(QVariant::Color); | - | ||||||||||||||||||||||||
658 | v.type = Value::Color; | - | ||||||||||||||||||||||||
659 | } never executed: end of block | 0 | ||||||||||||||||||||||||
660 | - | |||||||||||||||||||||||||
661 | if (v.type == Value::Color
| 0 | ||||||||||||||||||||||||
662 | return never executed: qvariant_cast<QColor>(v.variant);return qvariant_cast<QColor>(v.variant); never executed: return qvariant_cast<QColor>(v.variant); | 0 | ||||||||||||||||||||||||
663 | - | |||||||||||||||||||||||||
664 | if (v.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
665 | return never executed: QColor(Qt::transparent);return QColor(Qt::transparent); never executed: return QColor(Qt::transparent); | 0 | ||||||||||||||||||||||||
666 | - | |||||||||||||||||||||||||
667 | if (v.type != Value::Function
| 0 | ||||||||||||||||||||||||
668 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
669 | - | |||||||||||||||||||||||||
670 | QStringList lst = v.variant.toStringList(); | - | ||||||||||||||||||||||||
671 | if (lst.count() != 2
| 0 | ||||||||||||||||||||||||
672 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
673 | - | |||||||||||||||||||||||||
674 | if ((
| 0 | ||||||||||||||||||||||||
675 | int role = findKnownValue(lst.at(1).trimmed(), values, NumKnownValues); | - | ||||||||||||||||||||||||
676 | if (role >= Value_FirstColorRole
| 0 | ||||||||||||||||||||||||
677 | return never executed: (QPalette::ColorRole)(role-Value_FirstColorRole);return (QPalette::ColorRole)(role-Value_FirstColorRole); never executed: return (QPalette::ColorRole)(role-Value_FirstColorRole); | 0 | ||||||||||||||||||||||||
678 | - | |||||||||||||||||||||||||
679 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
680 | } | - | ||||||||||||||||||||||||
681 | - | |||||||||||||||||||||||||
682 | bool rgb = lst.at(0).startsWith(QLatin1String("rgb")); | - | ||||||||||||||||||||||||
683 | bool rgba = lst.at(0).startsWith(QLatin1String("rgba")); | - | ||||||||||||||||||||||||
684 | - | |||||||||||||||||||||||||
685 | Parser p(lst.at(1)); | - | ||||||||||||||||||||||||
686 | if (!p.testExpr()
| 0 | ||||||||||||||||||||||||
687 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
688 | - | |||||||||||||||||||||||||
689 | QVector<QCss::Value> colorDigits; | - | ||||||||||||||||||||||||
690 | if (!p.parseExpr(&colorDigits)
| 0 | ||||||||||||||||||||||||
691 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
692 | const int tokenCount = colorDigits.count(); | - | ||||||||||||||||||||||||
693 | - | |||||||||||||||||||||||||
694 | for (int i = 0; i < qMin(tokenCount, 7)
| 0 | ||||||||||||||||||||||||
695 | if (colorDigits.at(i).type == Value::Percentage
| 0 | ||||||||||||||||||||||||
696 | colorDigits[i].variant = colorDigits.at(i).variant.toReal() * (255. / 100.); | - | ||||||||||||||||||||||||
697 | colorDigits[i].type = Value::Number; | - | ||||||||||||||||||||||||
698 | } never executed: else if (colorDigits.at(i).type != Value::Numberend of block
| 0 | ||||||||||||||||||||||||
699 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
700 | } | - | ||||||||||||||||||||||||
701 | } never executed: end of block | 0 | ||||||||||||||||||||||||
702 | - | |||||||||||||||||||||||||
703 | - | |||||||||||||||||||||||||
704 | if (tokenCount < 5
| 0 | ||||||||||||||||||||||||
705 | return never executed: ColorData();return ColorData(); never executed: return ColorData(); | 0 | ||||||||||||||||||||||||
706 | - | |||||||||||||||||||||||||
707 | int v1 = colorDigits.at(0).variant.toInt(); | - | ||||||||||||||||||||||||
708 | int v2 = colorDigits.at(2).variant.toInt(); | - | ||||||||||||||||||||||||
709 | int v3 = colorDigits.at(4).variant.toInt(); | - | ||||||||||||||||||||||||
710 | int alpha = 255; | - | ||||||||||||||||||||||||
711 | if (tokenCount >= 7
| 0 | ||||||||||||||||||||||||
712 | int alphaValue = colorDigits.at(6).variant.toInt(); | - | ||||||||||||||||||||||||
713 | if (rgba
| 0 | ||||||||||||||||||||||||
714 | alpha = colorDigits.at(6).variant.toReal() * 255.; never executed: alpha = colorDigits.at(6).variant.toReal() * 255.; | 0 | ||||||||||||||||||||||||
715 | else | - | ||||||||||||||||||||||||
716 | alpha = alphaValue; never executed: alpha = alphaValue; | 0 | ||||||||||||||||||||||||
717 | } | - | ||||||||||||||||||||||||
718 | - | |||||||||||||||||||||||||
719 | return never executed: rgb ? QColor::fromRgb(v1, v2, v3, alpha)return rgb ? QColor::fromRgb(v1, v2, v3, alpha) : QColor::fromHsv(v1, v2, v3, alpha); never executed: return rgb ? QColor::fromRgb(v1, v2, v3, alpha) : QColor::fromHsv(v1, v2, v3, alpha); | 0 | ||||||||||||||||||||||||
720 | : QColor::fromHsv(v1, v2, v3, alpha); never executed: return rgb ? QColor::fromRgb(v1, v2, v3, alpha) : QColor::fromHsv(v1, v2, v3, alpha); | 0 | ||||||||||||||||||||||||
721 | } | - | ||||||||||||||||||||||||
722 | - | |||||||||||||||||||||||||
723 | static QColor colorFromData(const ColorData& c, const QPalette &pal) | - | ||||||||||||||||||||||||
724 | { | - | ||||||||||||||||||||||||
725 | if (c.type == ColorData::Color
| 0 | ||||||||||||||||||||||||
726 | return never executed: c.color;return c.color; never executed: return c.color; | 0 | ||||||||||||||||||||||||
727 | } else if (c.type == ColorData::Role
| 0 | ||||||||||||||||||||||||
728 | return never executed: pal.color(c.role);return pal.color(c.role); never executed: return pal.color(c.role); | 0 | ||||||||||||||||||||||||
729 | } | - | ||||||||||||||||||||||||
730 | return never executed: QColor();return QColor(); never executed: return QColor(); | 0 | ||||||||||||||||||||||||
731 | } | - | ||||||||||||||||||||||||
732 | - | |||||||||||||||||||||||||
733 | static BrushData parseBrushValue(const QCss::Value &v, const QPalette &pal) | - | ||||||||||||||||||||||||
734 | { | - | ||||||||||||||||||||||||
735 | ColorData c = parseColorValue(v); | - | ||||||||||||||||||||||||
736 | if (c.type == ColorData::Color
| 0 | ||||||||||||||||||||||||
737 | return never executed: QBrush(c.color);return QBrush(c.color); never executed: return QBrush(c.color); | 0 | ||||||||||||||||||||||||
738 | } else if (c.type == ColorData::Role
| 0 | ||||||||||||||||||||||||
739 | return never executed: c.role;return c.role; never executed: return c.role; | 0 | ||||||||||||||||||||||||
740 | } | - | ||||||||||||||||||||||||
741 | - | |||||||||||||||||||||||||
742 | if (v.type != Value::Function
| 0 | ||||||||||||||||||||||||
743 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
744 | - | |||||||||||||||||||||||||
745 | QStringList lst = v.variant.toStringList(); | - | ||||||||||||||||||||||||
746 | if (lst.count() != 2
| 0 | ||||||||||||||||||||||||
747 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
748 | - | |||||||||||||||||||||||||
749 | QStringList gradFuncs; | - | ||||||||||||||||||||||||
750 | gradFuncs << QLatin1String("qlineargradient") << QLatin1String("qradialgradient") << QLatin1String("qconicalgradient") << QLatin1String("qgradient"); | - | ||||||||||||||||||||||||
751 | int gradType = -1; | - | ||||||||||||||||||||||||
752 | - | |||||||||||||||||||||||||
753 | if ((
| 0 | ||||||||||||||||||||||||
754 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
755 | - | |||||||||||||||||||||||||
756 | QHash<QString, qreal> vars; | - | ||||||||||||||||||||||||
757 | QVector<QGradientStop> stops; | - | ||||||||||||||||||||||||
758 | - | |||||||||||||||||||||||||
759 | int spread = -1; | - | ||||||||||||||||||||||||
760 | QStringList spreads; | - | ||||||||||||||||||||||||
761 | spreads << QLatin1String("pad") << QLatin1String("reflect") << QLatin1String("repeat"); | - | ||||||||||||||||||||||||
762 | - | |||||||||||||||||||||||||
763 | bool dependsOnThePalette = false; | - | ||||||||||||||||||||||||
764 | Parser parser(lst.at(1)); | - | ||||||||||||||||||||||||
765 | while (parser.hasNext()
| 0 | ||||||||||||||||||||||||
766 | parser.skipSpace(); | - | ||||||||||||||||||||||||
767 | if (!parser.test(IDENT)
| 0 | ||||||||||||||||||||||||
768 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
769 | QString attr = parser.lexem(); | - | ||||||||||||||||||||||||
770 | parser.skipSpace(); | - | ||||||||||||||||||||||||
771 | if (!parser.test(COLON)
| 0 | ||||||||||||||||||||||||
772 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
773 | parser.skipSpace(); | - | ||||||||||||||||||||||||
774 | if (attr.compare(QLatin1String("stop"), Qt::CaseInsensitive) == 0
| 0 | ||||||||||||||||||||||||
775 | QCss::Value stop, color; | - | ||||||||||||||||||||||||
776 | parser.next(); | - | ||||||||||||||||||||||||
777 | if (!parser.parseTerm(&stop)
never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
778 | parser.skipSpace(); | - | ||||||||||||||||||||||||
779 | parser.next(); | - | ||||||||||||||||||||||||
780 | if (!parser.parseTerm(&color)
never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
781 | ColorData cd = parseColorValue(color); | - | ||||||||||||||||||||||||
782 | if(cd.type == ColorData::Role
| 0 | ||||||||||||||||||||||||
783 | dependsOnThePalette = true; never executed: dependsOnThePalette = true; | 0 | ||||||||||||||||||||||||
784 | stops.append(QGradientStop(stop.variant.toReal(), colorFromData(cd, pal))); | - | ||||||||||||||||||||||||
785 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
786 | parser.next(); | - | ||||||||||||||||||||||||
787 | QCss::Value value; | - | ||||||||||||||||||||||||
788 | (void)parser.parseTerm(&value); | - | ||||||||||||||||||||||||
789 | if (attr.compare(QLatin1String("spread"), Qt::CaseInsensitive) == 0
| 0 | ||||||||||||||||||||||||
790 | spread = spreads.indexOf(value.variant.toString()); | - | ||||||||||||||||||||||||
791 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
792 | vars[attr] = value.variant.toReal(); | - | ||||||||||||||||||||||||
793 | } never executed: end of block | 0 | ||||||||||||||||||||||||
794 | } | - | ||||||||||||||||||||||||
795 | parser.skipSpace(); | - | ||||||||||||||||||||||||
796 | (void)parser.test(COMMA); | - | ||||||||||||||||||||||||
797 | } never executed: end of block | 0 | ||||||||||||||||||||||||
798 | - | |||||||||||||||||||||||||
799 | if (gradType == 0
| 0 | ||||||||||||||||||||||||
800 | QLinearGradient lg(vars.value(QLatin1String("x1")), vars.value(QLatin1String("y1")), | - | ||||||||||||||||||||||||
801 | vars.value(QLatin1String("x2")), vars.value(QLatin1String("y2"))); | - | ||||||||||||||||||||||||
802 | lg.setCoordinateMode(QGradient::ObjectBoundingMode); | - | ||||||||||||||||||||||||
803 | lg.setStops(stops); | - | ||||||||||||||||||||||||
804 | if (spread != -1
| 0 | ||||||||||||||||||||||||
805 | lg.setSpread(QGradient::Spread(spread)); never executed: lg.setSpread(QGradient::Spread(spread)); | 0 | ||||||||||||||||||||||||
806 | BrushData bd = QBrush(lg); | - | ||||||||||||||||||||||||
807 | if (dependsOnThePalette
| 0 | ||||||||||||||||||||||||
808 | bd.type = BrushData::DependsOnThePalette; never executed: bd.type = BrushData::DependsOnThePalette; | 0 | ||||||||||||||||||||||||
809 | return never executed: bd;return bd; never executed: return bd; | 0 | ||||||||||||||||||||||||
810 | } | - | ||||||||||||||||||||||||
811 | - | |||||||||||||||||||||||||
812 | if (gradType == 1
| 0 | ||||||||||||||||||||||||
813 | QRadialGradient rg(vars.value(QLatin1String("cx")), vars.value(QLatin1String("cy")), | - | ||||||||||||||||||||||||
814 | vars.value(QLatin1String("radius")), vars.value(QLatin1String("fx")), | - | ||||||||||||||||||||||||
815 | vars.value(QLatin1String("fy"))); | - | ||||||||||||||||||||||||
816 | rg.setCoordinateMode(QGradient::ObjectBoundingMode); | - | ||||||||||||||||||||||||
817 | rg.setStops(stops); | - | ||||||||||||||||||||||||
818 | if (spread != -1
| 0 | ||||||||||||||||||||||||
819 | rg.setSpread(QGradient::Spread(spread)); never executed: rg.setSpread(QGradient::Spread(spread)); | 0 | ||||||||||||||||||||||||
820 | BrushData bd = QBrush(rg); | - | ||||||||||||||||||||||||
821 | if (dependsOnThePalette
| 0 | ||||||||||||||||||||||||
822 | bd.type = BrushData::DependsOnThePalette; never executed: bd.type = BrushData::DependsOnThePalette; | 0 | ||||||||||||||||||||||||
823 | return never executed: bd;return bd; never executed: return bd; | 0 | ||||||||||||||||||||||||
824 | } | - | ||||||||||||||||||||||||
825 | - | |||||||||||||||||||||||||
826 | if (gradType == 2
| 0 | ||||||||||||||||||||||||
827 | QConicalGradient cg(vars.value(QLatin1String("cx")), vars.value(QLatin1String("cy")), | - | ||||||||||||||||||||||||
828 | vars.value(QLatin1String("angle"))); | - | ||||||||||||||||||||||||
829 | cg.setCoordinateMode(QGradient::ObjectBoundingMode); | - | ||||||||||||||||||||||||
830 | cg.setStops(stops); | - | ||||||||||||||||||||||||
831 | if (spread != -1
| 0 | ||||||||||||||||||||||||
832 | cg.setSpread(QGradient::Spread(spread)); never executed: cg.setSpread(QGradient::Spread(spread)); | 0 | ||||||||||||||||||||||||
833 | BrushData bd = QBrush(cg); | - | ||||||||||||||||||||||||
834 | if (dependsOnThePalette
| 0 | ||||||||||||||||||||||||
835 | bd.type = BrushData::DependsOnThePalette; never executed: bd.type = BrushData::DependsOnThePalette; | 0 | ||||||||||||||||||||||||
836 | return never executed: bd;return bd; never executed: return bd; | 0 | ||||||||||||||||||||||||
837 | } | - | ||||||||||||||||||||||||
838 | - | |||||||||||||||||||||||||
839 | return never executed: BrushData();return BrushData(); never executed: return BrushData(); | 0 | ||||||||||||||||||||||||
840 | } | - | ||||||||||||||||||||||||
841 | - | |||||||||||||||||||||||||
842 | static QBrush brushFromData(const BrushData& c, const QPalette &pal) | - | ||||||||||||||||||||||||
843 | { | - | ||||||||||||||||||||||||
844 | if (c.type == BrushData::Role
| 0 | ||||||||||||||||||||||||
845 | return never executed: pal.color(c.role);return pal.color(c.role); never executed: return pal.color(c.role); | 0 | ||||||||||||||||||||||||
846 | } else { | - | ||||||||||||||||||||||||
847 | return never executed: c.brush;return c.brush; never executed: return c.brush; | 0 | ||||||||||||||||||||||||
848 | } | - | ||||||||||||||||||||||||
849 | } | - | ||||||||||||||||||||||||
850 | - | |||||||||||||||||||||||||
851 | static BorderStyle parseStyleValue(QCss::Value v) | - | ||||||||||||||||||||||||
852 | { | - | ||||||||||||||||||||||||
853 | if (v.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
854 | switch (v.variant.toInt()) { | - | ||||||||||||||||||||||||
855 | case never executed: Value_None:case Value_None: never executed: case Value_None: | 0 | ||||||||||||||||||||||||
856 | return never executed: BorderStyle_None;return BorderStyle_None; never executed: return BorderStyle_None; | 0 | ||||||||||||||||||||||||
857 | case never executed: Value_Dotted:case Value_Dotted: never executed: case Value_Dotted: | 0 | ||||||||||||||||||||||||
858 | return never executed: BorderStyle_Dotted;return BorderStyle_Dotted; never executed: return BorderStyle_Dotted; | 0 | ||||||||||||||||||||||||
859 | case never executed: Value_Dashed:case Value_Dashed: never executed: case Value_Dashed: | 0 | ||||||||||||||||||||||||
860 | return never executed: BorderStyle_Dashed;return BorderStyle_Dashed; never executed: return BorderStyle_Dashed; | 0 | ||||||||||||||||||||||||
861 | case never executed: Value_Solid:case Value_Solid: never executed: case Value_Solid: | 0 | ||||||||||||||||||||||||
862 | return never executed: BorderStyle_Solid;return BorderStyle_Solid; never executed: return BorderStyle_Solid; | 0 | ||||||||||||||||||||||||
863 | case never executed: Value_Double:case Value_Double: never executed: case Value_Double: | 0 | ||||||||||||||||||||||||
864 | return never executed: BorderStyle_Double;return BorderStyle_Double; never executed: return BorderStyle_Double; | 0 | ||||||||||||||||||||||||
865 | case never executed: Value_DotDash:case Value_DotDash: never executed: case Value_DotDash: | 0 | ||||||||||||||||||||||||
866 | return never executed: BorderStyle_DotDash;return BorderStyle_DotDash; never executed: return BorderStyle_DotDash; | 0 | ||||||||||||||||||||||||
867 | case never executed: Value_DotDotDash:case Value_DotDotDash: never executed: case Value_DotDotDash: | 0 | ||||||||||||||||||||||||
868 | return never executed: BorderStyle_DotDotDash;return BorderStyle_DotDotDash; never executed: return BorderStyle_DotDotDash; | 0 | ||||||||||||||||||||||||
869 | case never executed: Value_Groove:case Value_Groove: never executed: case Value_Groove: | 0 | ||||||||||||||||||||||||
870 | return never executed: BorderStyle_Groove;return BorderStyle_Groove; never executed: return BorderStyle_Groove; | 0 | ||||||||||||||||||||||||
871 | case never executed: Value_Ridge:case Value_Ridge: never executed: case Value_Ridge: | 0 | ||||||||||||||||||||||||
872 | return never executed: BorderStyle_Ridge;return BorderStyle_Ridge; never executed: return BorderStyle_Ridge; | 0 | ||||||||||||||||||||||||
873 | case never executed: Value_Inset:case Value_Inset: never executed: case Value_Inset: | 0 | ||||||||||||||||||||||||
874 | return never executed: BorderStyle_Inset;return BorderStyle_Inset; never executed: return BorderStyle_Inset; | 0 | ||||||||||||||||||||||||
875 | case never executed: Value_Outset:case Value_Outset: never executed: case Value_Outset: | 0 | ||||||||||||||||||||||||
876 | return never executed: BorderStyle_Outset;return BorderStyle_Outset; never executed: return BorderStyle_Outset; | 0 | ||||||||||||||||||||||||
877 | case never executed: Value_Native:case Value_Native: never executed: case Value_Native: | 0 | ||||||||||||||||||||||||
878 | return never executed: BorderStyle_Native;return BorderStyle_Native; never executed: return BorderStyle_Native; | 0 | ||||||||||||||||||||||||
879 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||
880 | break; never executed: break; | 0 | ||||||||||||||||||||||||
881 | } | - | ||||||||||||||||||||||||
882 | } | - | ||||||||||||||||||||||||
883 | - | |||||||||||||||||||||||||
884 | return never executed: BorderStyle_Unknown;return BorderStyle_Unknown; never executed: return BorderStyle_Unknown; | 0 | ||||||||||||||||||||||||
885 | } | - | ||||||||||||||||||||||||
886 | - | |||||||||||||||||||||||||
887 | void ValueExtractor::borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color) | - | ||||||||||||||||||||||||
888 | { | - | ||||||||||||||||||||||||
889 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
890 | BorderData data = qvariant_cast<BorderData>(decl.d->parsed); | - | ||||||||||||||||||||||||
891 | *width = lengthValueFromData(data.width, f); | - | ||||||||||||||||||||||||
892 | *style = data.style; | - | ||||||||||||||||||||||||
893 | *color = data.color.type != BrushData::Invalid
| 0 | ||||||||||||||||||||||||
894 | return; never executed: return; | 0 | ||||||||||||||||||||||||
895 | } | - | ||||||||||||||||||||||||
896 | - | |||||||||||||||||||||||||
897 | *width = 0; | - | ||||||||||||||||||||||||
898 | *style = BorderStyle_None; | - | ||||||||||||||||||||||||
899 | *color = QColor(); | - | ||||||||||||||||||||||||
900 | - | |||||||||||||||||||||||||
901 | if (decl.d->values.isEmpty()
| 0 | ||||||||||||||||||||||||
902 | return; never executed: return; | 0 | ||||||||||||||||||||||||
903 | - | |||||||||||||||||||||||||
904 | BorderData data; | - | ||||||||||||||||||||||||
905 | data.width.number = 0; | - | ||||||||||||||||||||||||
906 | data.width.unit = LengthData::None; | - | ||||||||||||||||||||||||
907 | data.style = BorderStyle_None; | - | ||||||||||||||||||||||||
908 | - | |||||||||||||||||||||||||
909 | int i = 0; | - | ||||||||||||||||||||||||
910 | if (decl.d->values.at(i).type == Value::Length
| 0 | ||||||||||||||||||||||||
911 | data.width = lengthValue(decl.d->values.at(i)); | - | ||||||||||||||||||||||||
912 | *width = lengthValueFromData(data.width, f); | - | ||||||||||||||||||||||||
913 | if (++
| 0 | ||||||||||||||||||||||||
914 | decl.d->parsed = QVariant::fromValue<BorderData>(data); | - | ||||||||||||||||||||||||
915 | return; never executed: return; | 0 | ||||||||||||||||||||||||
916 | } | - | ||||||||||||||||||||||||
917 | } never executed: end of block | 0 | ||||||||||||||||||||||||
918 | - | |||||||||||||||||||||||||
919 | data.style = parseStyleValue(decl.d->values.at(i)); | - | ||||||||||||||||||||||||
920 | if (data.style != BorderStyle_Unknown
| 0 | ||||||||||||||||||||||||
921 | *style = data.style; | - | ||||||||||||||||||||||||
922 | if (++
| 0 | ||||||||||||||||||||||||
923 | decl.d->parsed = QVariant::fromValue<BorderData>(data); | - | ||||||||||||||||||||||||
924 | return; never executed: return; | 0 | ||||||||||||||||||||||||
925 | } | - | ||||||||||||||||||||||||
926 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
927 | data.style = BorderStyle_None; | - | ||||||||||||||||||||||||
928 | } never executed: end of block | 0 | ||||||||||||||||||||||||
929 | - | |||||||||||||||||||||||||
930 | data.color = parseBrushValue(decl.d->values.at(i), pal); | - | ||||||||||||||||||||||||
931 | *color = brushFromData(data.color, pal); | - | ||||||||||||||||||||||||
932 | if (data.color.type != BrushData::DependsOnThePalette
| 0 | ||||||||||||||||||||||||
933 | decl.d->parsed = QVariant::fromValue<BorderData>(data); never executed: decl.d->parsed = QVariant::fromValue<BorderData>(data); | 0 | ||||||||||||||||||||||||
934 | } never executed: end of block | 0 | ||||||||||||||||||||||||
935 | - | |||||||||||||||||||||||||
936 | static void parseShorthandBackgroundProperty(const QVector<QCss::Value> &values, BrushData *brush, QString *image, Repeat *repeat, Qt::Alignment *alignment, const QPalette &pal) | - | ||||||||||||||||||||||||
937 | { | - | ||||||||||||||||||||||||
938 | *brush = BrushData(); | - | ||||||||||||||||||||||||
939 | *image = QString(); | - | ||||||||||||||||||||||||
940 | *repeat = Repeat_XY; | - | ||||||||||||||||||||||||
941 | *alignment = Qt::AlignTop | Qt::AlignLeft; | - | ||||||||||||||||||||||||
942 | - | |||||||||||||||||||||||||
943 | for (int i = 0; i < values.count()
| 0 | ||||||||||||||||||||||||
944 | const QCss::Value &v = values.at(i); | - | ||||||||||||||||||||||||
945 | if (v.type == Value::Uri
| 0 | ||||||||||||||||||||||||
946 | *image = v.variant.toString(); | - | ||||||||||||||||||||||||
947 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
948 | } else if (v.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
949 | *image = QString(); | - | ||||||||||||||||||||||||
950 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
951 | } else if (v.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
952 | *brush = QBrush(Qt::transparent); | - | ||||||||||||||||||||||||
953 | } never executed: end of block | 0 | ||||||||||||||||||||||||
954 | - | |||||||||||||||||||||||||
955 | Repeat repeatAttempt = static_cast<Repeat>(findKnownValue(v.variant.toString(), | - | ||||||||||||||||||||||||
956 | repeats, NumKnownRepeats)); | - | ||||||||||||||||||||||||
957 | if (repeatAttempt != Repeat_Unknown
| 0 | ||||||||||||||||||||||||
958 | *repeat = repeatAttempt; | - | ||||||||||||||||||||||||
959 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
960 | } | - | ||||||||||||||||||||||||
961 | - | |||||||||||||||||||||||||
962 | if (v.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
963 | const int start = i; | - | ||||||||||||||||||||||||
964 | int count = 1; | - | ||||||||||||||||||||||||
965 | if (i < values.count() - 1
| 0 | ||||||||||||||||||||||||
966 | && values.at(i + 1).type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
967 | ++i; | - | ||||||||||||||||||||||||
968 | ++count; | - | ||||||||||||||||||||||||
969 | } never executed: end of block | 0 | ||||||||||||||||||||||||
970 | Qt::Alignment a = parseAlignment(values.constData() + start, count); | - | ||||||||||||||||||||||||
971 | if (int(a) != 0
| 0 | ||||||||||||||||||||||||
972 | *alignment = a; | - | ||||||||||||||||||||||||
973 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
974 | } | - | ||||||||||||||||||||||||
975 | i -= count - 1; | - | ||||||||||||||||||||||||
976 | } never executed: end of block | 0 | ||||||||||||||||||||||||
977 | - | |||||||||||||||||||||||||
978 | *brush = parseBrushValue(v, pal); | - | ||||||||||||||||||||||||
979 | } never executed: end of block | 0 | ||||||||||||||||||||||||
980 | } never executed: end of block | 0 | ||||||||||||||||||||||||
981 | - | |||||||||||||||||||||||||
982 | bool ValueExtractor::extractBackground(QBrush *brush, QString *image, Repeat *repeat, | - | ||||||||||||||||||||||||
983 | Qt::Alignment *alignment, Origin *origin, Attachment *attachment, | - | ||||||||||||||||||||||||
984 | Origin *clip) | - | ||||||||||||||||||||||||
985 | { | - | ||||||||||||||||||||||||
986 | bool hit = false; | - | ||||||||||||||||||||||||
987 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
988 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
989 | if (decl.d->values.isEmpty()
| 0 | ||||||||||||||||||||||||
990 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
991 | const QCss::Value &val = decl.d->values.at(0); | - | ||||||||||||||||||||||||
992 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
993 | case never executed: BackgroundColor:case BackgroundColor: never executed: case BackgroundColor: | 0 | ||||||||||||||||||||||||
994 | *brush = decl.brushValue(); | - | ||||||||||||||||||||||||
995 | break; never executed: break; | 0 | ||||||||||||||||||||||||
996 | case never executed: BackgroundImage:case BackgroundImage: never executed: case BackgroundImage: | 0 | ||||||||||||||||||||||||
997 | if (val.type == Value::Uri
| 0 | ||||||||||||||||||||||||
998 | * never executed: image = val.variant.toString();*image = val.variant.toString(); never executed: *image = val.variant.toString(); | 0 | ||||||||||||||||||||||||
999 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1000 | case never executed: BackgroundRepeat:case BackgroundRepeat: never executed: case BackgroundRepeat: | 0 | ||||||||||||||||||||||||
1001 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1002 | *repeat = static_cast<Repeat>(decl.d->parsed.toInt()); | - | ||||||||||||||||||||||||
1003 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1004 | *repeat = static_cast<Repeat>(findKnownValue(val.variant.toString(), | - | ||||||||||||||||||||||||
1005 | repeats, NumKnownRepeats)); | - | ||||||||||||||||||||||||
1006 | decl.d->parsed = *repeat; | - | ||||||||||||||||||||||||
1007 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1008 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1009 | case never executed: BackgroundPosition:case BackgroundPosition: never executed: case BackgroundPosition: | 0 | ||||||||||||||||||||||||
1010 | *alignment = decl.alignmentValue(); | - | ||||||||||||||||||||||||
1011 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1012 | case never executed: BackgroundOrigin:case BackgroundOrigin: never executed: case BackgroundOrigin: | 0 | ||||||||||||||||||||||||
1013 | *origin = decl.originValue(); | - | ||||||||||||||||||||||||
1014 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1015 | case never executed: BackgroundClip:case BackgroundClip: never executed: case BackgroundClip: | 0 | ||||||||||||||||||||||||
1016 | *clip = decl.originValue(); | - | ||||||||||||||||||||||||
1017 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1018 | case never executed: Background:case Background: never executed: case Background: | 0 | ||||||||||||||||||||||||
1019 | if (decl.d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1020 | BackgroundData data = qvariant_cast<BackgroundData>(decl.d->parsed); | - | ||||||||||||||||||||||||
1021 | *brush = brushFromData(data.brush, pal); | - | ||||||||||||||||||||||||
1022 | *image = data.image; | - | ||||||||||||||||||||||||
1023 | *repeat = data.repeat; | - | ||||||||||||||||||||||||
1024 | *alignment = data.alignment; | - | ||||||||||||||||||||||||
1025 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1026 | BrushData brushData; | - | ||||||||||||||||||||||||
1027 | parseShorthandBackgroundProperty(decl.d->values, &brushData, image, repeat, alignment, pal); | - | ||||||||||||||||||||||||
1028 | *brush = brushFromData(brushData, pal); | - | ||||||||||||||||||||||||
1029 | if (brushData.type != BrushData::DependsOnThePalette
| 0 | ||||||||||||||||||||||||
1030 | BackgroundData data = { brushData, *image, *repeat, *alignment }; | - | ||||||||||||||||||||||||
1031 | decl.d->parsed = QVariant::fromValue<BackgroundData>(data); | - | ||||||||||||||||||||||||
1032 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1033 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1034 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1035 | case never executed: BackgroundAttachment:case BackgroundAttachment: never executed: case BackgroundAttachment: | 0 | ||||||||||||||||||||||||
1036 | *attachment = decl.attachmentValue(); | - | ||||||||||||||||||||||||
1037 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1038 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
1039 | } | - | ||||||||||||||||||||||||
1040 | hit = true; | - | ||||||||||||||||||||||||
1041 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1042 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
1043 | } | - | ||||||||||||||||||||||||
1044 | - | |||||||||||||||||||||||||
1045 | static bool setFontSizeFromValue(QCss::Value value, QFont *font, int *fontSizeAdjustment) | - | ||||||||||||||||||||||||
1046 | { | - | ||||||||||||||||||||||||
1047 | if (value.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1048 | bool valid = true; | - | ||||||||||||||||||||||||
1049 | switch (value.variant.toInt()) { | - | ||||||||||||||||||||||||
1050 | case never executed: Value_Small:case Value_Small: never executed: *fontSizeAdjustment = -1; break;case Value_Small: never executed: break; | 0 | ||||||||||||||||||||||||
1051 | case never executed: Value_Medium:case Value_Medium: never executed: *fontSizeAdjustment = 0; break;case Value_Medium: never executed: break; | 0 | ||||||||||||||||||||||||
1052 | case never executed: Value_Large:case Value_Large: never executed: *fontSizeAdjustment = 1; break;case Value_Large: never executed: break; | 0 | ||||||||||||||||||||||||
1053 | case never executed: Value_XLarge:case Value_XLarge: never executed: *fontSizeAdjustment = 2; break;case Value_XLarge: never executed: break; | 0 | ||||||||||||||||||||||||
1054 | case never executed: Value_XXLarge:case Value_XXLarge: never executed: *fontSizeAdjustment = 3; break;case Value_XXLarge: never executed: break; | 0 | ||||||||||||||||||||||||
1055 | default never executed: :default: never executed: valid = false; break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1056 | } | - | ||||||||||||||||||||||||
1057 | return never executed: valid;return valid; never executed: return valid; | 0 | ||||||||||||||||||||||||
1058 | } | - | ||||||||||||||||||||||||
1059 | if (value.type != Value::Length
| 0 | ||||||||||||||||||||||||
1060 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1061 | - | |||||||||||||||||||||||||
1062 | bool valid = false; | - | ||||||||||||||||||||||||
1063 | QString s = value.variant.toString(); | - | ||||||||||||||||||||||||
1064 | if (s.endsWith(QLatin1String("pt"), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
1065 | s.chop(2); | - | ||||||||||||||||||||||||
1066 | value.variant = s; | - | ||||||||||||||||||||||||
1067 | if (value.variant.convert((QVariant::Type)qMetaTypeId<qreal>())
| 0 | ||||||||||||||||||||||||
1068 | font->setPointSizeF(value.variant.toReal()); | - | ||||||||||||||||||||||||
1069 | valid = true; | - | ||||||||||||||||||||||||
1070 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1071 | } never executed: else if (s.endsWith(QLatin1String("px"), Qt::CaseInsensitive)end of block
| 0 | ||||||||||||||||||||||||
1072 | s.chop(2); | - | ||||||||||||||||||||||||
1073 | value.variant = s; | - | ||||||||||||||||||||||||
1074 | if (value.variant.convert(QVariant::Int)
| 0 | ||||||||||||||||||||||||
1075 | font->setPixelSize(value.variant.toInt()); | - | ||||||||||||||||||||||||
1076 | valid = true; | - | ||||||||||||||||||||||||
1077 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1078 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1079 | return never executed: valid;return valid; never executed: return valid; | 0 | ||||||||||||||||||||||||
1080 | } | - | ||||||||||||||||||||||||
1081 | - | |||||||||||||||||||||||||
1082 | static bool setFontStyleFromValue(const QCss::Value &value, QFont *font) | - | ||||||||||||||||||||||||
1083 | { | - | ||||||||||||||||||||||||
1084 | if (value.type != Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1085 | return never executed: false ;return false ; never executed: return false ; | 0 | ||||||||||||||||||||||||
1086 | switch (value.variant.toInt()) { | - | ||||||||||||||||||||||||
1087 | case never executed: Value_Normal:case Value_Normal: never executed: font->setStyle(QFont::StyleNormal); returncase Value_Normal: never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1088 | case never executed: Value_Italic:case Value_Italic: never executed: font->setStyle(QFont::StyleItalic); returncase Value_Italic: never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1089 | case never executed: Value_Oblique:case Value_Oblique: never executed: font->setStyle(QFont::StyleOblique); returncase Value_Oblique: never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1090 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1091 | } | - | ||||||||||||||||||||||||
1092 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1093 | } | - | ||||||||||||||||||||||||
1094 | - | |||||||||||||||||||||||||
1095 | static bool setFontWeightFromValue(const QCss::Value &value, QFont *font) | - | ||||||||||||||||||||||||
1096 | { | - | ||||||||||||||||||||||||
1097 | if (value.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1098 | switch (value.variant.toInt()) { | - | ||||||||||||||||||||||||
1099 | case never executed: Value_Normal:case Value_Normal: never executed: font->setWeight(QFont::Normal); returncase Value_Normal: never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1100 | case never executed: Value_Bold:case Value_Bold: never executed: font->setWeight(QFont::Bold); returncase Value_Bold: never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1101 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1102 | } | - | ||||||||||||||||||||||||
1103 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1104 | } | - | ||||||||||||||||||||||||
1105 | if (value.type != Value::Number
| 0 | ||||||||||||||||||||||||
1106 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1107 | font->setWeight(qMin(value.variant.toInt() / 8, 99)); | - | ||||||||||||||||||||||||
1108 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1109 | } | - | ||||||||||||||||||||||||
1110 | - | |||||||||||||||||||||||||
1111 | - | |||||||||||||||||||||||||
1112 | - | |||||||||||||||||||||||||
1113 | - | |||||||||||||||||||||||||
1114 | - | |||||||||||||||||||||||||
1115 | - | |||||||||||||||||||||||||
1116 | static bool setFontFamilyFromValues(const QVector<QCss::Value> &values, QFont *font, int start = 0) | - | ||||||||||||||||||||||||
1117 | { | - | ||||||||||||||||||||||||
1118 | QString family; | - | ||||||||||||||||||||||||
1119 | bool shouldAddSpace = false; | - | ||||||||||||||||||||||||
1120 | for (int i = start; i < values.count()
| 0 | ||||||||||||||||||||||||
1121 | const QCss::Value &v = values.at(i); | - | ||||||||||||||||||||||||
1122 | if (v.type == Value::TermOperatorComma
| 0 | ||||||||||||||||||||||||
1123 | family += QLatin1Char(','); | - | ||||||||||||||||||||||||
1124 | shouldAddSpace = false; | - | ||||||||||||||||||||||||
1125 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1126 | } | - | ||||||||||||||||||||||||
1127 | const QString str = v.variant.toString(); | - | ||||||||||||||||||||||||
1128 | if (str.isEmpty()
| 0 | ||||||||||||||||||||||||
1129 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1130 | if (shouldAddSpace
| 0 | ||||||||||||||||||||||||
1131 | family += QLatin1Char(' '); never executed: family += QLatin1Char(' '); | 0 | ||||||||||||||||||||||||
1132 | family += str; | - | ||||||||||||||||||||||||
1133 | shouldAddSpace = true; | - | ||||||||||||||||||||||||
1134 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1135 | if (family.isEmpty()
| 0 | ||||||||||||||||||||||||
1136 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1137 | font->setFamily(family); | - | ||||||||||||||||||||||||
1138 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1139 | } | - | ||||||||||||||||||||||||
1140 | - | |||||||||||||||||||||||||
1141 | static void setTextDecorationFromValues(const QVector<QCss::Value> &values, QFont *font) | - | ||||||||||||||||||||||||
1142 | { | - | ||||||||||||||||||||||||
1143 | for (int i = 0; i < values.count()
| 0 | ||||||||||||||||||||||||
1144 | if (values.at(i).type != Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1145 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1146 | switch (values.at(i).variant.toInt()) { | - | ||||||||||||||||||||||||
1147 | case never executed: Value_Underline:case Value_Underline: never executed: font->setUnderline(true); break;case Value_Underline: never executed: break; | 0 | ||||||||||||||||||||||||
1148 | case never executed: Value_Overline:case Value_Overline: never executed: font->setOverline(true); break;case Value_Overline: never executed: break; | 0 | ||||||||||||||||||||||||
1149 | case never executed: Value_LineThrough:case Value_LineThrough: never executed: font->setStrikeOut(true); break;case Value_LineThrough: never executed: break; | 0 | ||||||||||||||||||||||||
1150 | case never executed: Value_None:case Value_None: never executed: case Value_None: | 0 | ||||||||||||||||||||||||
1151 | font->setUnderline(false); | - | ||||||||||||||||||||||||
1152 | font->setOverline(false); | - | ||||||||||||||||||||||||
1153 | font->setStrikeOut(false); | - | ||||||||||||||||||||||||
1154 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1155 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1156 | } | - | ||||||||||||||||||||||||
1157 | } | - | ||||||||||||||||||||||||
1158 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1159 | - | |||||||||||||||||||||||||
1160 | static void parseShorthandFontProperty(const QVector<QCss::Value> &values, QFont *font, int *fontSizeAdjustment) | - | ||||||||||||||||||||||||
1161 | { | - | ||||||||||||||||||||||||
1162 | font->setStyle(QFont::StyleNormal); | - | ||||||||||||||||||||||||
1163 | font->setWeight(QFont::Normal); | - | ||||||||||||||||||||||||
1164 | *fontSizeAdjustment = -255; | - | ||||||||||||||||||||||||
1165 | - | |||||||||||||||||||||||||
1166 | int i = 0; | - | ||||||||||||||||||||||||
1167 | while (i < values.count()
| 0 | ||||||||||||||||||||||||
1168 | if (setFontStyleFromValue(values.at(i), font)
| 0 | ||||||||||||||||||||||||
1169 | || setFontWeightFromValue(values.at(i), font)
| 0 | ||||||||||||||||||||||||
1170 | ++ never executed: i;++i; never executed: ++i; | 0 | ||||||||||||||||||||||||
1171 | else | - | ||||||||||||||||||||||||
1172 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1173 | } | - | ||||||||||||||||||||||||
1174 | - | |||||||||||||||||||||||||
1175 | if (i < values.count()
| 0 | ||||||||||||||||||||||||
1176 | setFontSizeFromValue(values.at(i), font, fontSizeAdjustment); | - | ||||||||||||||||||||||||
1177 | ++i; | - | ||||||||||||||||||||||||
1178 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1179 | - | |||||||||||||||||||||||||
1180 | if (i < values.count()
| 0 | ||||||||||||||||||||||||
1181 | setFontFamilyFromValues(values, font, i); | - | ||||||||||||||||||||||||
1182 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1183 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1184 | - | |||||||||||||||||||||||||
1185 | static void setFontVariantFromValue(const QCss::Value &value, QFont *font) | - | ||||||||||||||||||||||||
1186 | { | - | ||||||||||||||||||||||||
1187 | if (value.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1188 | switch (value.variant.toInt()) { | - | ||||||||||||||||||||||||
1189 | case never executed: Value_Normal:case Value_Normal: never executed: font->setCapitalization(QFont::MixedCase); break;case Value_Normal: never executed: break; | 0 | ||||||||||||||||||||||||
1190 | case never executed: Value_SmallCaps:case Value_SmallCaps: never executed: font->setCapitalization(QFont::SmallCaps); break;case Value_SmallCaps: never executed: break; | 0 | ||||||||||||||||||||||||
1191 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1192 | } | - | ||||||||||||||||||||||||
1193 | } | - | ||||||||||||||||||||||||
1194 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1195 | - | |||||||||||||||||||||||||
1196 | static void setTextTransformFromValue(const QCss::Value &value, QFont *font) | - | ||||||||||||||||||||||||
1197 | { | - | ||||||||||||||||||||||||
1198 | if (value.type == Value::KnownIdentifier
| 0 | ||||||||||||||||||||||||
1199 | switch (value.variant.toInt()) { | - | ||||||||||||||||||||||||
1200 | case never executed: Value_None:case Value_None: never executed: font->setCapitalization(QFont::MixedCase); break;case Value_None: never executed: break; | 0 | ||||||||||||||||||||||||
1201 | case never executed: Value_Uppercase:case Value_Uppercase: never executed: font->setCapitalization(QFont::AllUppercase); break;case Value_Uppercase: never executed: break; | 0 | ||||||||||||||||||||||||
1202 | case never executed: Value_Lowercase:case Value_Lowercase: never executed: font->setCapitalization(QFont::AllLowercase); break;case Value_Lowercase: never executed: break; | 0 | ||||||||||||||||||||||||
1203 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1204 | } | - | ||||||||||||||||||||||||
1205 | } | - | ||||||||||||||||||||||||
1206 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1207 | - | |||||||||||||||||||||||||
1208 | bool ValueExtractor::extractFont(QFont *font, int *fontSizeAdjustment) | - | ||||||||||||||||||||||||
1209 | { | - | ||||||||||||||||||||||||
1210 | if (fontExtracted
| 0 | ||||||||||||||||||||||||
1211 | *font = f; | - | ||||||||||||||||||||||||
1212 | *fontSizeAdjustment = adjustment; | - | ||||||||||||||||||||||||
1213 | return never executed: fontExtracted == 1;return fontExtracted == 1; never executed: return fontExtracted == 1; | 0 | ||||||||||||||||||||||||
1214 | } | - | ||||||||||||||||||||||||
1215 | - | |||||||||||||||||||||||||
1216 | bool hit = false; | - | ||||||||||||||||||||||||
1217 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
1218 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
1219 | if (decl.d->values.isEmpty()
| 0 | ||||||||||||||||||||||||
1220 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1221 | const QCss::Value &val = decl.d->values.at(0); | - | ||||||||||||||||||||||||
1222 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
1223 | case never executed: FontSize:case FontSize: never executed: setFontSizeFromValue(val, font, fontSizeAdjustment); break;case FontSize: never executed: break; | 0 | ||||||||||||||||||||||||
1224 | case never executed: FontStyle:case FontStyle: never executed: setFontStyleFromValue(val, font); break;case FontStyle: never executed: break; | 0 | ||||||||||||||||||||||||
1225 | case never executed: FontWeight:case FontWeight: never executed: setFontWeightFromValue(val, font); break;case FontWeight: never executed: break; | 0 | ||||||||||||||||||||||||
1226 | case never executed: FontFamily:case FontFamily: never executed: setFontFamilyFromValues(decl.d->values, font); break;case FontFamily: never executed: break; | 0 | ||||||||||||||||||||||||
1227 | case never executed: TextDecoration:case TextDecoration: never executed: setTextDecorationFromValues(decl.d->values, font); break;case TextDecoration: never executed: break; | 0 | ||||||||||||||||||||||||
1228 | case never executed: Font:case Font: never executed: parseShorthandFontProperty(decl.d->values, font, fontSizeAdjustment); break;case Font: never executed: break; | 0 | ||||||||||||||||||||||||
1229 | case never executed: FontVariant:case FontVariant: never executed: setFontVariantFromValue(val, font); break;case FontVariant: never executed: break; | 0 | ||||||||||||||||||||||||
1230 | case never executed: TextTransform:case TextTransform: never executed: setTextTransformFromValue(val, font); break;case TextTransform: never executed: break; | 0 | ||||||||||||||||||||||||
1231 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
1232 | } | - | ||||||||||||||||||||||||
1233 | hit = true; | - | ||||||||||||||||||||||||
1234 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1235 | - | |||||||||||||||||||||||||
1236 | f = *font; | - | ||||||||||||||||||||||||
1237 | adjustment = *fontSizeAdjustment; | - | ||||||||||||||||||||||||
1238 | fontExtracted = hit
| 0 | ||||||||||||||||||||||||
1239 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
1240 | } | - | ||||||||||||||||||||||||
1241 | - | |||||||||||||||||||||||||
1242 | bool ValueExtractor::extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg) | - | ||||||||||||||||||||||||
1243 | { | - | ||||||||||||||||||||||||
1244 | bool hit = false; | - | ||||||||||||||||||||||||
1245 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
1246 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
1247 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
1248 | case never executed: Color:case Color: never executed: *fg = decl.brushValue(pal); break;case Color: never executed: break; | 0 | ||||||||||||||||||||||||
1249 | case never executed: QtSelectionForeground:case QtSelectionForeground: never executed: *sfg = decl.brushValue(pal); break;case QtSelectionForeground: never executed: break; | 0 | ||||||||||||||||||||||||
1250 | case never executed: QtSelectionBackground:case QtSelectionBackground: never executed: *sbg = decl.brushValue(pal); break;case QtSelectionBackground: never executed: break; | 0 | ||||||||||||||||||||||||
1251 | case never executed: QtAlternateBackground:case QtAlternateBackground: never executed: *abg = decl.brushValue(pal); break;case QtAlternateBackground: never executed: break; | 0 | ||||||||||||||||||||||||
1252 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
1253 | } | - | ||||||||||||||||||||||||
1254 | hit = true; | - | ||||||||||||||||||||||||
1255 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1256 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
1257 | } | - | ||||||||||||||||||||||||
1258 | - | |||||||||||||||||||||||||
1259 | void ValueExtractor::extractFont() | - | ||||||||||||||||||||||||
1260 | { | - | ||||||||||||||||||||||||
1261 | if (fontExtracted
| 0 | ||||||||||||||||||||||||
1262 | return; never executed: return; | 0 | ||||||||||||||||||||||||
1263 | int dummy = -255; | - | ||||||||||||||||||||||||
1264 | extractFont(&f, &dummy); | - | ||||||||||||||||||||||||
1265 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1266 | - | |||||||||||||||||||||||||
1267 | bool ValueExtractor::extractImage(QIcon *icon, Qt::Alignment *a, QSize *size) | - | ||||||||||||||||||||||||
1268 | { | - | ||||||||||||||||||||||||
1269 | bool hit = false; | - | ||||||||||||||||||||||||
1270 | for (int i = 0; i < declarations.count()
| 0 | ||||||||||||||||||||||||
1271 | const Declaration &decl = declarations.at(i); | - | ||||||||||||||||||||||||
1272 | switch (decl.d->propertyId) { | - | ||||||||||||||||||||||||
1273 | case never executed: QtImage:case QtImage: never executed: case QtImage: | 0 | ||||||||||||||||||||||||
1274 | *icon = decl.iconValue(); | - | ||||||||||||||||||||||||
1275 | if (decl.d->values.count() > 0
| 0 | ||||||||||||||||||||||||
1276 | - | |||||||||||||||||||||||||
1277 | QImageReader imageReader(decl.d->values.at(0).variant.toString()); | - | ||||||||||||||||||||||||
1278 | if ((*
| 0 | ||||||||||||||||||||||||
1279 | - | |||||||||||||||||||||||||
1280 | - | |||||||||||||||||||||||||
1281 | *size = imageReader.read().size(); | - | ||||||||||||||||||||||||
1282 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1283 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1284 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1285 | case never executed: QtImageAlignment:case QtImageAlignment: never executed: *a = decl.alignmentValue(); break;case QtImageAlignment: never executed: break; | 0 | ||||||||||||||||||||||||
1286 | default never executed: :default: never executed: continue;default: never executed: continue; | 0 | ||||||||||||||||||||||||
1287 | } | - | ||||||||||||||||||||||||
1288 | hit = true; | - | ||||||||||||||||||||||||
1289 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1290 | return never executed: hit;return hit; never executed: return hit; | 0 | ||||||||||||||||||||||||
1291 | } | - | ||||||||||||||||||||||||
1292 | - | |||||||||||||||||||||||||
1293 | - | |||||||||||||||||||||||||
1294 | - | |||||||||||||||||||||||||
1295 | QColor Declaration::colorValue(const QPalette &pal) const | - | ||||||||||||||||||||||||
1296 | { | - | ||||||||||||||||||||||||
1297 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1298 | return never executed: QColor();return QColor(); never executed: return QColor(); | 0 | ||||||||||||||||||||||||
1299 | - | |||||||||||||||||||||||||
1300 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1301 | if (d->parsed.type() == QVariant::Color
| 0 | ||||||||||||||||||||||||
1302 | return never executed: qvariant_cast<QColor>(d->parsed);return qvariant_cast<QColor>(d->parsed); never executed: return qvariant_cast<QColor>(d->parsed); | 0 | ||||||||||||||||||||||||
1303 | if (d->parsed.type() == QVariant::Int
| 0 | ||||||||||||||||||||||||
1304 | return never executed: pal.color((QPalette::ColorRole)(d->parsed.toInt()));return pal.color((QPalette::ColorRole)(d->parsed.toInt())); never executed: return pal.color((QPalette::ColorRole)(d->parsed.toInt())); | 0 | ||||||||||||||||||||||||
1305 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1306 | - | |||||||||||||||||||||||||
1307 | ColorData color = parseColorValue(d->values.at(0)); | - | ||||||||||||||||||||||||
1308 | if(color.type == ColorData::Role
| 0 | ||||||||||||||||||||||||
1309 | d->parsed = QVariant::fromValue<int>(color.role); | - | ||||||||||||||||||||||||
1310 | return never executed: pal.color((QPalette::ColorRole)(color.role));return pal.color((QPalette::ColorRole)(color.role)); never executed: return pal.color((QPalette::ColorRole)(color.role)); | 0 | ||||||||||||||||||||||||
1311 | } else { | - | ||||||||||||||||||||||||
1312 | d->parsed = QVariant::fromValue<QColor>(color.color); | - | ||||||||||||||||||||||||
1313 | return never executed: color.color;return color.color; never executed: return color.color; | 0 | ||||||||||||||||||||||||
1314 | } | - | ||||||||||||||||||||||||
1315 | } | - | ||||||||||||||||||||||||
1316 | - | |||||||||||||||||||||||||
1317 | QBrush Declaration::brushValue(const QPalette &pal) const | - | ||||||||||||||||||||||||
1318 | { | - | ||||||||||||||||||||||||
1319 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1320 | return never executed: QBrush();return QBrush(); never executed: return QBrush(); | 0 | ||||||||||||||||||||||||
1321 | - | |||||||||||||||||||||||||
1322 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1323 | if (d->parsed.type() == QVariant::Brush
| 0 | ||||||||||||||||||||||||
1324 | return never executed: qvariant_cast<QBrush>(d->parsed);return qvariant_cast<QBrush>(d->parsed); never executed: return qvariant_cast<QBrush>(d->parsed); | 0 | ||||||||||||||||||||||||
1325 | if (d->parsed.type() == QVariant::Int
| 0 | ||||||||||||||||||||||||
1326 | return never executed: pal.color((QPalette::ColorRole)(d->parsed.toInt()));return pal.color((QPalette::ColorRole)(d->parsed.toInt())); never executed: return pal.color((QPalette::ColorRole)(d->parsed.toInt())); | 0 | ||||||||||||||||||||||||
1327 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1328 | - | |||||||||||||||||||||||||
1329 | BrushData data = parseBrushValue(d->values.at(0), pal); | - | ||||||||||||||||||||||||
1330 | - | |||||||||||||||||||||||||
1331 | if(data.type == BrushData::Role
| 0 | ||||||||||||||||||||||||
1332 | d->parsed = QVariant::fromValue<int>(data.role); | - | ||||||||||||||||||||||||
1333 | return never executed: pal.color((QPalette::ColorRole)(data.role));return pal.color((QPalette::ColorRole)(data.role)); never executed: return pal.color((QPalette::ColorRole)(data.role)); | 0 | ||||||||||||||||||||||||
1334 | } else { | - | ||||||||||||||||||||||||
1335 | if (data.type != BrushData::DependsOnThePalette
| 0 | ||||||||||||||||||||||||
1336 | d->parsed = QVariant::fromValue<QBrush>(data.brush); never executed: d->parsed = QVariant::fromValue<QBrush>(data.brush); | 0 | ||||||||||||||||||||||||
1337 | return never executed: data.brush;return data.brush; never executed: return data.brush; | 0 | ||||||||||||||||||||||||
1338 | } | - | ||||||||||||||||||||||||
1339 | } | - | ||||||||||||||||||||||||
1340 | - | |||||||||||||||||||||||||
1341 | void Declaration::brushValues(QBrush *c, const QPalette &pal) const | - | ||||||||||||||||||||||||
1342 | { | - | ||||||||||||||||||||||||
1343 | int needParse = 0x1f; | - | ||||||||||||||||||||||||
1344 | - | |||||||||||||||||||||||||
1345 | int i = 0; | - | ||||||||||||||||||||||||
1346 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1347 | needParse = 0; | - | ||||||||||||||||||||||||
1348 | QList<QVariant> v = d->parsed.toList(); | - | ||||||||||||||||||||||||
1349 | for (i = 0; i < qMin(v.count(), 4)
| 0 | ||||||||||||||||||||||||
1350 | if (v.at(i).type() == QVariant::Brush
| 0 | ||||||||||||||||||||||||
1351 | c[i] = qvariant_cast<QBrush>(v.at(i)); | - | ||||||||||||||||||||||||
1352 | } never executed: else if (v.at(i).type() == QVariant::Intend of block
| 0 | ||||||||||||||||||||||||
1353 | c[i] = pal.color((QPalette::ColorRole)(v.at(i).toInt())); | - | ||||||||||||||||||||||||
1354 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1355 | needParse |= (1<<i); | - | ||||||||||||||||||||||||
1356 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1357 | } | - | ||||||||||||||||||||||||
1358 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1359 | if (needParse != 0
| 0 | ||||||||||||||||||||||||
1360 | QList<QVariant> v; | - | ||||||||||||||||||||||||
1361 | for (i = 0; i < qMin(d->values.count(), 4)
| 0 | ||||||||||||||||||||||||
1362 | if (!(needParse & (1<<i))
| 0 | ||||||||||||||||||||||||
1363 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1364 | BrushData data = parseBrushValue(d->values.at(i), pal); | - | ||||||||||||||||||||||||
1365 | if(data.type == BrushData::Role
| 0 | ||||||||||||||||||||||||
1366 | v += QVariant::fromValue<int>(data.role); | - | ||||||||||||||||||||||||
1367 | c[i] = pal.color((QPalette::ColorRole)(data.role)); | - | ||||||||||||||||||||||||
1368 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1369 | if (data.type != BrushData::DependsOnThePalette
| 0 | ||||||||||||||||||||||||
1370 | v += QVariant::fromValue<QBrush>(data.brush); | - | ||||||||||||||||||||||||
1371 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1372 | v += QVariant(); | - | ||||||||||||||||||||||||
1373 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1374 | c[i] = data.brush; | - | ||||||||||||||||||||||||
1375 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1376 | } | - | ||||||||||||||||||||||||
1377 | if (needParse & 0x10
| 0 | ||||||||||||||||||||||||
1378 | d->parsed = v; never executed: d->parsed = v; | 0 | ||||||||||||||||||||||||
1379 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1380 | if (i == 0
never executed: c[0] = c[1] = c[2] = c[3] = QBrush(); | 0 | ||||||||||||||||||||||||
1381 | else if (i == 1
never executed: c[3] = c[2] = c[1] = c[0]; | 0 | ||||||||||||||||||||||||
1382 | else if (i == 2
never executed: c[2] = c[0], c[3] = c[1]; | 0 | ||||||||||||||||||||||||
1383 | else if (i == 3
never executed: c[3] = c[1]; | 0 | ||||||||||||||||||||||||
1384 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1385 | - | |||||||||||||||||||||||||
1386 | bool Declaration::realValue(qreal *real, const char *unit) const | - | ||||||||||||||||||||||||
1387 | { | - | ||||||||||||||||||||||||
1388 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1389 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1390 | const Value &v = d->values.at(0); | - | ||||||||||||||||||||||||
1391 | if (unit
| 0 | ||||||||||||||||||||||||
1392 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1393 | QString s = v.variant.toString(); | - | ||||||||||||||||||||||||
1394 | if (unit
| 0 | ||||||||||||||||||||||||
1395 | if (!s.endsWith(QLatin1String(unit), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
1396 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1397 | s.chop(qstrlen(unit)); | - | ||||||||||||||||||||||||
1398 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1399 | bool ok = false; | - | ||||||||||||||||||||||||
1400 | qreal val = s.toDouble(&ok); | - | ||||||||||||||||||||||||
1401 | if (ok
| 0 | ||||||||||||||||||||||||
1402 | * never executed: real = val;*real = val; never executed: *real = val; | 0 | ||||||||||||||||||||||||
1403 | return never executed: ok;return ok; never executed: return ok; | 0 | ||||||||||||||||||||||||
1404 | } | - | ||||||||||||||||||||||||
1405 | - | |||||||||||||||||||||||||
1406 | static bool intValueHelper(const QCss::Value &v, int *i, const char *unit) | - | ||||||||||||||||||||||||
1407 | { | - | ||||||||||||||||||||||||
1408 | if (unit
| 0 | ||||||||||||||||||||||||
1409 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1410 | QString s = v.variant.toString(); | - | ||||||||||||||||||||||||
1411 | if (unit
| 0 | ||||||||||||||||||||||||
1412 | if (!s.endsWith(QLatin1String(unit), Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
1413 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1414 | s.chop(qstrlen(unit)); | - | ||||||||||||||||||||||||
1415 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1416 | bool ok = false; | - | ||||||||||||||||||||||||
1417 | int val = s.toInt(&ok); | - | ||||||||||||||||||||||||
1418 | if (ok
| 0 | ||||||||||||||||||||||||
1419 | * never executed: i = val;*i = val; never executed: *i = val; | 0 | ||||||||||||||||||||||||
1420 | return never executed: ok;return ok; never executed: return ok; | 0 | ||||||||||||||||||||||||
1421 | } | - | ||||||||||||||||||||||||
1422 | - | |||||||||||||||||||||||||
1423 | bool Declaration::intValue(int *i, const char *unit) const | - | ||||||||||||||||||||||||
1424 | { | - | ||||||||||||||||||||||||
1425 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1426 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1427 | return never executed: intValueHelper(d->values.at(0), i, unit);return intValueHelper(d->values.at(0), i, unit); never executed: return intValueHelper(d->values.at(0), i, unit); | 0 | ||||||||||||||||||||||||
1428 | } | - | ||||||||||||||||||||||||
1429 | - | |||||||||||||||||||||||||
1430 | QSize Declaration::sizeValue() const | - | ||||||||||||||||||||||||
1431 | { | - | ||||||||||||||||||||||||
1432 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1433 | return never executed: qvariant_cast<QSize>(d->parsed);return qvariant_cast<QSize>(d->parsed); never executed: return qvariant_cast<QSize>(d->parsed); | 0 | ||||||||||||||||||||||||
1434 | - | |||||||||||||||||||||||||
1435 | int x[2] = { 0, 0 }; | - | ||||||||||||||||||||||||
1436 | if (d->values.count() > 0
| 0 | ||||||||||||||||||||||||
1437 | intValueHelper(d->values.at(0), &x[0], "px"); never executed: intValueHelper(d->values.at(0), &x[0], "px"); | 0 | ||||||||||||||||||||||||
1438 | if (d->values.count() > 1
| 0 | ||||||||||||||||||||||||
1439 | intValueHelper(d->values.at(1), &x[1], "px"); never executed: intValueHelper(d->values.at(1), &x[1], "px"); | 0 | ||||||||||||||||||||||||
1440 | else | - | ||||||||||||||||||||||||
1441 | x[1] = x[0]; never executed: x[1] = x[0]; | 0 | ||||||||||||||||||||||||
1442 | QSize size(x[0], x[1]); | - | ||||||||||||||||||||||||
1443 | d->parsed = QVariant::fromValue<QSize>(size); | - | ||||||||||||||||||||||||
1444 | return never executed: size;return size; never executed: return size; | 0 | ||||||||||||||||||||||||
1445 | } | - | ||||||||||||||||||||||||
1446 | - | |||||||||||||||||||||||||
1447 | QRect Declaration::rectValue() const | - | ||||||||||||||||||||||||
1448 | { | - | ||||||||||||||||||||||||
1449 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1450 | return never executed: QRect();return QRect(); never executed: return QRect(); | 0 | ||||||||||||||||||||||||
1451 | - | |||||||||||||||||||||||||
1452 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1453 | return never executed: qvariant_cast<QRect>(d->parsed);return qvariant_cast<QRect>(d->parsed); never executed: return qvariant_cast<QRect>(d->parsed); | 0 | ||||||||||||||||||||||||
1454 | - | |||||||||||||||||||||||||
1455 | const QCss::Value &v = d->values.at(0); | - | ||||||||||||||||||||||||
1456 | if (v.type != Value::Function
| 0 | ||||||||||||||||||||||||
1457 | return never executed: QRect();return QRect(); never executed: return QRect(); | 0 | ||||||||||||||||||||||||
1458 | const QStringList func = v.variant.toStringList(); | - | ||||||||||||||||||||||||
1459 | if (func.count() != 2
| 0 | ||||||||||||||||||||||||
1460 | return never executed: QRect();return QRect(); never executed: return QRect(); | 0 | ||||||||||||||||||||||||
1461 | const auto args = func[1].splitRef(QLatin1Char(' '), QString::SkipEmptyParts); | - | ||||||||||||||||||||||||
1462 | if (args.count() != 4
| 0 | ||||||||||||||||||||||||
1463 | return never executed: QRect();return QRect(); never executed: return QRect(); | 0 | ||||||||||||||||||||||||
1464 | QRect rect(args[0].toInt(), args[1].toInt(), args[2].toInt(), args[3].toInt()); | - | ||||||||||||||||||||||||
1465 | d->parsed = QVariant::fromValue<QRect>(rect); | - | ||||||||||||||||||||||||
1466 | return never executed: rect;return rect; never executed: return rect; | 0 | ||||||||||||||||||||||||
1467 | } | - | ||||||||||||||||||||||||
1468 | - | |||||||||||||||||||||||||
1469 | void Declaration::colorValues(QColor *c, const QPalette &pal) const | - | ||||||||||||||||||||||||
1470 | { | - | ||||||||||||||||||||||||
1471 | int i; | - | ||||||||||||||||||||||||
1472 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1473 | QList<QVariant> v = d->parsed.toList(); | - | ||||||||||||||||||||||||
1474 | for (i = 0; i < qMin(d->values.count(), 4)
| 0 | ||||||||||||||||||||||||
1475 | if (v.at(i).type() == QVariant::Color
| 0 | ||||||||||||||||||||||||
1476 | c[i] = qvariant_cast<QColor>(v.at(i)); | - | ||||||||||||||||||||||||
1477 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1478 | c[i] = pal.color((QPalette::ColorRole)(v.at(i).toInt())); | - | ||||||||||||||||||||||||
1479 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1480 | } | - | ||||||||||||||||||||||||
1481 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1482 | QList<QVariant> v; | - | ||||||||||||||||||||||||
1483 | for (i = 0; i < qMin(d->values.count(), 4)
| 0 | ||||||||||||||||||||||||
1484 | ColorData color = parseColorValue(d->values.at(i)); | - | ||||||||||||||||||||||||
1485 | if(color.type == ColorData::Role
| 0 | ||||||||||||||||||||||||
1486 | v += QVariant::fromValue<int>(color.role); | - | ||||||||||||||||||||||||
1487 | c[i] = pal.color((QPalette::ColorRole)(color.role)); | - | ||||||||||||||||||||||||
1488 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1489 | v += QVariant::fromValue<QColor>(color.color); | - | ||||||||||||||||||||||||
1490 | c[i] = color.color; | - | ||||||||||||||||||||||||
1491 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1492 | } | - | ||||||||||||||||||||||||
1493 | d->parsed = v; | - | ||||||||||||||||||||||||
1494 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1495 | - | |||||||||||||||||||||||||
1496 | if (i == 0
never executed: c[0] = c[1] = c[2] = c[3] = QColor(); | 0 | ||||||||||||||||||||||||
1497 | else if (i == 1
never executed: c[3] = c[2] = c[1] = c[0]; | 0 | ||||||||||||||||||||||||
1498 | else if (i == 2
never executed: c[2] = c[0], c[3] = c[1]; | 0 | ||||||||||||||||||||||||
1499 | else if (i == 3
never executed: c[3] = c[1]; | 0 | ||||||||||||||||||||||||
1500 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1501 | - | |||||||||||||||||||||||||
1502 | BorderStyle Declaration::styleValue() const | - | ||||||||||||||||||||||||
1503 | { | - | ||||||||||||||||||||||||
1504 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1505 | return never executed: BorderStyle_None;return BorderStyle_None; never executed: return BorderStyle_None; | 0 | ||||||||||||||||||||||||
1506 | return never executed: parseStyleValue(d->values.at(0));return parseStyleValue(d->values.at(0)); never executed: return parseStyleValue(d->values.at(0)); | 0 | ||||||||||||||||||||||||
1507 | } | - | ||||||||||||||||||||||||
1508 | - | |||||||||||||||||||||||||
1509 | void Declaration::styleValues(BorderStyle *s) const | - | ||||||||||||||||||||||||
1510 | { | - | ||||||||||||||||||||||||
1511 | int i; | - | ||||||||||||||||||||||||
1512 | for (i = 0; i < qMin(d->values.count(), 4)
| 0 | ||||||||||||||||||||||||
1513 | s[i] = parseStyleValue(d->values.at(i)); never executed: s[i] = parseStyleValue(d->values.at(i)); | 0 | ||||||||||||||||||||||||
1514 | if (i == 0
never executed: s[0] = s[1] = s[2] = s[3] = BorderStyle_None; | 0 | ||||||||||||||||||||||||
1515 | else if (i == 1
never executed: s[3] = s[2] = s[1] = s[0]; | 0 | ||||||||||||||||||||||||
1516 | else if (i == 2
never executed: s[2] = s[0], s[3] = s[1]; | 0 | ||||||||||||||||||||||||
1517 | else if (i == 3
never executed: s[3] = s[1]; | 0 | ||||||||||||||||||||||||
1518 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1519 | - | |||||||||||||||||||||||||
1520 | Repeat Declaration::repeatValue() const | - | ||||||||||||||||||||||||
1521 | { | - | ||||||||||||||||||||||||
1522 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1523 | return never executed: static_cast<Repeat>(d->parsed.toInt());return static_cast<Repeat>(d->parsed.toInt()); never executed: return static_cast<Repeat>(d->parsed.toInt()); | 0 | ||||||||||||||||||||||||
1524 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1525 | return never executed: Repeat_Unknown;return Repeat_Unknown; never executed: return Repeat_Unknown; | 0 | ||||||||||||||||||||||||
1526 | int v = findKnownValue(d->values.at(0).variant.toString(), | - | ||||||||||||||||||||||||
1527 | repeats, NumKnownRepeats); | - | ||||||||||||||||||||||||
1528 | d->parsed = v; | - | ||||||||||||||||||||||||
1529 | return never executed: static_cast<Repeat>(v);return static_cast<Repeat>(v); never executed: return static_cast<Repeat>(v); | 0 | ||||||||||||||||||||||||
1530 | } | - | ||||||||||||||||||||||||
1531 | - | |||||||||||||||||||||||||
1532 | Origin Declaration::originValue() const | - | ||||||||||||||||||||||||
1533 | { | - | ||||||||||||||||||||||||
1534 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1535 | return never executed: static_cast<Origin>(d->parsed.toInt());return static_cast<Origin>(d->parsed.toInt()); never executed: return static_cast<Origin>(d->parsed.toInt()); | 0 | ||||||||||||||||||||||||
1536 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1537 | return never executed: Origin_Unknown;return Origin_Unknown; never executed: return Origin_Unknown; | 0 | ||||||||||||||||||||||||
1538 | int v = findKnownValue(d->values.at(0).variant.toString(), | - | ||||||||||||||||||||||||
1539 | origins, NumKnownOrigins); | - | ||||||||||||||||||||||||
1540 | d->parsed = v; | - | ||||||||||||||||||||||||
1541 | return never executed: static_cast<Origin>(v);return static_cast<Origin>(v); never executed: return static_cast<Origin>(v); | 0 | ||||||||||||||||||||||||
1542 | } | - | ||||||||||||||||||||||||
1543 | - | |||||||||||||||||||||||||
1544 | PositionMode Declaration::positionValue() const | - | ||||||||||||||||||||||||
1545 | { | - | ||||||||||||||||||||||||
1546 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1547 | return never executed: static_cast<PositionMode>(d->parsed.toInt());return static_cast<PositionMode>(d->parsed.toInt()); never executed: return static_cast<PositionMode>(d->parsed.toInt()); | 0 | ||||||||||||||||||||||||
1548 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1549 | return never executed: PositionMode_Unknown;return PositionMode_Unknown; never executed: return PositionMode_Unknown; | 0 | ||||||||||||||||||||||||
1550 | int v = findKnownValue(d->values.at(0).variant.toString(), | - | ||||||||||||||||||||||||
1551 | positions, NumKnownPositionModes); | - | ||||||||||||||||||||||||
1552 | d->parsed = v; | - | ||||||||||||||||||||||||
1553 | return never executed: static_cast<PositionMode>(v);return static_cast<PositionMode>(v); never executed: return static_cast<PositionMode>(v); | 0 | ||||||||||||||||||||||||
1554 | } | - | ||||||||||||||||||||||||
1555 | - | |||||||||||||||||||||||||
1556 | Attachment Declaration::attachmentValue() const | - | ||||||||||||||||||||||||
1557 | { | - | ||||||||||||||||||||||||
1558 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1559 | return never executed: static_cast<Attachment>(d->parsed.toInt());return static_cast<Attachment>(d->parsed.toInt()); never executed: return static_cast<Attachment>(d->parsed.toInt()); | 0 | ||||||||||||||||||||||||
1560 | if (d->values.count() != 1
| 0 | ||||||||||||||||||||||||
1561 | return never executed: Attachment_Unknown;return Attachment_Unknown; never executed: return Attachment_Unknown; | 0 | ||||||||||||||||||||||||
1562 | int v = findKnownValue(d->values.at(0).variant.toString(), | - | ||||||||||||||||||||||||
1563 | attachments, NumKnownAttachments); | - | ||||||||||||||||||||||||
1564 | d->parsed = v; | - | ||||||||||||||||||||||||
1565 | return never executed: static_cast<Attachment>(v);return static_cast<Attachment>(v); never executed: return static_cast<Attachment>(v); | 0 | ||||||||||||||||||||||||
1566 | } | - | ||||||||||||||||||||||||
1567 | - | |||||||||||||||||||||||||
1568 | int Declaration::styleFeaturesValue() const | - | ||||||||||||||||||||||||
1569 | { | - | ||||||||||||||||||||||||
1570 | ((!(d->propertyId == QtStyleFeatures)) ? qt_assert("d->propertyId == QtStyleFeatures",__FILE__,1627) : qt_noop()); | - | ||||||||||||||||||||||||
1571 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1572 | return never executed: d->parsed.toInt();return d->parsed.toInt(); never executed: return d->parsed.toInt(); | 0 | ||||||||||||||||||||||||
1573 | int features = StyleFeature_None; | - | ||||||||||||||||||||||||
1574 | for (int i = 0; i < d->values.count()
| 0 | ||||||||||||||||||||||||
1575 | features |= static_cast<int>(findKnownValue(d->values.value(i).variant.toString(), | - | ||||||||||||||||||||||||
1576 | styleFeatures, NumKnownStyleFeatures)); | - | ||||||||||||||||||||||||
1577 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1578 | d->parsed = features; | - | ||||||||||||||||||||||||
1579 | return never executed: features;return features; never executed: return features; | 0 | ||||||||||||||||||||||||
1580 | } | - | ||||||||||||||||||||||||
1581 | - | |||||||||||||||||||||||||
1582 | QString Declaration::uriValue() const | - | ||||||||||||||||||||||||
1583 | { | - | ||||||||||||||||||||||||
1584 | if (d->values.isEmpty()
| 0 | ||||||||||||||||||||||||
1585 | return never executed: QString();return QString(); never executed: return QString(); | 0 | ||||||||||||||||||||||||
1586 | return never executed: d->values.at(0).variant.toString();return d->values.at(0).variant.toString(); never executed: return d->values.at(0).variant.toString(); | 0 | ||||||||||||||||||||||||
1587 | } | - | ||||||||||||||||||||||||
1588 | - | |||||||||||||||||||||||||
1589 | Qt::Alignment Declaration::alignmentValue() const | - | ||||||||||||||||||||||||
1590 | { | - | ||||||||||||||||||||||||
1591 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1592 | return never executed: Qt::Alignment(d->parsed.toInt());return Qt::Alignment(d->parsed.toInt()); never executed: return Qt::Alignment(d->parsed.toInt()); | 0 | ||||||||||||||||||||||||
1593 | if (d->values.isEmpty()
| 0 | ||||||||||||||||||||||||
1594 | return never executed: Qt::AlignLeft | Qt::AlignTop;return Qt::AlignLeft | Qt::AlignTop; never executed: return Qt::AlignLeft | Qt::AlignTop; | 0 | ||||||||||||||||||||||||
1595 | - | |||||||||||||||||||||||||
1596 | Qt::Alignment v = parseAlignment(d->values.constData(), d->values.count()); | - | ||||||||||||||||||||||||
1597 | d->parsed = int(v); | - | ||||||||||||||||||||||||
1598 | return never executed: v;return v; never executed: return v; | 0 | ||||||||||||||||||||||||
1599 | } | - | ||||||||||||||||||||||||
1600 | - | |||||||||||||||||||||||||
1601 | void Declaration::borderImageValue(QString *image, int *cuts, | - | ||||||||||||||||||||||||
1602 | TileMode *h, TileMode *v) const | - | ||||||||||||||||||||||||
1603 | { | - | ||||||||||||||||||||||||
1604 | const DeclarationData *d = this->d.data(); | - | ||||||||||||||||||||||||
1605 | *image = uriValue(); | - | ||||||||||||||||||||||||
1606 | for (int i = 0; i < 4
| 0 | ||||||||||||||||||||||||
1607 | cuts[i] = -1; never executed: cuts[i] = -1; | 0 | ||||||||||||||||||||||||
1608 | *h = *v = TileMode_Stretch; | - | ||||||||||||||||||||||||
1609 | - | |||||||||||||||||||||||||
1610 | if (d->values.count() < 2
| 0 | ||||||||||||||||||||||||
1611 | return; never executed: return; | 0 | ||||||||||||||||||||||||
1612 | - | |||||||||||||||||||||||||
1613 | if (d->values.at(1).type == Value::Number
| 0 | ||||||||||||||||||||||||
1614 | int i; | - | ||||||||||||||||||||||||
1615 | for (i = 0; i < qMin(d->values.count()-1, 4)
| 0 | ||||||||||||||||||||||||
1616 | const Value& v = d->values.at(i+1); | - | ||||||||||||||||||||||||
1617 | if (v.type != Value::Number
| 0 | ||||||||||||||||||||||||
1618 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1619 | cuts[i] = v.variant.toString().toInt(); | - | ||||||||||||||||||||||||
1620 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1621 | if (i == 0
never executed: cuts[0] = cuts[1] = cuts[2] = cuts[3] = 0; | 0 | ||||||||||||||||||||||||
1622 | else if (i == 1
never executed: cuts[3] = cuts[2] = cuts[1] = cuts[0]; | 0 | ||||||||||||||||||||||||
1623 | else if (i == 2
never executed: cuts[2] = cuts[0], cuts[3] = cuts[1]; | 0 | ||||||||||||||||||||||||
1624 | else if (i == 3
never executed: cuts[3] = cuts[1]; | 0 | ||||||||||||||||||||||||
1625 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1626 | - | |||||||||||||||||||||||||
1627 | if (d->values.last().type == Value::Identifier
| 0 | ||||||||||||||||||||||||
1628 | *v = static_cast<TileMode>(findKnownValue(d->values.last().variant.toString(), | - | ||||||||||||||||||||||||
1629 | tileModes, NumKnownTileModes)); | - | ||||||||||||||||||||||||
1630 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1631 | if (d->values[d->values.count() - 2].type == Value::Identifier
| 0 | ||||||||||||||||||||||||
1632 | *h = static_cast<TileMode> | - | ||||||||||||||||||||||||
1633 | (findKnownValue(d->values[d->values.count()-2].variant.toString(), | - | ||||||||||||||||||||||||
1634 | tileModes, NumKnownTileModes)); | - | ||||||||||||||||||||||||
1635 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
1636 | * never executed: h = *v;*h = *v; never executed: *h = *v; | 0 | ||||||||||||||||||||||||
1637 | } | - | ||||||||||||||||||||||||
1638 | - | |||||||||||||||||||||||||
1639 | QIcon Declaration::iconValue() const | - | ||||||||||||||||||||||||
1640 | { | - | ||||||||||||||||||||||||
1641 | if (d->parsed.isValid()
| 0 | ||||||||||||||||||||||||
1642 | return never executed: qvariant_cast<QIcon>(d->parsed);return qvariant_cast<QIcon>(d->parsed); never executed: return qvariant_cast<QIcon>(d->parsed); | 0 | ||||||||||||||||||||||||
1643 | - | |||||||||||||||||||||||||
1644 | QIcon icon; | - | ||||||||||||||||||||||||
1645 | for (int i = 0; i < d->values.count()
| 0 | ||||||||||||||||||||||||
1646 | const Value &value = d->values.at(i++); | - | ||||||||||||||||||||||||
1647 | if (value.type != Value::Uri
| 0 | ||||||||||||||||||||||||
1648 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1649 | QString uri = value.variant.toString(); | - | ||||||||||||||||||||||||
1650 | QIcon::Mode mode = QIcon::Normal; | - | ||||||||||||||||||||||||
1651 | QIcon::State state = QIcon::Off; | - | ||||||||||||||||||||||||
1652 | for (int j = 0; j < 2
| 0 | ||||||||||||||||||||||||
1653 | if (i != d->values.count()
| 0 | ||||||||||||||||||||||||
1654 | switch (d->values.at(i).variant.toInt()) { | - | ||||||||||||||||||||||||
1655 | case never executed: Value_Disabled:case Value_Disabled: never executed: mode = QIcon::Disabled; break;case Value_Disabled: never executed: break; | 0 | ||||||||||||||||||||||||
1656 | case never executed: Value_Active:case Value_Active: never executed: mode = QIcon::Active; break;case Value_Active: never executed: break; | 0 | ||||||||||||||||||||||||
1657 | case never executed: Value_Selected:case Value_Selected: never executed: mode = QIcon::Selected; break;case Value_Selected: never executed: break; | 0 | ||||||||||||||||||||||||
1658 | case never executed: Value_Normal:case Value_Normal: never executed: mode = QIcon::Normal; break;case Value_Normal: never executed: break; | 0 | ||||||||||||||||||||||||
1659 | case never executed: Value_On:case Value_On: never executed: state = QIcon::On; break;case Value_On: never executed: break; | 0 | ||||||||||||||||||||||||
1660 | case never executed: Value_Off:case Value_Off: never executed: state = QIcon::Off; break;case Value_Off: never executed: break; | 0 | ||||||||||||||||||||||||
1661 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
1662 | } | - | ||||||||||||||||||||||||
1663 | ++i; | - | ||||||||||||||||||||||||
1664 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1665 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1666 | } | - | ||||||||||||||||||||||||
1667 | } | - | ||||||||||||||||||||||||
1668 | - | |||||||||||||||||||||||||
1669 | - | |||||||||||||||||||||||||
1670 | if (icon.isNull()
| 0 | ||||||||||||||||||||||||
1671 | icon = QIcon(uri); never executed: icon = QIcon(uri); | 0 | ||||||||||||||||||||||||
1672 | else | - | ||||||||||||||||||||||||
1673 | icon.addPixmap(uri, mode, state); never executed: icon.addPixmap(uri, mode, state); | 0 | ||||||||||||||||||||||||
1674 | - | |||||||||||||||||||||||||
1675 | if (i == d->values.count()
| 0 | ||||||||||||||||||||||||
1676 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1677 | - | |||||||||||||||||||||||||
1678 | if (d->values.at(i).type == Value::TermOperatorComma
| 0 | ||||||||||||||||||||||||
1679 | i++; never executed: i++; | 0 | ||||||||||||||||||||||||
1680 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1681 | - | |||||||||||||||||||||||||
1682 | d->parsed = QVariant::fromValue<QIcon>(icon); | - | ||||||||||||||||||||||||
1683 | return never executed: icon;return icon; never executed: return icon; | 0 | ||||||||||||||||||||||||
1684 | } | - | ||||||||||||||||||||||||
1685 | - | |||||||||||||||||||||||||
1686 | - | |||||||||||||||||||||||||
1687 | - | |||||||||||||||||||||||||
1688 | int Selector::specificity() const | - | ||||||||||||||||||||||||
1689 | { | - | ||||||||||||||||||||||||
1690 | int val = 0; | - | ||||||||||||||||||||||||
1691 | for (int i = 0; i < basicSelectors.count()
| 0 | ||||||||||||||||||||||||
1692 | const BasicSelector &sel = basicSelectors.at(i); | - | ||||||||||||||||||||||||
1693 | if (!sel.elementName.isEmpty()
| 0 | ||||||||||||||||||||||||
1694 | val += 1; never executed: val += 1; | 0 | ||||||||||||||||||||||||
1695 | - | |||||||||||||||||||||||||
1696 | val += (sel.pseudos.count() + sel.attributeSelectors.count()) * 0x10; | - | ||||||||||||||||||||||||
1697 | val += sel.ids.count() * 0x100; | - | ||||||||||||||||||||||||
1698 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1699 | return never executed: val;return val; never executed: return val; | 0 | ||||||||||||||||||||||||
1700 | } | - | ||||||||||||||||||||||||
1701 | - | |||||||||||||||||||||||||
1702 | QString Selector::pseudoElement() const | - | ||||||||||||||||||||||||
1703 | { | - | ||||||||||||||||||||||||
1704 | const BasicSelector& bs = basicSelectors.last(); | - | ||||||||||||||||||||||||
1705 | if (!bs.pseudos.isEmpty()
| 0 | ||||||||||||||||||||||||
1706 | return never executed: bs.pseudos.at(0).name;return bs.pseudos.at(0).name; never executed: return bs.pseudos.at(0).name; | 0 | ||||||||||||||||||||||||
1707 | return never executed: QString();return QString(); never executed: return QString(); | 0 | ||||||||||||||||||||||||
1708 | } | - | ||||||||||||||||||||||||
1709 | - | |||||||||||||||||||||||||
1710 | quint64 Selector::pseudoClass(quint64 *negated) const | - | ||||||||||||||||||||||||
1711 | { | - | ||||||||||||||||||||||||
1712 | const BasicSelector& bs = basicSelectors.last(); | - | ||||||||||||||||||||||||
1713 | if (bs.pseudos.isEmpty()
| 0 | ||||||||||||||||||||||||
1714 | return never executed: PseudoClass_Unspecified;return PseudoClass_Unspecified; never executed: return PseudoClass_Unspecified; | 0 | ||||||||||||||||||||||||
1715 | quint64 pc = PseudoClass_Unknown; | - | ||||||||||||||||||||||||
1716 | for (int i = !pseudoElement().isEmpty(); i < bs.pseudos.count()
| 0 | ||||||||||||||||||||||||
1717 | const Pseudo &pseudo = bs.pseudos.at(i); | - | ||||||||||||||||||||||||
1718 | if (pseudo.type == PseudoClass_Unknown
| 0 | ||||||||||||||||||||||||
1719 | return never executed: PseudoClass_Unknown;return PseudoClass_Unknown; never executed: return PseudoClass_Unknown; | 0 | ||||||||||||||||||||||||
1720 | if (!pseudo.negated
| 0 | ||||||||||||||||||||||||
1721 | pc |= pseudo.type; never executed: pc |= pseudo.type; | 0 | ||||||||||||||||||||||||
1722 | else if (negated
| 0 | ||||||||||||||||||||||||
1723 | * never executed: negated |= pseudo.type;*negated |= pseudo.type; never executed: *negated |= pseudo.type; | 0 | ||||||||||||||||||||||||
1724 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1725 | return never executed: pc;return pc; never executed: return pc; | 0 | ||||||||||||||||||||||||
1726 | } | - | ||||||||||||||||||||||||
1727 | - | |||||||||||||||||||||||||
1728 | - | |||||||||||||||||||||||||
1729 | - | |||||||||||||||||||||||||
1730 | void StyleSheet::buildIndexes(Qt::CaseSensitivity nameCaseSensitivity) | - | ||||||||||||||||||||||||
1731 | { | - | ||||||||||||||||||||||||
1732 | QVector<StyleRule> universals; | - | ||||||||||||||||||||||||
1733 | for (int i = 0; i < styleRules.count()
| 0 | ||||||||||||||||||||||||
1734 | const StyleRule &rule = styleRules.at(i); | - | ||||||||||||||||||||||||
1735 | QVector<Selector> universalsSelectors; | - | ||||||||||||||||||||||||
1736 | for (int j = 0; j < rule.selectors.count()
| 0 | ||||||||||||||||||||||||
1737 | const Selector& selector = rule.selectors.at(j); | - | ||||||||||||||||||||||||
1738 | - | |||||||||||||||||||||||||
1739 | if (selector.basicSelectors.isEmpty()
| 0 | ||||||||||||||||||||||||
1740 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1741 | - | |||||||||||||||||||||||||
1742 | if (selector.basicSelectors.at(0).relationToNext == BasicSelector::NoRelation
| 0 | ||||||||||||||||||||||||
1743 | if (selector.basicSelectors.count() != 1
| 0 | ||||||||||||||||||||||||
1744 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1745 | } never executed: else if (selector.basicSelectors.count() <= 1end of block
| 0 | ||||||||||||||||||||||||
1746 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1747 | } | - | ||||||||||||||||||||||||
1748 | - | |||||||||||||||||||||||||
1749 | const BasicSelector &sel = selector.basicSelectors.at(selector.basicSelectors.count() - 1); | - | ||||||||||||||||||||||||
1750 | - | |||||||||||||||||||||||||
1751 | if (!sel.ids.isEmpty()
| 0 | ||||||||||||||||||||||||
1752 | StyleRule nr; | - | ||||||||||||||||||||||||
1753 | nr.selectors += selector; | - | ||||||||||||||||||||||||
1754 | nr.declarations = rule.declarations; | - | ||||||||||||||||||||||||
1755 | nr.order = i; | - | ||||||||||||||||||||||||
1756 | idIndex.insert(sel.ids.at(0), nr); | - | ||||||||||||||||||||||||
1757 | } never executed: else if (!sel.elementName.isEmpty()end of block
| 0 | ||||||||||||||||||||||||
1758 | StyleRule nr; | - | ||||||||||||||||||||||||
1759 | nr.selectors += selector; | - | ||||||||||||||||||||||||
1760 | nr.declarations = rule.declarations; | - | ||||||||||||||||||||||||
1761 | nr.order = i; | - | ||||||||||||||||||||||||
1762 | QString name = sel.elementName; | - | ||||||||||||||||||||||||
1763 | if (nameCaseSensitivity == Qt::CaseInsensitive
| 0 | ||||||||||||||||||||||||
1764 | name=name.toLower(); never executed: name=name.toLower(); | 0 | ||||||||||||||||||||||||
1765 | nameIndex.insert(name, nr); | - | ||||||||||||||||||||||||
1766 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
1767 | universalsSelectors += selector; | - | ||||||||||||||||||||||||
1768 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1769 | } | - | ||||||||||||||||||||||||
1770 | if (!universalsSelectors.isEmpty()
| 0 | ||||||||||||||||||||||||
1771 | StyleRule nr; | - | ||||||||||||||||||||||||
1772 | nr.selectors = universalsSelectors; | - | ||||||||||||||||||||||||
1773 | nr.declarations = rule.declarations; | - | ||||||||||||||||||||||||
1774 | nr.order = i; | - | ||||||||||||||||||||||||
1775 | universals << nr; | - | ||||||||||||||||||||||||
1776 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1777 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1778 | styleRules = universals; | - | ||||||||||||||||||||||||
1779 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1780 | - | |||||||||||||||||||||||||
1781 | - | |||||||||||||||||||||||||
1782 | - | |||||||||||||||||||||||||
1783 | StyleSelector::~StyleSelector() | - | ||||||||||||||||||||||||
1784 | { | - | ||||||||||||||||||||||||
1785 | } | - | ||||||||||||||||||||||||
1786 | - | |||||||||||||||||||||||||
1787 | bool StyleSelector::nodeNameEquals(NodePtr node, const QString& nodeName) const | - | ||||||||||||||||||||||||
1788 | { | - | ||||||||||||||||||||||||
1789 | return never executed: nodeNames(node).contains(nodeName, nameCaseSensitivity);return nodeNames(node).contains(nodeName, nameCaseSensitivity); never executed: return nodeNames(node).contains(nodeName, nameCaseSensitivity); | 0 | ||||||||||||||||||||||||
1790 | } | - | ||||||||||||||||||||||||
1791 | - | |||||||||||||||||||||||||
1792 | QStringList StyleSelector::nodeIds(NodePtr node) const | - | ||||||||||||||||||||||||
1793 | { | - | ||||||||||||||||||||||||
1794 | return never executed: QStringList(attribute(node, QLatin1String("id")));return QStringList(attribute(node, QLatin1String("id"))); never executed: return QStringList(attribute(node, QLatin1String("id"))); | 0 | ||||||||||||||||||||||||
1795 | } | - | ||||||||||||||||||||||||
1796 | - | |||||||||||||||||||||||||
1797 | bool StyleSelector::selectorMatches(const Selector &selector, NodePtr node) | - | ||||||||||||||||||||||||
1798 | { | - | ||||||||||||||||||||||||
1799 | if (selector.basicSelectors.isEmpty()
| 0 | ||||||||||||||||||||||||
1800 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1801 | - | |||||||||||||||||||||||||
1802 | if (selector.basicSelectors.at(0).relationToNext == BasicSelector::NoRelation
| 0 | ||||||||||||||||||||||||
1803 | if (selector.basicSelectors.count() != 1
| 0 | ||||||||||||||||||||||||
1804 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1805 | return never executed: basicSelectorMatches(selector.basicSelectors.at(0), node);return basicSelectorMatches(selector.basicSelectors.at(0), node); never executed: return basicSelectorMatches(selector.basicSelectors.at(0), node); | 0 | ||||||||||||||||||||||||
1806 | } | - | ||||||||||||||||||||||||
1807 | if (selector.basicSelectors.count() <= 1
| 0 | ||||||||||||||||||||||||
1808 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1809 | - | |||||||||||||||||||||||||
1810 | int i = selector.basicSelectors.count() - 1; | - | ||||||||||||||||||||||||
1811 | node = duplicateNode(node); | - | ||||||||||||||||||||||||
1812 | bool match = true; | - | ||||||||||||||||||||||||
1813 | - | |||||||||||||||||||||||||
1814 | BasicSelector sel = selector.basicSelectors.at(i); | - | ||||||||||||||||||||||||
1815 | do { | - | ||||||||||||||||||||||||
1816 | match = basicSelectorMatches(sel, node); | - | ||||||||||||||||||||||||
1817 | if (!match
| 0 | ||||||||||||||||||||||||
1818 | if (sel.relationToNext == BasicSelector::MatchNextSelectorIfParent
| 0 | ||||||||||||||||||||||||
1819 | || i == selector.basicSelectors.count() - 1
| 0 | ||||||||||||||||||||||||
1820 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1821 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1822 | - | |||||||||||||||||||||||||
1823 | if (match
| 0 | ||||||||||||||||||||||||
1824 | -- never executed: i;--i; never executed: --i; | 0 | ||||||||||||||||||||||||
1825 | - | |||||||||||||||||||||||||
1826 | if (i < 0
| 0 | ||||||||||||||||||||||||
1827 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1828 | - | |||||||||||||||||||||||||
1829 | sel = selector.basicSelectors.at(i); | - | ||||||||||||||||||||||||
1830 | if (sel.relationToNext == BasicSelector::MatchNextSelectorIfAncestor
| 0 | ||||||||||||||||||||||||
1831 | || sel.relationToNext == BasicSelector::MatchNextSelectorIfParent
| 0 | ||||||||||||||||||||||||
1832 | - | |||||||||||||||||||||||||
1833 | NodePtr nextParent = parentNode(node); | - | ||||||||||||||||||||||||
1834 | freeNode(node); | - | ||||||||||||||||||||||||
1835 | node = nextParent; | - | ||||||||||||||||||||||||
1836 | } never executed: else if (sel.relationToNext == BasicSelector::MatchNextSelectorIfPreceedsend of block
| 0 | ||||||||||||||||||||||||
1837 | NodePtr previousSibling = previousSiblingNode(node); | - | ||||||||||||||||||||||||
1838 | freeNode(node); | - | ||||||||||||||||||||||||
1839 | node = previousSibling; | - | ||||||||||||||||||||||||
1840 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1841 | if (isNullNode(node)
| 0 | ||||||||||||||||||||||||
1842 | match = false; | - | ||||||||||||||||||||||||
1843 | break; never executed: break; | 0 | ||||||||||||||||||||||||
1844 | } | - | ||||||||||||||||||||||||
1845 | } never executed: while (i >= 0end of block
| 0 | ||||||||||||||||||||||||
1846 | - | |||||||||||||||||||||||||
1847 | freeNode(node); | - | ||||||||||||||||||||||||
1848 | - | |||||||||||||||||||||||||
1849 | return never executed: match;return match; never executed: return match; | 0 | ||||||||||||||||||||||||
1850 | } | - | ||||||||||||||||||||||||
1851 | - | |||||||||||||||||||||||||
1852 | bool StyleSelector::basicSelectorMatches(const BasicSelector &sel, NodePtr node) | - | ||||||||||||||||||||||||
1853 | { | - | ||||||||||||||||||||||||
1854 | if (!sel.attributeSelectors.isEmpty()
| 0 | ||||||||||||||||||||||||
1855 | if (!hasAttributes(node)
| 0 | ||||||||||||||||||||||||
1856 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1857 | - | |||||||||||||||||||||||||
1858 | for (int i = 0; i < sel.attributeSelectors.count()
| 0 | ||||||||||||||||||||||||
1859 | const QCss::AttributeSelector &a = sel.attributeSelectors.at(i); | - | ||||||||||||||||||||||||
1860 | - | |||||||||||||||||||||||||
1861 | const QString attrValue = attribute(node, a.name); | - | ||||||||||||||||||||||||
1862 | if (attrValue.isNull()
| 0 | ||||||||||||||||||||||||
1863 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1864 | - | |||||||||||||||||||||||||
1865 | if (a.valueMatchCriterium == QCss::AttributeSelector::MatchContains
| 0 | ||||||||||||||||||||||||
1866 | const auto lst = attrValue.splitRef(QLatin1Char(' ')); | - | ||||||||||||||||||||||||
1867 | if (!lst.contains(QStringRef(&a.value))
| 0 | ||||||||||||||||||||||||
1868 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1869 | } never executed: else if (end of block | 0 | ||||||||||||||||||||||||
1870 | (a.valueMatchCriterium == QCss::AttributeSelector::MatchEqual
| 0 | ||||||||||||||||||||||||
1871 | && attrValue != a.value
| 0 | ||||||||||||||||||||||||
1872 | || | - | ||||||||||||||||||||||||
1873 | (a.valueMatchCriterium == QCss::AttributeSelector::MatchBeginsWith
| 0 | ||||||||||||||||||||||||
1874 | && !attrValue.startsWith(a.value)
| 0 | ||||||||||||||||||||||||
1875 | ) | - | ||||||||||||||||||||||||
1876 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1877 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1878 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1879 | - | |||||||||||||||||||||||||
1880 | if (!sel.elementName.isEmpty()
| 0 | ||||||||||||||||||||||||
1881 | && !nodeNameEquals(node, sel.elementName)
| 0 | ||||||||||||||||||||||||
1882 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1883 | - | |||||||||||||||||||||||||
1884 | if (!sel.ids.isEmpty()
| 0 | ||||||||||||||||||||||||
1885 | && sel.ids != nodeIds(node)
| 0 | ||||||||||||||||||||||||
1886 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
1887 | - | |||||||||||||||||||||||||
1888 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
1889 | } | - | ||||||||||||||||||||||||
1890 | - | |||||||||||||||||||||||||
1891 | void StyleSelector::matchRule(NodePtr node, const StyleRule &rule, StyleSheetOrigin origin, | - | ||||||||||||||||||||||||
1892 | int depth, QMap<uint, StyleRule> *weightedRules) | - | ||||||||||||||||||||||||
1893 | { | - | ||||||||||||||||||||||||
1894 | for (int j = 0; j < rule.selectors.count()
| 0 | ||||||||||||||||||||||||
1895 | const Selector& selector = rule.selectors.at(j); | - | ||||||||||||||||||||||||
1896 | if (selectorMatches(selector, node)
| 0 | ||||||||||||||||||||||||
1897 | uint weight = rule.order | - | ||||||||||||||||||||||||
1898 | + selector.specificity() *0x100 | - | ||||||||||||||||||||||||
1899 | + (uint(origin) + depth)*0x100000; | - | ||||||||||||||||||||||||
1900 | StyleRule newRule = rule; | - | ||||||||||||||||||||||||
1901 | if(rule.selectors.count() > 1
| 0 | ||||||||||||||||||||||||
1902 | newRule.selectors.resize(1); | - | ||||||||||||||||||||||||
1903 | newRule.selectors[0] = selector; | - | ||||||||||||||||||||||||
1904 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1905 | - | |||||||||||||||||||||||||
1906 | weightedRules->insertMulti(weight, newRule); | - | ||||||||||||||||||||||||
1907 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1908 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1909 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1910 | - | |||||||||||||||||||||||||
1911 | - | |||||||||||||||||||||||||
1912 | - | |||||||||||||||||||||||||
1913 | QVector<StyleRule> StyleSelector::styleRulesForNode(NodePtr node) | - | ||||||||||||||||||||||||
1914 | { | - | ||||||||||||||||||||||||
1915 | QVector<StyleRule> rules; | - | ||||||||||||||||||||||||
1916 | if (styleSheets.isEmpty()
| 0 | ||||||||||||||||||||||||
1917 | return never executed: rules;return rules; never executed: return rules; | 0 | ||||||||||||||||||||||||
1918 | - | |||||||||||||||||||||||||
1919 | QMap<uint, StyleRule> weightedRules; | - | ||||||||||||||||||||||||
1920 | - | |||||||||||||||||||||||||
1921 | - | |||||||||||||||||||||||||
1922 | for (int sheetIdx = 0; sheetIdx < styleSheets.count()
| 0 | ||||||||||||||||||||||||
1923 | const StyleSheet &styleSheet = styleSheets.at(sheetIdx); | - | ||||||||||||||||||||||||
1924 | for (int i = 0; i < styleSheet.styleRules.count()
| 0 | ||||||||||||||||||||||||
1925 | matchRule(node, styleSheet.styleRules.at(i), styleSheet.origin, styleSheet.depth, &weightedRules); | - | ||||||||||||||||||||||||
1926 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1927 | - | |||||||||||||||||||||||||
1928 | if (!styleSheet.idIndex.isEmpty()
| 0 | ||||||||||||||||||||||||
1929 | QStringList ids = nodeIds(node); | - | ||||||||||||||||||||||||
1930 | for (int i = 0; i < ids.count()
| 0 | ||||||||||||||||||||||||
1931 | const QString &key = ids.at(i); | - | ||||||||||||||||||||||||
1932 | QMultiHash<QString, StyleRule>::const_iterator it = styleSheet.idIndex.constFind(key); | - | ||||||||||||||||||||||||
1933 | while (it != styleSheet.idIndex.constEnd()
| 0 | ||||||||||||||||||||||||
1934 | matchRule(node, it.value(), styleSheet.origin, styleSheet.depth, &weightedRules); | - | ||||||||||||||||||||||||
1935 | ++it; | - | ||||||||||||||||||||||||
1936 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1937 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1938 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1939 | if (!styleSheet.nameIndex.isEmpty()
| 0 | ||||||||||||||||||||||||
1940 | QStringList names = nodeNames(node); | - | ||||||||||||||||||||||||
1941 | for (int i = 0; i < names.count()
| 0 | ||||||||||||||||||||||||
1942 | QString name = names.at(i); | - | ||||||||||||||||||||||||
1943 | if (nameCaseSensitivity == Qt::CaseInsensitive
| 0 | ||||||||||||||||||||||||
1944 | name = name.toLower(); never executed: name = name.toLower(); | 0 | ||||||||||||||||||||||||
1945 | QMultiHash<QString, StyleRule>::const_iterator it = styleSheet.nameIndex.constFind(name); | - | ||||||||||||||||||||||||
1946 | while (it != styleSheet.nameIndex.constEnd()
| 0 | ||||||||||||||||||||||||
1947 | matchRule(node, it.value(), styleSheet.origin, styleSheet.depth, &weightedRules); | - | ||||||||||||||||||||||||
1948 | ++it; | - | ||||||||||||||||||||||||
1949 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1950 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1951 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1952 | if (!medium.isEmpty()
| 0 | ||||||||||||||||||||||||
1953 | for (int i = 0; i < styleSheet.mediaRules.count()
| 0 | ||||||||||||||||||||||||
1954 | if (styleSheet.mediaRules.at(i).media.contains(medium, Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
1955 | for (int j = 0; j < styleSheet.mediaRules.at(i).styleRules.count()
| 0 | ||||||||||||||||||||||||
1956 | matchRule(node, styleSheet.mediaRules.at(i).styleRules.at(j), styleSheet.origin, | - | ||||||||||||||||||||||||
1957 | styleSheet.depth, &weightedRules); | - | ||||||||||||||||||||||||
1958 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1959 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1960 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1961 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1962 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1963 | - | |||||||||||||||||||||||||
1964 | rules.reserve(weightedRules.count()); | - | ||||||||||||||||||||||||
1965 | QMap<uint, StyleRule>::const_iterator it = weightedRules.constBegin(); | - | ||||||||||||||||||||||||
1966 | for ( ; it != weightedRules.constEnd()
| 0 | ||||||||||||||||||||||||
1967 | rules += *it; never executed: rules += *it; | 0 | ||||||||||||||||||||||||
1968 | - | |||||||||||||||||||||||||
1969 | return never executed: rules;return rules; never executed: return rules; | 0 | ||||||||||||||||||||||||
1970 | } | - | ||||||||||||||||||||||||
1971 | - | |||||||||||||||||||||||||
1972 | - | |||||||||||||||||||||||||
1973 | - | |||||||||||||||||||||||||
1974 | QVector<Declaration> StyleSelector::declarationsForNode(NodePtr node, const char *extraPseudo) | - | ||||||||||||||||||||||||
1975 | { | - | ||||||||||||||||||||||||
1976 | QVector<Declaration> decls; | - | ||||||||||||||||||||||||
1977 | QVector<StyleRule> rules = styleRulesForNode(node); | - | ||||||||||||||||||||||||
1978 | for (int i = 0; i < rules.count()
| 0 | ||||||||||||||||||||||||
1979 | const Selector& selector = rules.at(i).selectors.at(0); | - | ||||||||||||||||||||||||
1980 | const QString pseudoElement = selector.pseudoElement(); | - | ||||||||||||||||||||||||
1981 | - | |||||||||||||||||||||||||
1982 | if (extraPseudo
| 0 | ||||||||||||||||||||||||
1983 | decls += rules.at(i).declarations; | - | ||||||||||||||||||||||||
1984 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1985 | } | - | ||||||||||||||||||||||||
1986 | - | |||||||||||||||||||||||||
1987 | if (!pseudoElement.isEmpty()
| 0 | ||||||||||||||||||||||||
1988 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
1989 | quint64 pseudoClass = selector.pseudoClass(); | - | ||||||||||||||||||||||||
1990 | if (pseudoClass == PseudoClass_Enabled
| 0 | ||||||||||||||||||||||||
1991 | decls += rules.at(i).declarations; never executed: decls += rules.at(i).declarations; | 0 | ||||||||||||||||||||||||
1992 | } never executed: end of block | 0 | ||||||||||||||||||||||||
1993 | return never executed: decls;return decls; never executed: return decls; | 0 | ||||||||||||||||||||||||
1994 | } | - | ||||||||||||||||||||||||
1995 | - | |||||||||||||||||||||||||
1996 | static inline bool isHexDigit(const char c) | - | ||||||||||||||||||||||||
1997 | { | - | ||||||||||||||||||||||||
1998 | return never executed: (c >= '0' && c <= '9')return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ; never executed: return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ; | 0 | ||||||||||||||||||||||||
1999 | || (c >= 'a' && c <= 'f') never executed: return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ; | 0 | ||||||||||||||||||||||||
2000 | || (c >= 'A' && c <= 'F') never executed: return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ; | 0 | ||||||||||||||||||||||||
2001 | ; never executed: return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') ; | 0 | ||||||||||||||||||||||||
2002 | } | - | ||||||||||||||||||||||||
2003 | - | |||||||||||||||||||||||||
2004 | QString Scanner::preprocess(const QString &input, bool *hasEscapeSequences) | - | ||||||||||||||||||||||||
2005 | { | - | ||||||||||||||||||||||||
2006 | QString output = input; | - | ||||||||||||||||||||||||
2007 | - | |||||||||||||||||||||||||
2008 | if (hasEscapeSequences
| 0 | ||||||||||||||||||||||||
2009 | * never executed: hasEscapeSequences = false;*hasEscapeSequences = false; never executed: *hasEscapeSequences = false; | 0 | ||||||||||||||||||||||||
2010 | - | |||||||||||||||||||||||||
2011 | int i = 0; | - | ||||||||||||||||||||||||
2012 | while (i < output.size()
| 0 | ||||||||||||||||||||||||
2013 | if (output.at(i) == QLatin1Char('\\')
| 0 | ||||||||||||||||||||||||
2014 | - | |||||||||||||||||||||||||
2015 | ++i; | - | ||||||||||||||||||||||||
2016 | - | |||||||||||||||||||||||||
2017 | int hexCount = 0; | - | ||||||||||||||||||||||||
2018 | const int hexStart = i; | - | ||||||||||||||||||||||||
2019 | while (i < output.size()
| 0 | ||||||||||||||||||||||||
2020 | && isHexDigit(output.at(i).toLatin1())
| 0 | ||||||||||||||||||||||||
2021 | && hexCount < 7
| 0 | ||||||||||||||||||||||||
2022 | ++hexCount; | - | ||||||||||||||||||||||||
2023 | ++i; | - | ||||||||||||||||||||||||
2024 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2025 | if (hexCount == 0
| 0 | ||||||||||||||||||||||||
2026 | if (hasEscapeSequences
| 0 | ||||||||||||||||||||||||
2027 | * never executed: hasEscapeSequences = true;*hasEscapeSequences = true; never executed: *hasEscapeSequences = true; | 0 | ||||||||||||||||||||||||
2028 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
2029 | } | - | ||||||||||||||||||||||||
2030 | - | |||||||||||||||||||||||||
2031 | hexCount = qMin(hexCount, 6); | - | ||||||||||||||||||||||||
2032 | bool ok = false; | - | ||||||||||||||||||||||||
2033 | ushort code = output.mid(hexStart, hexCount).toUShort(&ok, 16); | - | ||||||||||||||||||||||||
2034 | if (ok
| 0 | ||||||||||||||||||||||||
2035 | output.replace(hexStart - 1, hexCount + 1, QChar(code)); | - | ||||||||||||||||||||||||
2036 | i = hexStart; | - | ||||||||||||||||||||||||
2037 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2038 | i = hexStart; | - | ||||||||||||||||||||||||
2039 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2040 | } else { | - | ||||||||||||||||||||||||
2041 | ++i; | - | ||||||||||||||||||||||||
2042 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2043 | } | - | ||||||||||||||||||||||||
2044 | return never executed: output;return output; never executed: return output; | 0 | ||||||||||||||||||||||||
2045 | } | - | ||||||||||||||||||||||||
2046 | - | |||||||||||||||||||||||||
2047 | int QCssScanner_Generated::handleCommentStart() | - | ||||||||||||||||||||||||
2048 | { | - | ||||||||||||||||||||||||
2049 | while (pos < input.size() - 1
| 0 | ||||||||||||||||||||||||
2050 | if (input.at(pos) == QLatin1Char('*')
| 0 | ||||||||||||||||||||||||
2051 | && input.at(pos + 1) == QLatin1Char('/')
| 0 | ||||||||||||||||||||||||
2052 | pos += 2; | - | ||||||||||||||||||||||||
2053 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2054 | } | - | ||||||||||||||||||||||||
2055 | ++pos; | - | ||||||||||||||||||||||||
2056 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2057 | return never executed: S;return S; never executed: return S; | 0 | ||||||||||||||||||||||||
2058 | } | - | ||||||||||||||||||||||||
2059 | - | |||||||||||||||||||||||||
2060 | void Scanner::scan(const QString &preprocessedInput, QVector<Symbol> *symbols) | - | ||||||||||||||||||||||||
2061 | { | - | ||||||||||||||||||||||||
2062 | QCssScanner_Generated scanner(preprocessedInput); | - | ||||||||||||||||||||||||
2063 | Symbol sym; | - | ||||||||||||||||||||||||
2064 | int tok = scanner.lex(); | - | ||||||||||||||||||||||||
2065 | while (tok != -1
| 0 | ||||||||||||||||||||||||
2066 | sym.token = static_cast<QCss::TokenType>(tok); | - | ||||||||||||||||||||||||
2067 | sym.text = scanner.input; | - | ||||||||||||||||||||||||
2068 | sym.start = scanner.lexemStart; | - | ||||||||||||||||||||||||
2069 | sym.len = scanner.lexemLength; | - | ||||||||||||||||||||||||
2070 | symbols->append(sym); | - | ||||||||||||||||||||||||
2071 | tok = scanner.lex(); | - | ||||||||||||||||||||||||
2072 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2073 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2074 | - | |||||||||||||||||||||||||
2075 | QString Symbol::lexem() const | - | ||||||||||||||||||||||||
2076 | { | - | ||||||||||||||||||||||||
2077 | QString result; | - | ||||||||||||||||||||||||
2078 | if (len > 0
| 0 | ||||||||||||||||||||||||
2079 | result.reserve(len); never executed: result.reserve(len); | 0 | ||||||||||||||||||||||||
2080 | for (int i = 0; i < len
| 0 | ||||||||||||||||||||||||
2081 | if (text.at(start + i) == QLatin1Char('\\')
| 0 | ||||||||||||||||||||||||
2082 | ++ never executed: i;++i; never executed: ++i; | 0 | ||||||||||||||||||||||||
2083 | result += text.at(start + i); | - | ||||||||||||||||||||||||
2084 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2085 | return never executed: result;return result; never executed: return result; | 0 | ||||||||||||||||||||||||
2086 | } | - | ||||||||||||||||||||||||
2087 | - | |||||||||||||||||||||||||
2088 | Parser::Parser(const QString &css, bool isFile) | - | ||||||||||||||||||||||||
2089 | { | - | ||||||||||||||||||||||||
2090 | init(css, isFile); | - | ||||||||||||||||||||||||
2091 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2092 | - | |||||||||||||||||||||||||
2093 | Parser::Parser() | - | ||||||||||||||||||||||||
2094 | { | - | ||||||||||||||||||||||||
2095 | index = 0; | - | ||||||||||||||||||||||||
2096 | errorIndex = -1; | - | ||||||||||||||||||||||||
2097 | hasEscapeSequences = false; | - | ||||||||||||||||||||||||
2098 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2099 | - | |||||||||||||||||||||||||
2100 | void Parser::init(const QString &css, bool isFile) | - | ||||||||||||||||||||||||
2101 | { | - | ||||||||||||||||||||||||
2102 | QString styleSheet = css; | - | ||||||||||||||||||||||||
2103 | if (isFile
| 0 | ||||||||||||||||||||||||
2104 | QFile file(css); | - | ||||||||||||||||||||||||
2105 | if (file.open(QFile::ReadOnly)
| 0 | ||||||||||||||||||||||||
2106 | sourcePath = QFileInfo(styleSheet).absolutePath() + QLatin1Char('/'); | - | ||||||||||||||||||||||||
2107 | QTextStream stream(&file); | - | ||||||||||||||||||||||||
2108 | styleSheet = stream.readAll(); | - | ||||||||||||||||||||||||
2109 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2110 | QMessageLogger(__FILE__, 2167, __PRETTY_FUNCTION__).warning() << "QCss::Parser - Failed to load file " << css; | - | ||||||||||||||||||||||||
2111 | styleSheet.clear(); | - | ||||||||||||||||||||||||
2112 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2113 | } else { | - | ||||||||||||||||||||||||
2114 | sourcePath.clear(); | - | ||||||||||||||||||||||||
2115 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2116 | - | |||||||||||||||||||||||||
2117 | hasEscapeSequences = false; | - | ||||||||||||||||||||||||
2118 | symbols.clear(); | - | ||||||||||||||||||||||||
2119 | symbols.reserve(8); | - | ||||||||||||||||||||||||
2120 | Scanner::scan(Scanner::preprocess(styleSheet, &hasEscapeSequences), &symbols); | - | ||||||||||||||||||||||||
2121 | index = 0; | - | ||||||||||||||||||||||||
2122 | errorIndex = -1; | - | ||||||||||||||||||||||||
2123 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2124 | - | |||||||||||||||||||||||||
2125 | bool Parser::parse(StyleSheet *styleSheet, Qt::CaseSensitivity nameCaseSensitivity) | - | ||||||||||||||||||||||||
2126 | { | - | ||||||||||||||||||||||||
2127 | if (testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("charset"))
| 0 | ||||||||||||||||||||||||
2128 | while (test(S)
never executed: end of block | 0 | ||||||||||||||||||||||||
2129 | if (!next(STRING)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2130 | if (!next(SEMICOLON)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2131 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2132 | - | |||||||||||||||||||||||||
2133 | while (test(S)
never executed: end of block | 0 | ||||||||||||||||||||||||
2134 | - | |||||||||||||||||||||||||
2135 | while (testImport()
| 0 | ||||||||||||||||||||||||
2136 | ImportRule rule; | - | ||||||||||||||||||||||||
2137 | if (!parseImport(&rule)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2138 | styleSheet->importRules.append(rule); | - | ||||||||||||||||||||||||
2139 | while (test(S)
never executed: end of block | 0 | ||||||||||||||||||||||||
2140 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2141 | - | |||||||||||||||||||||||||
2142 | do { | - | ||||||||||||||||||||||||
2143 | if (testMedia()
| 0 | ||||||||||||||||||||||||
2144 | MediaRule rule; | - | ||||||||||||||||||||||||
2145 | if (!parseMedia(&rule)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2146 | styleSheet->mediaRules.append(rule); | - | ||||||||||||||||||||||||
2147 | } never executed: else if (testPage()end of block
| 0 | ||||||||||||||||||||||||
2148 | PageRule rule; | - | ||||||||||||||||||||||||
2149 | if (!parsePage(&rule)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2150 | styleSheet->pageRules.append(rule); | - | ||||||||||||||||||||||||
2151 | } never executed: else if (testRuleset()end of block
| 0 | ||||||||||||||||||||||||
2152 | StyleRule rule; | - | ||||||||||||||||||||||||
2153 | if (!parseRuleset(&rule)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2154 | styleSheet->styleRules.append(rule); | - | ||||||||||||||||||||||||
2155 | } never executed: else if (test(ATKEYWORD_SYM)end of block
| 0 | ||||||||||||||||||||||||
2156 | if (!until(RBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2157 | } never executed: else if (hasNext()end of block
| 0 | ||||||||||||||||||||||||
2158 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2159 | } | - | ||||||||||||||||||||||||
2160 | while (test(S)
never executed: end of block | 0 | ||||||||||||||||||||||||
2161 | } never executed: while (hasNext()end of block
| 0 | ||||||||||||||||||||||||
2162 | styleSheet->buildIndexes(nameCaseSensitivity); | - | ||||||||||||||||||||||||
2163 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2164 | } | - | ||||||||||||||||||||||||
2165 | - | |||||||||||||||||||||||||
2166 | Symbol Parser::errorSymbol() | - | ||||||||||||||||||||||||
2167 | { | - | ||||||||||||||||||||||||
2168 | if (errorIndex == -1
never executed: Symbol();return Symbol(); never executed: return Symbol(); | 0 | ||||||||||||||||||||||||
2169 | return never executed: symbols.at(errorIndex);return symbols.at(errorIndex); never executed: return symbols.at(errorIndex); | 0 | ||||||||||||||||||||||||
2170 | } | - | ||||||||||||||||||||||||
2171 | - | |||||||||||||||||||||||||
2172 | static inline void removeOptionalQuotes(QString *str) | - | ||||||||||||||||||||||||
2173 | { | - | ||||||||||||||||||||||||
2174 | if (!str->startsWith(QLatin1Char('\''))
| 0 | ||||||||||||||||||||||||
2175 | && !str->startsWith(QLatin1Char('\"'))
| 0 | ||||||||||||||||||||||||
2176 | return; never executed: return; | 0 | ||||||||||||||||||||||||
2177 | str->remove(0, 1); | - | ||||||||||||||||||||||||
2178 | str->chop(1); | - | ||||||||||||||||||||||||
2179 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2180 | - | |||||||||||||||||||||||||
2181 | bool Parser::parseImport(ImportRule *importRule) | - | ||||||||||||||||||||||||
2182 | { | - | ||||||||||||||||||||||||
2183 | skipSpace(); | - | ||||||||||||||||||||||||
2184 | - | |||||||||||||||||||||||||
2185 | if (test(STRING)
| 0 | ||||||||||||||||||||||||
2186 | importRule->href = lexem(); | - | ||||||||||||||||||||||||
2187 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2188 | if (!testAndParseUri(&importRule->href)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2189 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2190 | removeOptionalQuotes(&importRule->href); | - | ||||||||||||||||||||||||
2191 | - | |||||||||||||||||||||||||
2192 | skipSpace(); | - | ||||||||||||||||||||||||
2193 | - | |||||||||||||||||||||||||
2194 | if (testMedium()
| 0 | ||||||||||||||||||||||||
2195 | if (!parseMedium(&importRule->media)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2196 | - | |||||||||||||||||||||||||
2197 | while (test(COMMA)
| 0 | ||||||||||||||||||||||||
2198 | skipSpace(); | - | ||||||||||||||||||||||||
2199 | if (!parseNextMedium(&importRule->media)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2200 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2201 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2202 | - | |||||||||||||||||||||||||
2203 | if (!next(SEMICOLON)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2204 | - | |||||||||||||||||||||||||
2205 | skipSpace(); | - | ||||||||||||||||||||||||
2206 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2207 | } | - | ||||||||||||||||||||||||
2208 | - | |||||||||||||||||||||||||
2209 | bool Parser::parseMedia(MediaRule *mediaRule) | - | ||||||||||||||||||||||||
2210 | { | - | ||||||||||||||||||||||||
2211 | do { | - | ||||||||||||||||||||||||
2212 | skipSpace(); | - | ||||||||||||||||||||||||
2213 | if (!parseNextMedium(&mediaRule->media)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2214 | } never executed: while (test(COMMA)end of block
| 0 | ||||||||||||||||||||||||
2215 | - | |||||||||||||||||||||||||
2216 | if (!next(LBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2217 | skipSpace(); | - | ||||||||||||||||||||||||
2218 | - | |||||||||||||||||||||||||
2219 | while (testRuleset()
| 0 | ||||||||||||||||||||||||
2220 | StyleRule rule; | - | ||||||||||||||||||||||||
2221 | if (!parseRuleset(&rule)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2222 | mediaRule->styleRules.append(rule); | - | ||||||||||||||||||||||||
2223 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2224 | - | |||||||||||||||||||||||||
2225 | if (!next(RBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2226 | skipSpace(); | - | ||||||||||||||||||||||||
2227 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2228 | } | - | ||||||||||||||||||||||||
2229 | - | |||||||||||||||||||||||||
2230 | bool Parser::parseMedium(QStringList *media) | - | ||||||||||||||||||||||||
2231 | { | - | ||||||||||||||||||||||||
2232 | media->append(lexem()); | - | ||||||||||||||||||||||||
2233 | skipSpace(); | - | ||||||||||||||||||||||||
2234 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2235 | } | - | ||||||||||||||||||||||||
2236 | - | |||||||||||||||||||||||||
2237 | bool Parser::parsePage(PageRule *pageRule) | - | ||||||||||||||||||||||||
2238 | { | - | ||||||||||||||||||||||||
2239 | skipSpace(); | - | ||||||||||||||||||||||||
2240 | - | |||||||||||||||||||||||||
2241 | if (testPseudoPage()
| 0 | ||||||||||||||||||||||||
2242 | if (!parsePseudoPage(&pageRule->selector)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2243 | - | |||||||||||||||||||||||||
2244 | skipSpace(); | - | ||||||||||||||||||||||||
2245 | if (!next(LBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2246 | - | |||||||||||||||||||||||||
2247 | do { | - | ||||||||||||||||||||||||
2248 | skipSpace(); | - | ||||||||||||||||||||||||
2249 | Declaration decl; | - | ||||||||||||||||||||||||
2250 | if (!parseNextDeclaration(&decl)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2251 | if (!decl.isEmpty()
| 0 | ||||||||||||||||||||||||
2252 | pageRule->declarations.append(decl); never executed: pageRule->declarations.append(decl); | 0 | ||||||||||||||||||||||||
2253 | } never executed: while (test(SEMICOLON)end of block
| 0 | ||||||||||||||||||||||||
2254 | - | |||||||||||||||||||||||||
2255 | if (!next(RBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2256 | skipSpace(); | - | ||||||||||||||||||||||||
2257 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2258 | } | - | ||||||||||||||||||||||||
2259 | - | |||||||||||||||||||||||||
2260 | bool Parser::parsePseudoPage(QString *selector) | - | ||||||||||||||||||||||||
2261 | { | - | ||||||||||||||||||||||||
2262 | if (!next(IDENT)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2263 | *selector = lexem(); | - | ||||||||||||||||||||||||
2264 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2265 | } | - | ||||||||||||||||||||||||
2266 | - | |||||||||||||||||||||||||
2267 | bool Parser::parseNextOperator(Value *value) | - | ||||||||||||||||||||||||
2268 | { | - | ||||||||||||||||||||||||
2269 | if (!hasNext()
never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2270 | switch (next()) { | - | ||||||||||||||||||||||||
2271 | case never executed: SLASH:case SLASH: never executed: value->type = Value::TermOperatorSlash; skipSpace(); break;case SLASH: never executed: break; | 0 | ||||||||||||||||||||||||
2272 | case never executed: COMMA:case COMMA: never executed: value->type = Value::TermOperatorComma; skipSpace(); break;case COMMA: never executed: break; | 0 | ||||||||||||||||||||||||
2273 | default never executed: :default: never executed: prev(); break;default: never executed: break; | 0 | ||||||||||||||||||||||||
2274 | } | - | ||||||||||||||||||||||||
2275 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2276 | } | - | ||||||||||||||||||||||||
2277 | - | |||||||||||||||||||||||||
2278 | bool Parser::parseCombinator(BasicSelector::Relation *relation) | - | ||||||||||||||||||||||||
2279 | { | - | ||||||||||||||||||||||||
2280 | *relation = BasicSelector::NoRelation; | - | ||||||||||||||||||||||||
2281 | if (lookup() == S
| 0 | ||||||||||||||||||||||||
2282 | *relation = BasicSelector::MatchNextSelectorIfAncestor; | - | ||||||||||||||||||||||||
2283 | skipSpace(); | - | ||||||||||||||||||||||||
2284 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2285 | prev(); | - | ||||||||||||||||||||||||
2286 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2287 | if (test(PLUS)
| 0 | ||||||||||||||||||||||||
2288 | *relation = BasicSelector::MatchNextSelectorIfPreceeds; | - | ||||||||||||||||||||||||
2289 | } never executed: else if (test(GREATER)end of block
| 0 | ||||||||||||||||||||||||
2290 | *relation = BasicSelector::MatchNextSelectorIfParent; | - | ||||||||||||||||||||||||
2291 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2292 | skipSpace(); | - | ||||||||||||||||||||||||
2293 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2294 | } | - | ||||||||||||||||||||||||
2295 | - | |||||||||||||||||||||||||
2296 | bool Parser::parseProperty(Declaration *decl) | - | ||||||||||||||||||||||||
2297 | { | - | ||||||||||||||||||||||||
2298 | decl->d->property = lexem(); | - | ||||||||||||||||||||||||
2299 | decl->d->propertyId = static_cast<Property>(findKnownValue(decl->d->property, properties, NumProperties)); | - | ||||||||||||||||||||||||
2300 | decl->d->inheritable = isInheritable(decl->d->propertyId); | - | ||||||||||||||||||||||||
2301 | skipSpace(); | - | ||||||||||||||||||||||||
2302 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2303 | } | - | ||||||||||||||||||||||||
2304 | - | |||||||||||||||||||||||||
2305 | bool Parser::parseRuleset(StyleRule *styleRule) | - | ||||||||||||||||||||||||
2306 | { | - | ||||||||||||||||||||||||
2307 | Selector sel; | - | ||||||||||||||||||||||||
2308 | if (!parseSelector(&sel)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2309 | styleRule->selectors.append(sel); | - | ||||||||||||||||||||||||
2310 | - | |||||||||||||||||||||||||
2311 | while (test(COMMA)
| 0 | ||||||||||||||||||||||||
2312 | skipSpace(); | - | ||||||||||||||||||||||||
2313 | Selector sel; | - | ||||||||||||||||||||||||
2314 | if (!parseNextSelector(&sel)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2315 | styleRule->selectors.append(sel); | - | ||||||||||||||||||||||||
2316 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2317 | - | |||||||||||||||||||||||||
2318 | skipSpace(); | - | ||||||||||||||||||||||||
2319 | if (!next(LBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2320 | const int declarationStart = index; | - | ||||||||||||||||||||||||
2321 | - | |||||||||||||||||||||||||
2322 | do { | - | ||||||||||||||||||||||||
2323 | skipSpace(); | - | ||||||||||||||||||||||||
2324 | Declaration decl; | - | ||||||||||||||||||||||||
2325 | const int rewind = index; | - | ||||||||||||||||||||||||
2326 | if (!parseNextDeclaration(&decl)
| 0 | ||||||||||||||||||||||||
2327 | index = rewind; | - | ||||||||||||||||||||||||
2328 | const bool foundSemicolon = until(SEMICOLON); | - | ||||||||||||||||||||||||
2329 | const int semicolonIndex = index; | - | ||||||||||||||||||||||||
2330 | - | |||||||||||||||||||||||||
2331 | index = declarationStart; | - | ||||||||||||||||||||||||
2332 | const bool foundRBrace = until(RBRACE); | - | ||||||||||||||||||||||||
2333 | - | |||||||||||||||||||||||||
2334 | if (foundSemicolon
| 0 | ||||||||||||||||||||||||
2335 | decl = Declaration(); | - | ||||||||||||||||||||||||
2336 | index = semicolonIndex - 1; | - | ||||||||||||||||||||||||
2337 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2338 | skipSpace(); | - | ||||||||||||||||||||||||
2339 | return never executed: foundRBrace;return foundRBrace; never executed: return foundRBrace; | 0 | ||||||||||||||||||||||||
2340 | } | - | ||||||||||||||||||||||||
2341 | } | - | ||||||||||||||||||||||||
2342 | if (!decl.isEmpty()
| 0 | ||||||||||||||||||||||||
2343 | styleRule->declarations.append(decl); never executed: styleRule->declarations.append(decl); | 0 | ||||||||||||||||||||||||
2344 | } never executed: while (test(SEMICOLON)end of block
| 0 | ||||||||||||||||||||||||
2345 | - | |||||||||||||||||||||||||
2346 | if (!next(RBRACE)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2347 | skipSpace(); | - | ||||||||||||||||||||||||
2348 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2349 | } | - | ||||||||||||||||||||||||
2350 | - | |||||||||||||||||||||||||
2351 | bool Parser::parseSelector(Selector *sel) | - | ||||||||||||||||||||||||
2352 | { | - | ||||||||||||||||||||||||
2353 | BasicSelector basicSel; | - | ||||||||||||||||||||||||
2354 | if (!parseSimpleSelector(&basicSel)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2355 | while (testCombinator()
| 0 | ||||||||||||||||||||||||
2356 | if (!parseCombinator(&basicSel.relationToNext)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2357 | - | |||||||||||||||||||||||||
2358 | if (!testSimpleSelector()
never executed: break; | 0 | ||||||||||||||||||||||||
2359 | sel->basicSelectors.append(basicSel); | - | ||||||||||||||||||||||||
2360 | - | |||||||||||||||||||||||||
2361 | basicSel = BasicSelector(); | - | ||||||||||||||||||||||||
2362 | if (!parseSimpleSelector(&basicSel)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2363 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2364 | sel->basicSelectors.append(basicSel); | - | ||||||||||||||||||||||||
2365 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2366 | } | - | ||||||||||||||||||||||||
2367 | - | |||||||||||||||||||||||||
2368 | bool Parser::parseSimpleSelector(BasicSelector *basicSel) | - | ||||||||||||||||||||||||
2369 | { | - | ||||||||||||||||||||||||
2370 | int minCount = 0; | - | ||||||||||||||||||||||||
2371 | if (lookupElementName()
| 0 | ||||||||||||||||||||||||
2372 | if (!parseElementName(&basicSel->elementName)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2373 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2374 | prev(); | - | ||||||||||||||||||||||||
2375 | minCount = 1; | - | ||||||||||||||||||||||||
2376 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2377 | bool onceMore; | - | ||||||||||||||||||||||||
2378 | int count = 0; | - | ||||||||||||||||||||||||
2379 | do { | - | ||||||||||||||||||||||||
2380 | onceMore = false; | - | ||||||||||||||||||||||||
2381 | if (test(HASH)
| 0 | ||||||||||||||||||||||||
2382 | QString theid = lexem(); | - | ||||||||||||||||||||||||
2383 | - | |||||||||||||||||||||||||
2384 | theid.remove(0, 1); | - | ||||||||||||||||||||||||
2385 | basicSel->ids.append(theid); | - | ||||||||||||||||||||||||
2386 | onceMore = true; | - | ||||||||||||||||||||||||
2387 | } never executed: else if (testClass()end of block
| 0 | ||||||||||||||||||||||||
2388 | onceMore = true; | - | ||||||||||||||||||||||||
2389 | AttributeSelector a; | - | ||||||||||||||||||||||||
2390 | a.name = QLatin1String("class"); | - | ||||||||||||||||||||||||
2391 | a.valueMatchCriterium = AttributeSelector::MatchContains; | - | ||||||||||||||||||||||||
2392 | if (!parseClass(&a.value)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2393 | basicSel->attributeSelectors.append(a); | - | ||||||||||||||||||||||||
2394 | } never executed: else if (testAttrib()end of block
| 0 | ||||||||||||||||||||||||
2395 | onceMore = true; | - | ||||||||||||||||||||||||
2396 | AttributeSelector a; | - | ||||||||||||||||||||||||
2397 | if (!parseAttrib(&a)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2398 | basicSel->attributeSelectors.append(a); | - | ||||||||||||||||||||||||
2399 | } never executed: else if (testPseudo()end of block
| 0 | ||||||||||||||||||||||||
2400 | onceMore = true; | - | ||||||||||||||||||||||||
2401 | Pseudo ps; | - | ||||||||||||||||||||||||
2402 | if (!parsePseudo(&ps)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2403 | basicSel->pseudos.append(ps); | - | ||||||||||||||||||||||||
2404 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2405 | if (onceMore
never executed: count;++count; never executed: ++count; | 0 | ||||||||||||||||||||||||
2406 | } never executed: while (onceMoreend of block
| 0 | ||||||||||||||||||||||||
2407 | return never executed: count >= minCount;return count >= minCount; never executed: return count >= minCount; | 0 | ||||||||||||||||||||||||
2408 | } | - | ||||||||||||||||||||||||
2409 | - | |||||||||||||||||||||||||
2410 | bool Parser::parseClass(QString *name) | - | ||||||||||||||||||||||||
2411 | { | - | ||||||||||||||||||||||||
2412 | if (!next(IDENT)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2413 | *name = lexem(); | - | ||||||||||||||||||||||||
2414 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2415 | } | - | ||||||||||||||||||||||||
2416 | - | |||||||||||||||||||||||||
2417 | bool Parser::parseElementName(QString *name) | - | ||||||||||||||||||||||||
2418 | { | - | ||||||||||||||||||||||||
2419 | switch (lookup()) { | - | ||||||||||||||||||||||||
2420 | case never executed: STAR:case STAR: never executed: name->clear(); break;case STAR: never executed: break; | 0 | ||||||||||||||||||||||||
2421 | case never executed: IDENT:case IDENT: never executed: *name = lexem(); break;case IDENT: never executed: break; | 0 | ||||||||||||||||||||||||
2422 | default never executed: :default: never executed: returndefault: never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2423 | } | - | ||||||||||||||||||||||||
2424 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2425 | } | - | ||||||||||||||||||||||||
2426 | - | |||||||||||||||||||||||||
2427 | bool Parser::parseAttrib(AttributeSelector *attr) | - | ||||||||||||||||||||||||
2428 | { | - | ||||||||||||||||||||||||
2429 | skipSpace(); | - | ||||||||||||||||||||||||
2430 | if (!next(IDENT)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2431 | attr->name = lexem(); | - | ||||||||||||||||||||||||
2432 | skipSpace(); | - | ||||||||||||||||||||||||
2433 | - | |||||||||||||||||||||||||
2434 | if (test(EQUAL)
| 0 | ||||||||||||||||||||||||
2435 | attr->valueMatchCriterium = AttributeSelector::MatchEqual; | - | ||||||||||||||||||||||||
2436 | } never executed: else if (test(INCLUDES)end of block
| 0 | ||||||||||||||||||||||||
2437 | attr->valueMatchCriterium = AttributeSelector::MatchContains; | - | ||||||||||||||||||||||||
2438 | } never executed: else if (test(DASHMATCH)end of block
| 0 | ||||||||||||||||||||||||
2439 | attr->valueMatchCriterium = AttributeSelector::MatchBeginsWith; | - | ||||||||||||||||||||||||
2440 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2441 | return never executed: next(RBRACKET);return next(RBRACKET); never executed: return next(RBRACKET); | 0 | ||||||||||||||||||||||||
2442 | } | - | ||||||||||||||||||||||||
2443 | - | |||||||||||||||||||||||||
2444 | skipSpace(); | - | ||||||||||||||||||||||||
2445 | - | |||||||||||||||||||||||||
2446 | if (!test(IDENT)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2447 | attr->value = unquotedLexem(); | - | ||||||||||||||||||||||||
2448 | - | |||||||||||||||||||||||||
2449 | skipSpace(); | - | ||||||||||||||||||||||||
2450 | return never executed: next(RBRACKET);return next(RBRACKET); never executed: return next(RBRACKET); | 0 | ||||||||||||||||||||||||
2451 | } | - | ||||||||||||||||||||||||
2452 | - | |||||||||||||||||||||||||
2453 | bool Parser::parsePseudo(Pseudo *pseudo) | - | ||||||||||||||||||||||||
2454 | { | - | ||||||||||||||||||||||||
2455 | (void)test(COLON); | - | ||||||||||||||||||||||||
2456 | pseudo->negated = test(EXCLAMATION_SYM); | - | ||||||||||||||||||||||||
2457 | if (test(IDENT)
| 0 | ||||||||||||||||||||||||
2458 | pseudo->name = lexem(); | - | ||||||||||||||||||||||||
2459 | pseudo->type = static_cast<quint64>(findKnownValue(pseudo->name, pseudos, NumPseudos)); | - | ||||||||||||||||||||||||
2460 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2461 | } | - | ||||||||||||||||||||||||
2462 | if (!next(FUNCTION)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2463 | pseudo->function = lexem(); | - | ||||||||||||||||||||||||
2464 | - | |||||||||||||||||||||||||
2465 | pseudo->function.chop(1); | - | ||||||||||||||||||||||||
2466 | skipSpace(); | - | ||||||||||||||||||||||||
2467 | if (!test(IDENT)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2468 | pseudo->name = lexem(); | - | ||||||||||||||||||||||||
2469 | skipSpace(); | - | ||||||||||||||||||||||||
2470 | return never executed: next(RPAREN);return next(RPAREN); never executed: return next(RPAREN); | 0 | ||||||||||||||||||||||||
2471 | } | - | ||||||||||||||||||||||||
2472 | - | |||||||||||||||||||||||||
2473 | bool Parser::parseNextDeclaration(Declaration *decl) | - | ||||||||||||||||||||||||
2474 | { | - | ||||||||||||||||||||||||
2475 | if (!testProperty()
| 0 | ||||||||||||||||||||||||
2476 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2477 | if (!parseProperty(decl)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2478 | if (!next(COLON)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2479 | skipSpace(); | - | ||||||||||||||||||||||||
2480 | if (!parseNextExpr(&decl->d->values)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2481 | if (testPrio()
| 0 | ||||||||||||||||||||||||
2482 | if (!parsePrio(decl)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2483 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2484 | } | - | ||||||||||||||||||||||||
2485 | - | |||||||||||||||||||||||||
2486 | bool Parser::testPrio() | - | ||||||||||||||||||||||||
2487 | { | - | ||||||||||||||||||||||||
2488 | const int rewind = index; | - | ||||||||||||||||||||||||
2489 | if (!test(EXCLAMATION_SYM)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2490 | skipSpace(); | - | ||||||||||||||||||||||||
2491 | if (!test(IDENT)
| 0 | ||||||||||||||||||||||||
2492 | index = rewind; | - | ||||||||||||||||||||||||
2493 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2494 | } | - | ||||||||||||||||||||||||
2495 | if (lexem().compare(QLatin1String("important"), Qt::CaseInsensitive) != 0
| 0 | ||||||||||||||||||||||||
2496 | index = rewind; | - | ||||||||||||||||||||||||
2497 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2498 | } | - | ||||||||||||||||||||||||
2499 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2500 | } | - | ||||||||||||||||||||||||
2501 | - | |||||||||||||||||||||||||
2502 | bool Parser::parsePrio(Declaration *declaration) | - | ||||||||||||||||||||||||
2503 | { | - | ||||||||||||||||||||||||
2504 | declaration->d->important = true; | - | ||||||||||||||||||||||||
2505 | skipSpace(); | - | ||||||||||||||||||||||||
2506 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2507 | } | - | ||||||||||||||||||||||||
2508 | - | |||||||||||||||||||||||||
2509 | bool Parser::parseExpr(QVector<Value> *values) | - | ||||||||||||||||||||||||
2510 | { | - | ||||||||||||||||||||||||
2511 | Value val; | - | ||||||||||||||||||||||||
2512 | if (!parseTerm(&val)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2513 | values->append(val); | - | ||||||||||||||||||||||||
2514 | bool onceMore; | - | ||||||||||||||||||||||||
2515 | do { | - | ||||||||||||||||||||||||
2516 | onceMore = false; | - | ||||||||||||||||||||||||
2517 | val = Value(); | - | ||||||||||||||||||||||||
2518 | if (!parseNextOperator(&val)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2519 | if (val.type != QCss::Value::Unknown
| 0 | ||||||||||||||||||||||||
2520 | values->append(val); never executed: values->append(val); | 0 | ||||||||||||||||||||||||
2521 | if (testTerm()
| 0 | ||||||||||||||||||||||||
2522 | onceMore = true; | - | ||||||||||||||||||||||||
2523 | val = Value(); | - | ||||||||||||||||||||||||
2524 | if (!parseTerm(&val)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2525 | values->append(val); | - | ||||||||||||||||||||||||
2526 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2527 | } never executed: while (onceMoreend of block
| 0 | ||||||||||||||||||||||||
2528 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2529 | } | - | ||||||||||||||||||||||||
2530 | - | |||||||||||||||||||||||||
2531 | bool Parser::testTerm() | - | ||||||||||||||||||||||||
2532 | { | - | ||||||||||||||||||||||||
2533 | return never executed: test(PLUS) || test(MINUS)return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2534 | || test(NUMBER) never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2535 | || test(PERCENTAGE) never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2536 | || test(LENGTH) never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2537 | || test(STRING) never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2538 | || test(IDENT) never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2539 | || testHexColor() never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2540 | || testFunction(); never executed: return test(PLUS) || test(MINUS) || test(NUMBER) || test(PERCENTAGE) || test(LENGTH) || test(STRING) || test(IDENT) || testHexColor() || testFunction(); | 0 | ||||||||||||||||||||||||
2541 | } | - | ||||||||||||||||||||||||
2542 | - | |||||||||||||||||||||||||
2543 | bool Parser::parseTerm(Value *value) | - | ||||||||||||||||||||||||
2544 | { | - | ||||||||||||||||||||||||
2545 | QString str = lexem(); | - | ||||||||||||||||||||||||
2546 | bool haveUnary = false; | - | ||||||||||||||||||||||||
2547 | if (lookup() == PLUS
| 0 | ||||||||||||||||||||||||
2548 | haveUnary = true; | - | ||||||||||||||||||||||||
2549 | if (!hasNext()
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2550 | next(); | - | ||||||||||||||||||||||||
2551 | str += lexem(); | - | ||||||||||||||||||||||||
2552 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2553 | - | |||||||||||||||||||||||||
2554 | value->variant = str; | - | ||||||||||||||||||||||||
2555 | value->type = QCss::Value::String; | - | ||||||||||||||||||||||||
2556 | switch (lookup()) { | - | ||||||||||||||||||||||||
2557 | case never executed: NUMBER:case NUMBER: never executed: case NUMBER: | 0 | ||||||||||||||||||||||||
2558 | value->type = Value::Number; | - | ||||||||||||||||||||||||
2559 | value->variant.convert(QVariant::Double); | - | ||||||||||||||||||||||||
2560 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2561 | case never executed: PERCENTAGE:case PERCENTAGE: never executed: case PERCENTAGE: | 0 | ||||||||||||||||||||||||
2562 | value->type = Value::Percentage; | - | ||||||||||||||||||||||||
2563 | str.chop(1); | - | ||||||||||||||||||||||||
2564 | value->variant = str; | - | ||||||||||||||||||||||||
2565 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2566 | case never executed: LENGTH:case LENGTH: never executed: case LENGTH: | 0 | ||||||||||||||||||||||||
2567 | value->type = Value::Length; | - | ||||||||||||||||||||||||
2568 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2569 | - | |||||||||||||||||||||||||
2570 | case never executed: STRING:case STRING: never executed: case STRING: | 0 | ||||||||||||||||||||||||
2571 | if (haveUnary
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2572 | value->type = Value::String; | - | ||||||||||||||||||||||||
2573 | str.chop(1); | - | ||||||||||||||||||||||||
2574 | str.remove(0, 1); | - | ||||||||||||||||||||||||
2575 | value->variant = str; | - | ||||||||||||||||||||||||
2576 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2577 | case never executed: IDENT:case IDENT: never executed: {case IDENT: | 0 | ||||||||||||||||||||||||
2578 | if (haveUnary
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2579 | value->type = Value::Identifier; | - | ||||||||||||||||||||||||
2580 | const int theid = findKnownValue(str, values, NumKnownValues); | - | ||||||||||||||||||||||||
2581 | if (theid != 0
| 0 | ||||||||||||||||||||||||
2582 | value->type = Value::KnownIdentifier; | - | ||||||||||||||||||||||||
2583 | value->variant = theid; | - | ||||||||||||||||||||||||
2584 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2585 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2586 | } | - | ||||||||||||||||||||||||
2587 | default never executed: :default: never executed: {default: | 0 | ||||||||||||||||||||||||
2588 | if (haveUnary
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2589 | prev(); | - | ||||||||||||||||||||||||
2590 | if (testHexColor()
| 0 | ||||||||||||||||||||||||
2591 | QColor col; | - | ||||||||||||||||||||||||
2592 | if (!parseHexColor(&col)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2593 | value->type = Value::Color; | - | ||||||||||||||||||||||||
2594 | value->variant = col; | - | ||||||||||||||||||||||||
2595 | } never executed: else if (testFunction()end of block
| 0 | ||||||||||||||||||||||||
2596 | QString name, args; | - | ||||||||||||||||||||||||
2597 | if (!parseFunction(&name, &args)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2598 | if (name == QLatin1String("url")
| 0 | ||||||||||||||||||||||||
2599 | value->type = Value::Uri; | - | ||||||||||||||||||||||||
2600 | removeOptionalQuotes(&args); | - | ||||||||||||||||||||||||
2601 | if (QFileInfo(args).isRelative()
| 0 | ||||||||||||||||||||||||
2602 | args.prepend(sourcePath); | - | ||||||||||||||||||||||||
2603 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2604 | value->variant = args; | - | ||||||||||||||||||||||||
2605 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
2606 | value->type = Value::Function; | - | ||||||||||||||||||||||||
2607 | value->variant = QStringList() << name << args; | - | ||||||||||||||||||||||||
2608 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2609 | } else { | - | ||||||||||||||||||||||||
2610 | return never executed: recordError();return recordError(); never executed: return recordError(); | 0 | ||||||||||||||||||||||||
2611 | } | - | ||||||||||||||||||||||||
2612 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2613 | } | - | ||||||||||||||||||||||||
2614 | } | - | ||||||||||||||||||||||||
2615 | skipSpace(); | - | ||||||||||||||||||||||||
2616 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2617 | } | - | ||||||||||||||||||||||||
2618 | - | |||||||||||||||||||||||||
2619 | bool Parser::parseFunction(QString *name, QString *args) | - | ||||||||||||||||||||||||
2620 | { | - | ||||||||||||||||||||||||
2621 | *name = lexem(); | - | ||||||||||||||||||||||||
2622 | name->chop(1); | - | ||||||||||||||||||||||||
2623 | skipSpace(); | - | ||||||||||||||||||||||||
2624 | const int start = index; | - | ||||||||||||||||||||||||
2625 | if (!until(RPAREN)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2626 | for (int i = start; i < index - 1
| 0 | ||||||||||||||||||||||||
2627 | args->append(symbols.at(i).lexem()); never executed: args->append(symbols.at(i).lexem()); | 0 | ||||||||||||||||||||||||
2628 | - | |||||||||||||||||||||||||
2629 | - | |||||||||||||||||||||||||
2630 | - | |||||||||||||||||||||||||
2631 | - | |||||||||||||||||||||||||
2632 | skipSpace(); | - | ||||||||||||||||||||||||
2633 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2634 | } | - | ||||||||||||||||||||||||
2635 | - | |||||||||||||||||||||||||
2636 | bool Parser::parseHexColor(QColor *col) | - | ||||||||||||||||||||||||
2637 | { | - | ||||||||||||||||||||||||
2638 | col->setNamedColor(lexem()); | - | ||||||||||||||||||||||||
2639 | if (!col->isValid()
| 0 | ||||||||||||||||||||||||
2640 | QMessageLogger(__FILE__, 2697, __PRETTY_FUNCTION__).warning("QCssParser::parseHexColor: Unknown color name '%s'",lexem().toLatin1().constData()); | - | ||||||||||||||||||||||||
2641 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2642 | } | - | ||||||||||||||||||||||||
2643 | skipSpace(); | - | ||||||||||||||||||||||||
2644 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2645 | } | - | ||||||||||||||||||||||||
2646 | - | |||||||||||||||||||||||||
2647 | bool Parser::testAndParseUri(QString *uri) | - | ||||||||||||||||||||||||
2648 | { | - | ||||||||||||||||||||||||
2649 | const int rewind = index; | - | ||||||||||||||||||||||||
2650 | if (!testFunction()
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2651 | - | |||||||||||||||||||||||||
2652 | QString name, args; | - | ||||||||||||||||||||||||
2653 | if (!parseFunction(&name, &args)
| 0 | ||||||||||||||||||||||||
2654 | index = rewind; | - | ||||||||||||||||||||||||
2655 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2656 | } | - | ||||||||||||||||||||||||
2657 | if (name.toLower() != QLatin1String("url")
| 0 | ||||||||||||||||||||||||
2658 | index = rewind; | - | ||||||||||||||||||||||||
2659 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2660 | } | - | ||||||||||||||||||||||||
2661 | *uri = args; | - | ||||||||||||||||||||||||
2662 | removeOptionalQuotes(uri); | - | ||||||||||||||||||||||||
2663 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2664 | } | - | ||||||||||||||||||||||||
2665 | - | |||||||||||||||||||||||||
2666 | bool Parser::testSimpleSelector() | - | ||||||||||||||||||||||||
2667 | { | - | ||||||||||||||||||||||||
2668 | return never executed: testElementName()return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); never executed: return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); | 0 | ||||||||||||||||||||||||
2669 | || (test(HASH)) never executed: return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); | 0 | ||||||||||||||||||||||||
2670 | || testClass() never executed: return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); | 0 | ||||||||||||||||||||||||
2671 | || testAttrib() never executed: return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); | 0 | ||||||||||||||||||||||||
2672 | || testPseudo(); never executed: return testElementName() || (test(HASH)) || testClass() || testAttrib() || testPseudo(); | 0 | ||||||||||||||||||||||||
2673 | } | - | ||||||||||||||||||||||||
2674 | - | |||||||||||||||||||||||||
2675 | bool Parser::next(QCss::TokenType t) | - | ||||||||||||||||||||||||
2676 | { | - | ||||||||||||||||||||||||
2677 | if (hasNext()
| 0 | ||||||||||||||||||||||||
2678 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2679 | return never executed: recordError();return recordError(); never executed: return recordError(); | 0 | ||||||||||||||||||||||||
2680 | } | - | ||||||||||||||||||||||||
2681 | - | |||||||||||||||||||||||||
2682 | bool Parser::test(QCss::TokenType t) | - | ||||||||||||||||||||||||
2683 | { | - | ||||||||||||||||||||||||
2684 | if (index >= symbols.count()
| 0 | ||||||||||||||||||||||||
2685 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2686 | if (symbols.at(index).token == t
| 0 | ||||||||||||||||||||||||
2687 | ++index; | - | ||||||||||||||||||||||||
2688 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2689 | } | - | ||||||||||||||||||||||||
2690 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2691 | } | - | ||||||||||||||||||||||||
2692 | - | |||||||||||||||||||||||||
2693 | QString Parser::unquotedLexem() const | - | ||||||||||||||||||||||||
2694 | { | - | ||||||||||||||||||||||||
2695 | QString s = lexem(); | - | ||||||||||||||||||||||||
2696 | if (lookup() == STRING
| 0 | ||||||||||||||||||||||||
2697 | s.chop(1); | - | ||||||||||||||||||||||||
2698 | s.remove(0, 1); | - | ||||||||||||||||||||||||
2699 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2700 | return never executed: s;return s; never executed: return s; | 0 | ||||||||||||||||||||||||
2701 | } | - | ||||||||||||||||||||||||
2702 | - | |||||||||||||||||||||||||
2703 | QString Parser::lexemUntil(QCss::TokenType t) | - | ||||||||||||||||||||||||
2704 | { | - | ||||||||||||||||||||||||
2705 | QString lexem; | - | ||||||||||||||||||||||||
2706 | while (hasNext()
| 0 | ||||||||||||||||||||||||
2707 | lexem += symbol().lexem(); never executed: lexem += symbol().lexem(); | 0 | ||||||||||||||||||||||||
2708 | return never executed: lexem;return lexem; never executed: return lexem; | 0 | ||||||||||||||||||||||||
2709 | } | - | ||||||||||||||||||||||||
2710 | - | |||||||||||||||||||||||||
2711 | bool Parser::until(QCss::TokenType target, QCss::TokenType target2) | - | ||||||||||||||||||||||||
2712 | { | - | ||||||||||||||||||||||||
2713 | int braceCount = 0; | - | ||||||||||||||||||||||||
2714 | int brackCount = 0; | - | ||||||||||||||||||||||||
2715 | int parenCount = 0; | - | ||||||||||||||||||||||||
2716 | if (index
| 0 | ||||||||||||||||||||||||
2717 | switch(symbols.at(index-1).token) { | - | ||||||||||||||||||||||||
2718 | case never executed: LBRACE:case LBRACE: never executed: ++braceCount; break;case LBRACE: never executed: break; | 0 | ||||||||||||||||||||||||
2719 | case never executed: LBRACKET:case LBRACKET: never executed: ++brackCount; break;case LBRACKET: never executed: break; | 0 | ||||||||||||||||||||||||
2720 | case never executed: FUNCTION:case FUNCTION: never executed: case FUNCTION: | 0 | ||||||||||||||||||||||||
2721 | case never executed: LPAREN:case LPAREN: never executed: ++parenCount; break;case LPAREN: never executed: break; | 0 | ||||||||||||||||||||||||
2722 | default never executed: :default: never executed: ;default: | 0 | ||||||||||||||||||||||||
2723 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2724 | } | - | ||||||||||||||||||||||||
2725 | while (index < symbols.size()
| 0 | ||||||||||||||||||||||||
2726 | QCss::TokenType t = symbols.at(index++).token; | - | ||||||||||||||||||||||||
2727 | switch (t) { | - | ||||||||||||||||||||||||
2728 | case never executed: LBRACE:case LBRACE: never executed: ++braceCount; break;case LBRACE: never executed: break; | 0 | ||||||||||||||||||||||||
2729 | case never executed: RBRACE:case RBRACE: never executed: --braceCount; break;case RBRACE: never executed: break; | 0 | ||||||||||||||||||||||||
2730 | case never executed: LBRACKET:case LBRACKET: never executed: ++brackCount; break;case LBRACKET: never executed: break; | 0 | ||||||||||||||||||||||||
2731 | case never executed: RBRACKET:case RBRACKET: never executed: --brackCount; break;case RBRACKET: never executed: break; | 0 | ||||||||||||||||||||||||
2732 | case never executed: FUNCTION:case FUNCTION: never executed: case FUNCTION: | 0 | ||||||||||||||||||||||||
2733 | case never executed: LPAREN:case LPAREN: never executed: ++parenCount; break;case LPAREN: never executed: break; | 0 | ||||||||||||||||||||||||
2734 | case never executed: RPAREN:case RPAREN: never executed: --parenCount; break;case RPAREN: never executed: break; | 0 | ||||||||||||||||||||||||
2735 | default never executed: :default: never executed: break;default: never executed: break; | 0 | ||||||||||||||||||||||||
2736 | } | - | ||||||||||||||||||||||||
2737 | if ((t == target
| 0 | ||||||||||||||||||||||||
2738 | && braceCount <= 0
| 0 | ||||||||||||||||||||||||
2739 | && brackCount <= 0
| 0 | ||||||||||||||||||||||||
2740 | && parenCount <= 0
| 0 | ||||||||||||||||||||||||
2741 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2742 | - | |||||||||||||||||||||||||
2743 | if (braceCount < 0
| 0 | ||||||||||||||||||||||||
2744 | --index; | - | ||||||||||||||||||||||||
2745 | break; never executed: break; | 0 | ||||||||||||||||||||||||
2746 | } | - | ||||||||||||||||||||||||
2747 | } never executed: end of block | 0 | ||||||||||||||||||||||||
2748 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2749 | } | - | ||||||||||||||||||||||||
2750 | - | |||||||||||||||||||||||||
2751 | bool Parser::testTokenAndEndsWith(QCss::TokenType t, QLatin1String str) | - | ||||||||||||||||||||||||
2752 | { | - | ||||||||||||||||||||||||
2753 | if (!test(t)
never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2754 | if (!lexem().endsWith(str, Qt::CaseInsensitive)
| 0 | ||||||||||||||||||||||||
2755 | prev(); | - | ||||||||||||||||||||||||
2756 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||
2757 | } | - | ||||||||||||||||||||||||
2758 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||||||||
2759 | } | - | ||||||||||||||||||||||||
2760 | - | |||||||||||||||||||||||||
2761 | - | |||||||||||||||||||||||||
Switch to Source code | Preprocessed file |