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

Side by Side Diff: Source/core/css/parser/SizesCalcParser.cpp

Issue 633643003: Enable float source size (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed merge issue Created 6 years, 2 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/css/parser/SizesCalcParser.h" 6 #include "core/css/parser/SizesCalcParser.h"
7 7
8 #include "core/css/MediaValues.h" 8 #include "core/css/MediaValues.h"
9 #include "core/css/parser/MediaQueryToken.h" 9 #include "core/css/parser/MediaQueryToken.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 SizesCalcParser::SizesCalcParser(MediaQueryTokenIterator start, MediaQueryTokenI terator end, PassRefPtr<MediaValues> mediaValues) 13 SizesCalcParser::SizesCalcParser(MediaQueryTokenIterator start, MediaQueryTokenI terator end, PassRefPtr<MediaValues> mediaValues)
14 : m_mediaValues(mediaValues) 14 : m_mediaValues(mediaValues)
15 , m_viewportDependant(false) 15 , m_viewportDependant(false)
16 , m_result(0) 16 , m_result(0)
17 { 17 {
18 m_isValid = calcToReversePolishNotation(start, end) && calculate(); 18 m_isValid = calcToReversePolishNotation(start, end) && calculate();
19 } 19 }
20 20
21 unsigned SizesCalcParser::result() const 21 float SizesCalcParser::result() const
22 { 22 {
23 ASSERT(m_isValid); 23 ASSERT(m_isValid);
24 return m_result; 24 return m_result;
25 } 25 }
26 26
27 static bool operatorPriority(UChar cc, bool& highPriority) 27 static bool operatorPriority(UChar cc, bool& highPriority)
28 { 28 {
29 if (cc == '+' || cc == '-') 29 if (cc == '+' || cc == '-')
30 highPriority = false; 30 highPriority = false;
31 else if (cc == '*' || cc == '/') 31 else if (cc == '*' || cc == '/')
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 Vector<SizesCalcValue> stack; 205 Vector<SizesCalcValue> stack;
206 for (Vector<SizesCalcValue>::iterator it = m_valueList.begin(); it != m_valu eList.end(); ++it) { 206 for (Vector<SizesCalcValue>::iterator it = m_valueList.begin(); it != m_valu eList.end(); ++it) {
207 if (it->operation == 0) { 207 if (it->operation == 0) {
208 stack.append(*it); 208 stack.append(*it);
209 } else { 209 } else {
210 if (!operateOnStack(stack, it->operation)) 210 if (!operateOnStack(stack, it->operation))
211 return false; 211 return false;
212 } 212 }
213 } 213 }
214 if (stack.size() == 1 && stack.last().isLength) { 214 if (stack.size() == 1 && stack.last().isLength) {
215 m_result = clampTo<unsigned>(stack.last().value); 215 m_result = std::max(clampTo<float>(stack.last().value), (float)0.0);
216 return true; 216 return true;
217 } 217 }
218 return false; 218 return false;
219 } 219 }
220 220
221 } // namespace blink 221 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/parser/SizesCalcParser.h ('k') | Source/core/css/parser/SizesCalcParserTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698