1/*
2 * Copyright (C) 2011, 2013 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 "WebKitCSSFilterValue.h"
28
29#if ENABLE(CSS_FILTERS)
30
31#include "CSSValueList.h"
32#include <wtf/PassRefPtr.h>
33#include <wtf/text/WTFString.h>
34
35namespace WebCore {
36
37WebKitCSSFilterValue::WebKitCSSFilterValue(FilterOperationType operationType)
38    : CSSValueList(WebKitCSSFilterClass, typeUsesSpaceSeparator(operationType) ? SpaceSeparator : CommaSeparator)
39    , m_type(operationType)
40{
41}
42
43bool WebKitCSSFilterValue::typeUsesSpaceSeparator(FilterOperationType operationType)
44{
45#if ENABLE(CSS_SHADERS)
46    return operationType != CustomFilterOperation;
47#else
48    UNUSED_PARAM(operationType);
49    return true;
50#endif
51}
52
53String WebKitCSSFilterValue::customCssText() const
54{
55    const char* result = "";
56    switch (m_type) {
57    case UnknownFilterOperation:
58        result = "";
59        break;
60    case ReferenceFilterOperation:
61        result = "url(";
62        break;
63    case GrayscaleFilterOperation:
64        result = "grayscale(";
65        break;
66    case SepiaFilterOperation:
67        result = "sepia(";
68        break;
69    case SaturateFilterOperation:
70        result = "saturate(";
71        break;
72    case HueRotateFilterOperation:
73        result = "hue-rotate(";
74        break;
75    case InvertFilterOperation:
76        result = "invert(";
77        break;
78    case OpacityFilterOperation:
79        result = "opacity(";
80        break;
81    case BrightnessFilterOperation:
82        result = "brightness(";
83        break;
84    case ContrastFilterOperation:
85        result = "contrast(";
86        break;
87    case BlurFilterOperation:
88        result = "blur(";
89        break;
90    case DropShadowFilterOperation:
91        result = "drop-shadow(";
92        break;
93#if ENABLE(CSS_SHADERS)
94    case CustomFilterOperation:
95        result = "custom(";
96        break;
97#endif
98    }
99
100    return result + CSSValueList::customCssText() + ')';
101}
102
103WebKitCSSFilterValue::WebKitCSSFilterValue(const WebKitCSSFilterValue& cloneFrom)
104    : CSSValueList(cloneFrom)
105    , m_type(cloneFrom.m_type)
106{
107}
108
109PassRefPtr<WebKitCSSFilterValue> WebKitCSSFilterValue::cloneForCSSOM() const
110{
111    return adoptRef(new WebKitCSSFilterValue(*this));
112}
113
114bool WebKitCSSFilterValue::equals(const WebKitCSSFilterValue& other) const
115{
116    return m_type == other.m_type && CSSValueList::equals(other);
117}
118
119}
120
121#endif // ENABLE(CSS_FILTERS)
122