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

Side by Side Diff: Source/WebCore/platform/FractionalLayoutUnit.h

Issue 10908295: Merge 127933 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1229/
Patch Set: Created 8 years, 3 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) 2012, Google Inc. All rights reserved. 2 * Copyright (c) 2012, Google 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 FractionalLayoutUnit m; 175 FractionalLayoutUnit m;
176 m.m_value = std::numeric_limits<int>::max(); 176 m.m_value = std::numeric_limits<int>::max();
177 return m; 177 return m;
178 } 178 }
179 static const FractionalLayoutUnit min() 179 static const FractionalLayoutUnit min()
180 { 180 {
181 FractionalLayoutUnit m; 181 FractionalLayoutUnit m;
182 m.m_value = std::numeric_limits<int>::min(); 182 m.m_value = std::numeric_limits<int>::min();
183 return m; 183 return m;
184 } 184 }
185
186 // Versions of max/min that are slightly smaller/larger than max/min() to al low for roinding without overflowing.
187 static const FractionalLayoutUnit nearlyMax()
188 {
189 FractionalLayoutUnit m;
190 m.m_value = std::numeric_limits<int>::max() - kFixedPointDenominator / 2 ;
191 return m;
192 }
193 static const FractionalLayoutUnit nearlyMin()
194 {
195 FractionalLayoutUnit m;
196 m.m_value = std::numeric_limits<int>::min() + kFixedPointDenominator / 2 ;
197 return m;
198 }
199
185 static FractionalLayoutUnit clamp(double value) 200 static FractionalLayoutUnit clamp(double value)
186 { 201 {
187 return clampTo<FractionalLayoutUnit>(value, FractionalLayoutUnit::min(), FractionalLayoutUnit::max()); 202 return clampTo<FractionalLayoutUnit>(value, FractionalLayoutUnit::min(), FractionalLayoutUnit::max());
188 } 203 }
189 204
190 private: 205 private:
191 static bool isInBounds(int value) 206 static bool isInBounds(int value)
192 { 207 {
193 return ::abs(value) <= std::numeric_limits<int>::max() / kFixedPointDeno minator; 208 return ::abs(value) <= std::numeric_limits<int>::max() / kFixedPointDeno minator;
194 } 209 }
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 } 693 }
679 694
680 inline float& operator/=(float& a, const FractionalLayoutUnit& b) 695 inline float& operator/=(float& a, const FractionalLayoutUnit& b)
681 { 696 {
682 a = a / b; 697 a = a / b;
683 return a; 698 return a;
684 } 699 }
685 700
686 inline int snapSizeToPixel(FractionalLayoutUnit size, FractionalLayoutUnit locat ion) 701 inline int snapSizeToPixel(FractionalLayoutUnit size, FractionalLayoutUnit locat ion)
687 { 702 {
688 return (location + size).round() - location.round(); 703 FractionalLayoutUnit fraction = location - location.floor();
704 return (fraction + size).round() - fraction.round();
689 } 705 }
690 706
691 #if PLATFORM(QT) 707 #if PLATFORM(QT)
692 inline QDataStream& operator<<(QDataStream& stream, const FractionalLayoutUnit& value) 708 inline QDataStream& operator<<(QDataStream& stream, const FractionalLayoutUnit& value)
693 { 709 {
694 if (kFixedPointDenominator == 1) 710 if (kFixedPointDenominator == 1)
695 stream << value.rawValue(); 711 stream << value.rawValue();
696 else 712 else
697 stream << QString::fromLatin1("%1").arg(value.toFloat(), 0, 'f', 2); 713 stream << QString::fromLatin1("%1").arg(value.toFloat(), 0, 'f', 2);
698 714
699 return stream; 715 return stream;
700 } 716 }
701 717
702 inline QDataStream& operator>>(QDataStream& stream, FractionalLayoutUnit& value) 718 inline QDataStream& operator>>(QDataStream& stream, FractionalLayoutUnit& value)
703 { 719 {
704 float v; 720 float v;
705 stream >> v; 721 stream >> v;
706 value = v; 722 value = v;
707 return stream; 723 return stream;
708 } 724 }
709 #endif 725 #endif
710 726
711 } // namespace WebCore 727 } // namespace WebCore
712 728
713 #endif // FractionalLayoutUnit_h 729 #endif // FractionalLayoutUnit_h
OLDNEW
« no previous file with comments | « Source/WebCore/css/CSSPrimitiveValue.cpp ('k') | Source/WebCore/platform/graphics/FractionalLayoutRect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698