OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) | 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
4 * reserved. | 4 * reserved. |
5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
11 * | 11 * |
12 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Library General Public License for more details. | 15 * Library General Public License for more details. |
16 * | 16 * |
17 * You should have received a copy of the GNU Library General Public License | 17 * You should have received a copy of the GNU Library General Public License |
18 * along with this library; see the file COPYING.LIB. If not, write to | 18 * along with this library; see the file COPYING.LIB. If not, write to |
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 * Boston, MA 02110-1301, USA. | 20 * Boston, MA 02110-1301, USA. |
21 * | 21 * |
22 */ | 22 */ |
23 | 23 |
24 #include "core/style/ComputedStyle.h" | 24 #include "core/style/ComputedStyle.h" |
25 | 25 |
| 26 #include "base/numerics/saturated_arithmetic.h" |
26 #include "core/animation/css/CSSAnimationData.h" | 27 #include "core/animation/css/CSSAnimationData.h" |
27 #include "core/animation/css/CSSTransitionData.h" | 28 #include "core/animation/css/CSSTransitionData.h" |
28 #include "core/css/CSSPaintValue.h" | 29 #include "core/css/CSSPaintValue.h" |
29 #include "core/css/CSSPrimitiveValue.h" | 30 #include "core/css/CSSPrimitiveValue.h" |
30 #include "core/css/CSSPropertyEquality.h" | 31 #include "core/css/CSSPropertyEquality.h" |
31 #include "core/css/resolver/StyleResolver.h" | 32 #include "core/css/resolver/StyleResolver.h" |
32 #include "core/layout/LayoutTheme.h" | 33 #include "core/layout/LayoutTheme.h" |
33 #include "core/layout/TextAutosizer.h" | 34 #include "core/layout/TextAutosizer.h" |
34 #include "core/style/AppliedTextDecoration.h" | 35 #include "core/style/AppliedTextDecoration.h" |
35 #include "core/style/BorderEdge.h" | 36 #include "core/style/BorderEdge.h" |
(...skipping 11 matching lines...) Expand all Loading... |
47 #include "platform/RuntimeEnabledFeatures.h" | 48 #include "platform/RuntimeEnabledFeatures.h" |
48 #include "platform/fonts/Font.h" | 49 #include "platform/fonts/Font.h" |
49 #include "platform/fonts/FontSelector.h" | 50 #include "platform/fonts/FontSelector.h" |
50 #include "platform/geometry/FloatRoundedRect.h" | 51 #include "platform/geometry/FloatRoundedRect.h" |
51 #include "platform/graphics/GraphicsContext.h" | 52 #include "platform/graphics/GraphicsContext.h" |
52 #include "platform/transforms/RotateTransformOperation.h" | 53 #include "platform/transforms/RotateTransformOperation.h" |
53 #include "platform/transforms/ScaleTransformOperation.h" | 54 #include "platform/transforms/ScaleTransformOperation.h" |
54 #include "platform/transforms/TranslateTransformOperation.h" | 55 #include "platform/transforms/TranslateTransformOperation.h" |
55 #include "wtf/MathExtras.h" | 56 #include "wtf/MathExtras.h" |
56 #include "wtf/PtrUtil.h" | 57 #include "wtf/PtrUtil.h" |
57 #include "wtf/SaturatedArithmetic.h" | |
58 #include "wtf/SizeAssertions.h" | 58 #include "wtf/SizeAssertions.h" |
59 #include <algorithm> | 59 #include <algorithm> |
60 #include <memory> | 60 #include <memory> |
61 | 61 |
62 namespace blink { | 62 namespace blink { |
63 | 63 |
64 struct SameSizeAsBorderValue { | 64 struct SameSizeAsBorderValue { |
65 RGBA32 m_color; | 65 RGBA32 m_color; |
66 unsigned m_width; | 66 unsigned m_width; |
67 }; | 67 }; |
(...skipping 2168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2236 m_rareNonInheritedData.access()->m_transform.access()->m_motion.m_path = path; | 2236 m_rareNonInheritedData.access()->m_transform.access()->m_motion.m_path = path; |
2237 } | 2237 } |
2238 | 2238 |
2239 int ComputedStyle::outlineOutsetExtent() const { | 2239 int ComputedStyle::outlineOutsetExtent() const { |
2240 if (!hasOutline()) | 2240 if (!hasOutline()) |
2241 return 0; | 2241 return 0; |
2242 if (outlineStyleIsAuto()) { | 2242 if (outlineStyleIsAuto()) { |
2243 return GraphicsContext::focusRingOutsetExtent( | 2243 return GraphicsContext::focusRingOutsetExtent( |
2244 outlineOffset(), std::ceil(getOutlineStrokeWidthForFocusRing())); | 2244 outlineOffset(), std::ceil(getOutlineStrokeWidthForFocusRing())); |
2245 } | 2245 } |
2246 return std::max(0, saturatedAddition(outlineWidth(), outlineOffset())); | 2246 return std::max(0, base::SaturatedAddition(outlineWidth(), outlineOffset())); |
2247 } | 2247 } |
2248 | 2248 |
2249 float ComputedStyle::getOutlineStrokeWidthForFocusRing() const { | 2249 float ComputedStyle::getOutlineStrokeWidthForFocusRing() const { |
2250 #if OS(MACOSX) | 2250 #if OS(MACOSX) |
2251 return outlineWidth(); | 2251 return outlineWidth(); |
2252 #else | 2252 #else |
2253 // Draw an outline with thickness in proportion to the zoom level, but never | 2253 // Draw an outline with thickness in proportion to the zoom level, but never |
2254 // less than 1 pixel so that it remains visible. | 2254 // less than 1 pixel so that it remains visible. |
2255 return std::max(effectiveZoom(), 1.f); | 2255 return std::max(effectiveZoom(), 1.f); |
2256 #endif | 2256 #endif |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2416 if (value < 0) | 2416 if (value < 0) |
2417 fvalue -= 0.5f; | 2417 fvalue -= 0.5f; |
2418 else | 2418 else |
2419 fvalue += 0.5f; | 2419 fvalue += 0.5f; |
2420 } | 2420 } |
2421 | 2421 |
2422 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 2422 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
2423 } | 2423 } |
2424 | 2424 |
2425 } // namespace blink | 2425 } // namespace blink |
OLD | NEW |