d0c051ee647612cfa2f626b8fefbc907ecaba942
[WebKit.git] / Source / WebCore / html / canvas / WebMetalEnums.cpp
1 /*
2  * Copyright (C) 2017 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 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 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 "WebMetalEnums.h"
28
29 #if ENABLE(WEBMETAL)
30
31 #include "GPULegacyEnums.h"
32 #include <wtf/text/WTFString.h>
33
34 namespace WebCore {
35
36 Optional<WebMetalCompareFunction> toWebMetalCompareFunction(const String& name)
37 {
38     if (equalLettersIgnoringASCIICase(name, "never"))
39         return WebMetalCompareFunction::Never;
40     if (equalLettersIgnoringASCIICase(name, "less"))
41         return WebMetalCompareFunction::Less;
42     if (equalLettersIgnoringASCIICase(name, "equal"))
43         return WebMetalCompareFunction::Equal;
44     if (equalLettersIgnoringASCIICase(name, "lessequal"))
45         return WebMetalCompareFunction::Lessequal;
46     if (equalLettersIgnoringASCIICase(name, "greater"))
47         return WebMetalCompareFunction::Greater;
48     if (equalLettersIgnoringASCIICase(name, "notequal"))
49         return WebMetalCompareFunction::Notequal;
50     if (equalLettersIgnoringASCIICase(name, "greaterequal"))
51         return WebMetalCompareFunction::Greaterequal;
52     if (equalLettersIgnoringASCIICase(name, "always"))
53         return WebMetalCompareFunction::Always;
54
55     ASSERT_NOT_REACHED();
56     return WTF::nullopt;
57 }
58
59 String web3DCompareFunctionName(WebMetalCompareFunction value)
60 {
61     if (value == WebMetalCompareFunction::Never)
62         return "never"_s;
63     if (value == WebMetalCompareFunction::Less)
64         return "less"_s;
65     if (value == WebMetalCompareFunction::Equal)
66         return "equal"_s;
67     if (value == WebMetalCompareFunction::Lessequal)
68         return "lessequal"_s;
69     if (value == WebMetalCompareFunction::Greater)
70         return "greater"_s;
71     if (value == WebMetalCompareFunction::Notequal)
72         return "notequal"_s;
73     if (value == WebMetalCompareFunction::Greaterequal)
74         return "greaterequal"_s;
75     if (value == WebMetalCompareFunction::Always)
76         return "always"_s;
77     
78     ASSERT_NOT_REACHED();
79     return emptyString();
80 }
81
82 GPULegacyCompareFunction toGPULegacyCompareFunction(const WebMetalCompareFunction value)
83 {
84     if (value == WebMetalCompareFunction::Never)
85         return GPULegacyCompareFunction::Never;
86     if (value == WebMetalCompareFunction::Less)
87         return GPULegacyCompareFunction::Less;
88     if (value == WebMetalCompareFunction::Equal)
89         return GPULegacyCompareFunction::Equal;
90     if (value == WebMetalCompareFunction::Lessequal)
91         return GPULegacyCompareFunction::LessEqual;
92     if (value == WebMetalCompareFunction::Greater)
93         return GPULegacyCompareFunction::Greater;
94     if (value == WebMetalCompareFunction::Notequal)
95         return GPULegacyCompareFunction::NotEqual;
96     if (value == WebMetalCompareFunction::Greaterequal)
97         return GPULegacyCompareFunction::GreaterEqual;
98     if (value == WebMetalCompareFunction::Always)
99         return GPULegacyCompareFunction::Always;
100     
101     ASSERT_NOT_REACHED();
102     return GPULegacyCompareFunction::Never;
103 }
104
105 } // namespace WebCore
106
107 #endif