OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
12 * | 12 * |
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 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. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 */ | 24 */ |
25 | 25 |
26 #include "platform/graphics/Color.h" | 26 #include "platform/graphics/Color.h" |
27 | 27 |
28 #include "platform/Decimal.h" | 28 #include "platform/Decimal.h" |
| 29 #include "platform/RuntimeEnabledFeatures.h" |
29 #include "wtf/Assertions.h" | 30 #include "wtf/Assertions.h" |
30 #include "wtf/HexNumber.h" | 31 #include "wtf/HexNumber.h" |
31 #include "wtf/MathExtras.h" | 32 #include "wtf/MathExtras.h" |
32 #include "wtf/dtoa.h" | 33 #include "wtf/dtoa.h" |
33 #include "wtf/text/StringBuilder.h" | 34 #include "wtf/text/StringBuilder.h" |
34 | 35 |
35 namespace blink { | 36 namespace blink { |
36 | 37 |
37 // VS 2015 and above allow these definitions and in this case require them | 38 // VS 2015 and above allow these definitions and in this case require them |
38 #if !COMPILER(MSVC) || _MSC_VER >= 1900 | 39 #if !COMPILER(MSVC) || _MSC_VER >= 1900 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 int b = static_cast<int>(nextafter(256, 0) * (colors * (1 - y))); | 115 int b = static_cast<int>(nextafter(256, 0) * (colors * (1 - y))); |
115 return makeRGBA(r, g, b, static_cast<float>(nextafter(256, 0) * a)); | 116 return makeRGBA(r, g, b, static_cast<float>(nextafter(256, 0) * a)); |
116 } | 117 } |
117 | 118 |
118 // originally moved here from the CSS parser | 119 // originally moved here from the CSS parser |
119 template <typename CharacterType> | 120 template <typename CharacterType> |
120 static inline bool parseHexColorInternal(const CharacterType* name, unsigned len
gth, RGBA32& rgb) | 121 static inline bool parseHexColorInternal(const CharacterType* name, unsigned len
gth, RGBA32& rgb) |
121 { | 122 { |
122 if (length != 3 && length != 4 && length != 6 && length != 8) | 123 if (length != 3 && length != 4 && length != 6 && length != 8) |
123 return false; | 124 return false; |
| 125 if ((length == 8 || length == 4) && !RuntimeEnabledFeatures::cssHexAlphaColo
rEnabled()) |
| 126 return false; |
124 unsigned value = 0; | 127 unsigned value = 0; |
125 for (unsigned i = 0; i < length; ++i) { | 128 for (unsigned i = 0; i < length; ++i) { |
126 if (!isASCIIHexDigit(name[i])) | 129 if (!isASCIIHexDigit(name[i])) |
127 return false; | 130 return false; |
128 value <<= 4; | 131 value <<= 4; |
129 value |= toASCIIHexValue(name[i]); | 132 value |= toASCIIHexValue(name[i]); |
130 } | 133 } |
131 if (length == 6) { | 134 if (length == 6) { |
132 rgb = 0xFF000000 | value; | 135 rgb = 0xFF000000 | value; |
133 return true; | 136 return true; |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 (color.green() * alpha + 254) / 255, | 465 (color.green() * alpha + 254) / 255, |
463 (color.blue() * alpha + 254) / 255, | 466 (color.blue() * alpha + 254) / 255, |
464 alpha).rgb(); | 467 alpha).rgb(); |
465 } else | 468 } else |
466 pixelColor = color.rgb(); | 469 pixelColor = color.rgb(); |
467 | 470 |
468 return pixelColor; | 471 return pixelColor; |
469 } | 472 } |
470 | 473 |
471 } // namespace blink | 474 } // namespace blink |
OLD | NEW |