Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Side by Side Diff: Source/core/html/forms/StepRange.cpp

Issue 334593005: Removing using declarations that import names in the C++ Standard library. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 * 18 *
19 */ 19 */
20 20
21 #include "config.h" 21 #include "config.h"
22 #include "core/html/forms/StepRange.h" 22 #include "core/html/forms/StepRange.h"
23 23
24 #include "HTMLNames.h" 24 #include "HTMLNames.h"
25 #include "core/html/parser/HTMLParserIdioms.h" 25 #include "core/html/parser/HTMLParserIdioms.h"
26 #include "wtf/MathExtras.h" 26 #include "wtf/MathExtras.h"
27 #include "wtf/text/WTFString.h" 27 #include "wtf/text/WTFString.h"
28 #include <float.h> 28 #include <float.h>
29 29
30 using namespace std;
31
32 namespace WebCore { 30 namespace WebCore {
33 31
34 using namespace HTMLNames; 32 using namespace HTMLNames;
35 33
36 StepRange::StepRange() 34 StepRange::StepRange()
37 : m_maximum(100) 35 : m_maximum(100)
38 , m_minimum(0) 36 , m_minimum(0)
39 , m_step(1) 37 , m_step(1)
40 , m_stepBase(0) 38 , m_stepBase(0)
41 , m_hasStep(false) 39 , m_hasStep(false)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 { 75 {
78 DEFINE_STATIC_LOCAL(const Decimal, tenPowerOf21, (Decimal::Positive, 21, 1)) ; 76 DEFINE_STATIC_LOCAL(const Decimal, tenPowerOf21, (Decimal::Positive, 21, 1)) ;
79 if (newValue >= tenPowerOf21) 77 if (newValue >= tenPowerOf21)
80 return newValue; 78 return newValue;
81 79
82 return stepMismatch(currentValue) ? newValue : roundByStep(newValue, m_stepB ase); 80 return stepMismatch(currentValue) ? newValue : roundByStep(newValue, m_stepB ase);
83 } 81 }
84 82
85 Decimal StepRange::clampValue(const Decimal& value) const 83 Decimal StepRange::clampValue(const Decimal& value) const
86 { 84 {
87 const Decimal inRangeValue = max(m_minimum, min(value, m_maximum)); 85 const Decimal inRangeValue = std::max(m_minimum, std::min(value, m_maximum)) ;
88 if (!m_hasStep) 86 if (!m_hasStep)
89 return inRangeValue; 87 return inRangeValue;
90 // Rounds inRangeValue to stepBase + N * step. 88 // Rounds inRangeValue to stepBase + N * step.
91 const Decimal roundedValue = roundByStep(inRangeValue, m_stepBase); 89 const Decimal roundedValue = roundByStep(inRangeValue, m_stepBase);
92 const Decimal clampedValue = roundedValue > m_maximum ? roundedValue - m_ste p : (roundedValue < m_minimum ? roundedValue + m_step : roundedValue); 90 const Decimal clampedValue = roundedValue > m_maximum ? roundedValue - m_ste p : (roundedValue < m_minimum ? roundedValue + m_step : roundedValue);
93 ASSERT(clampedValue >= m_minimum); 91 ASSERT(clampedValue >= m_minimum);
94 ASSERT(clampedValue <= m_maximum); 92 ASSERT(clampedValue <= m_maximum);
95 return clampedValue; 93 return clampedValue;
96 } 94 }
97 95
(...skipping 16 matching lines...) Expand all
114 Decimal step = parseToDecimalForNumberType(stepString); 112 Decimal step = parseToDecimalForNumberType(stepString);
115 if (!step.isFinite() || step <= 0) 113 if (!step.isFinite() || step <= 0)
116 return stepDescription.defaultValue(); 114 return stepDescription.defaultValue();
117 115
118 switch (stepDescription.stepValueShouldBe) { 116 switch (stepDescription.stepValueShouldBe) {
119 case StepValueShouldBeReal: 117 case StepValueShouldBeReal:
120 step *= stepDescription.stepScaleFactor; 118 step *= stepDescription.stepScaleFactor;
121 break; 119 break;
122 case ParsedStepValueShouldBeInteger: 120 case ParsedStepValueShouldBeInteger:
123 // For date, month, and week, the parsed value should be an integer for some types. 121 // For date, month, and week, the parsed value should be an integer for some types.
124 step = max(step.round(), Decimal(1)); 122 step = std::max(step.round(), Decimal(1));
125 step *= stepDescription.stepScaleFactor; 123 step *= stepDescription.stepScaleFactor;
126 break; 124 break;
127 case ScaledStepValueShouldBeInteger: 125 case ScaledStepValueShouldBeInteger:
128 // For datetime, datetime-local, time, the result should be an integer. 126 // For datetime, datetime-local, time, the result should be an integer.
129 step *= stepDescription.stepScaleFactor; 127 step *= stepDescription.stepScaleFactor;
130 step = max(step.round(), Decimal(1)); 128 step = std::max(step.round(), Decimal(1));
131 break; 129 break;
132 default: 130 default:
133 ASSERT_NOT_REACHED(); 131 ASSERT_NOT_REACHED();
134 } 132 }
135 133
136 ASSERT(step > 0); 134 ASSERT(step > 0);
137 return step; 135 return step;
138 } 136 }
139 137
140 Decimal StepRange::roundByStep(const Decimal& value, const Decimal& base) const 138 Decimal StepRange::roundByStep(const Decimal& value, const Decimal& base) const
(...skipping 20 matching lines...) Expand all
161 // ... that number subtracted from the step base is not an integral multiple 159 // ... that number subtracted from the step base is not an integral multiple
162 // of the allowed value step, the element is suffering from a step mismatch. 160 // of the allowed value step, the element is suffering from a step mismatch.
163 const Decimal remainder = (value - m_step * (value / m_step).round()).abs(); 161 const Decimal remainder = (value - m_step * (value / m_step).round()).abs();
164 // Accepts errors in lower fractional part which IEEE 754 single-precision 162 // Accepts errors in lower fractional part which IEEE 754 single-precision
165 // can't represent. 163 // can't represent.
166 const Decimal computedAcceptableError = acceptableError(); 164 const Decimal computedAcceptableError = acceptableError();
167 return computedAcceptableError < remainder && remainder < (m_step - computed AcceptableError); 165 return computedAcceptableError < remainder && remainder < (m_step - computed AcceptableError);
168 } 166 }
169 167
170 } // namespace WebCore 168 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/forms/RangeInputType.cpp ('k') | Source/core/html/shadow/SliderThumbElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698