Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / CSSTransformValue.cpp
1 /*
2  * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "core/css/CSSTransformValue.h"
28
29 #include "wtf/text/WTFString.h"
30
31 namespace WebCore {
32
33 // These names must be kept in sync with TransformOperationType.
34 const char* const transformNamePrefixes[] = {
35     0,
36     "translate(",
37     "translateX(",
38     "translateY(",
39     "rotate(",
40     "scale(",
41     "scaleX(",
42     "scaleY(",
43     "skew(",
44     "skewX(",
45     "skewY(",
46     "matrix(",
47     "translateZ(",
48     "translate3d(",
49     "rotateX(",
50     "rotateY(",
51     "rotateZ(",
52     "rotate3d(",
53     "scaleZ(",
54     "scale3d(",
55     "perspective(",
56     "matrix3d("
57 };
58
59 static inline String transformValueToCssString(CSSTransformValue::TransformOperationType operation, const String& value)
60 {
61     if (operation != CSSTransformValue::UnknownTransformOperation) {
62         ASSERT_WITH_SECURITY_IMPLICATION(static_cast<size_t>(operation) < WTF_ARRAY_LENGTH(transformNamePrefixes));
63         return transformNamePrefixes[operation] + value + ")";
64     }
65     return String();
66 }
67
68 CSSTransformValue::CSSTransformValue(TransformOperationType op)
69     : CSSValueList(CSSTransformClass, CommaSeparator)
70     , m_type(op)
71 {
72 }
73
74 String CSSTransformValue::customCSSText() const
75 {
76     return transformValueToCssString(m_type, CSSValueList::customCSSText());
77 }
78
79 CSSTransformValue::CSSTransformValue(const CSSTransformValue& cloneFrom)
80     : CSSValueList(cloneFrom)
81     , m_type(cloneFrom.m_type)
82 {
83 }
84
85 PassRefPtrWillBeRawPtr<CSSTransformValue> CSSTransformValue::cloneForCSSOM() const
86 {
87     return adoptRefWillBeNoop(new CSSTransformValue(*this));
88 }
89
90 }