1/*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
4 * Copyright (C) 2013 Intel Corporation. All rights reserved.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 */
21
22#include "config.h"
23#include "StylePropertyShorthand.h"
24#include "StylePropertyShorthandFunctions.h"
25
26namespace WebCore {
27
28StylePropertyShorthand borderAbridgedShorthand()
29{
30 static const CSSPropertyID borderAbridgedProperties[] = { CSSPropertyBorderWidth, CSSPropertyBorderStyle, CSSPropertyBorderColor };
31 static const StylePropertyShorthand propertiesForInitialization[] = { borderWidthShorthand(), borderStyleShorthand(), borderColorShorthand() };
32 return StylePropertyShorthand(CSSPropertyBorder, borderAbridgedProperties, propertiesForInitialization);
33}
34
35StylePropertyShorthand animationShorthandForParsing()
36{
37 // Animation-name must come last, so that keywords for other properties in the shorthand
38 // preferentially match those properties.
39 static const CSSPropertyID animationPropertiesForParsing[] = {
40 CSSPropertyAnimationDuration,
41 CSSPropertyAnimationTimingFunction,
42 CSSPropertyAnimationDelay,
43 CSSPropertyAnimationIterationCount,
44 CSSPropertyAnimationDirection,
45 CSSPropertyAnimationFillMode,
46 CSSPropertyAnimationPlayState,
47 CSSPropertyAnimationName
48 };
49
50 return StylePropertyShorthand(CSSPropertyAnimation, animationPropertiesForParsing);
51}
52
53StylePropertyShorthand transitionShorthandForParsing()
54{
55 // Similar to animations, we have property after timing-function and delay after
56 // duration.
57 static const CSSPropertyID transitionProperties[] = {
58 CSSPropertyTransitionDuration, CSSPropertyTransitionTimingFunction,
59 CSSPropertyTransitionDelay, CSSPropertyTransitionProperty};
60 return StylePropertyShorthand(CSSPropertyTransition, transitionProperties);
61}
62
63bool isShorthandCSSProperty(CSSPropertyID id)
64{
65 return shorthandForProperty(id).length();
66}
67
68unsigned indexOfShorthandForLonghand(CSSPropertyID shorthandID, const StylePropertyShorthandVector& shorthands)
69{
70 for (unsigned i = 0, size = shorthands.size(); i < size; ++i) {
71 if (shorthands[i].id() == shorthandID)
72 return i;
73 }
74 ASSERT_NOT_REACHED();
75 return 0;
76}
77
78} // namespace WebCore
79