summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/LengthFunctions.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/css/LengthFunctions.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/css/LengthFunctions.cpp')
-rw-r--r--Source/WebCore/css/LengthFunctions.cpp128
1 files changed, 20 insertions, 108 deletions
diff --git a/Source/WebCore/css/LengthFunctions.cpp b/Source/WebCore/css/LengthFunctions.cpp
index adba10081..68fffdeb9 100644
--- a/Source/WebCore/css/LengthFunctions.cpp
+++ b/Source/WebCore/css/LengthFunctions.cpp
@@ -24,57 +24,27 @@
#include "config.h"
#include "LengthFunctions.h"
-#include "LayoutUnit.h"
-#include "Length.h"
-#include "RenderView.h"
+#include "FloatSize.h"
+#include "LayoutSize.h"
+#include "LengthSize.h"
namespace WebCore {
-int minimumIntValueForLength(const Length& length, LayoutUnit maximumValue, RenderView* renderView, bool roundPercentages)
+int intValueForLength(const Length& length, LayoutUnit maximumValue)
{
- return static_cast<int>(minimumValueForLength(length, maximumValue, renderView, roundPercentages));
+ return static_cast<int>(valueForLength(length, maximumValue));
}
-int intValueForLength(const Length& length, LayoutUnit maximumValue, RenderView* renderView, bool roundPercentages)
-{
- return static_cast<int>(valueForLength(length, maximumValue, renderView, roundPercentages));
-}
-
-LayoutUnit minimumValueForLength(const Length& length, LayoutUnit maximumValue, RenderView* renderView, bool roundPercentages)
+LayoutUnit valueForLength(const Length& length, LayoutUnit maximumValue)
{
switch (length.type()) {
case Fixed:
- return length.value();
case Percent:
- if (roundPercentages)
- return static_cast<LayoutUnit>(round(maximumValue * length.percent() / 100.0f));
- // Don't remove the extra cast to float. It is needed for rounding on 32-bit Intel machines that use the FPU stack.
- return static_cast<LayoutUnit>(static_cast<float>(maximumValue * length.percent() / 100.0f));
case Calculated:
- return length.nonNanCalculatedValue(maximumValue);
- case ViewportPercentageWidth:
- if (renderView)
- return static_cast<LayoutUnit>(renderView->viewportSize().width() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageHeight:
- if (renderView)
- return static_cast<LayoutUnit>(renderView->viewportSize().height() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageMin:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<LayoutUnit>(std::min(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
- case ViewportPercentageMax:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<LayoutUnit>(std::max(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
+ return minimumValueForLength(length, maximumValue);
case FillAvailable:
case Auto:
- return 0;
+ return maximumValue;
case Relative:
case Intrinsic:
case MinIntrinsic:
@@ -89,67 +59,24 @@ LayoutUnit minimumValueForLength(const Length& length, LayoutUnit maximumValue,
return 0;
}
-LayoutUnit valueForLength(const Length& length, LayoutUnit maximumValue, RenderView* renderView, bool roundPercentages)
+LayoutSize sizeForLengthSize(const LengthSize& length, const LayoutSize& maximumValue)
{
- switch (length.type()) {
- case Fixed:
- case Percent:
- case Calculated:
- case ViewportPercentageWidth:
- case ViewportPercentageHeight:
- case ViewportPercentageMin:
- case ViewportPercentageMax:
- return minimumValueForLength(length, maximumValue, renderView, roundPercentages);
- case FillAvailable:
- case Auto:
- return maximumValue;
- case Relative:
- case Intrinsic:
- case MinIntrinsic:
- case MinContent:
- case MaxContent:
- case FitContent:
- case Undefined:
- ASSERT_NOT_REACHED();
- return 0;
- }
- ASSERT_NOT_REACHED();
- return 0;
+ return { valueForLength(length.width, maximumValue.width()), valueForLength(length.height, maximumValue.height()) };
}
// FIXME: when subpixel layout is supported this copy of floatValueForLength() can be removed. See bug 71143.
-float floatValueForLength(const Length& length, LayoutUnit maximumValue, RenderView* renderView)
+float floatValueForLength(const Length& length, LayoutUnit maximumValue)
{
switch (length.type()) {
case Fixed:
- return length.getFloatValue();
+ return length.value();
case Percent:
return static_cast<float>(maximumValue * length.percent() / 100.0f);
case FillAvailable:
case Auto:
return static_cast<float>(maximumValue);
case Calculated:
- return length.nonNanCalculatedValue(maximumValue);
- case ViewportPercentageWidth:
- if (renderView)
- return static_cast<int>(renderView->viewportSize().width() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageHeight:
- if (renderView)
- return static_cast<int>(renderView->viewportSize().height() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageMin:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<int>(std::min(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
- case ViewportPercentageMax:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<int>(std::max(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
+ return length.nonNanCalculatedValue(maximumValue);
case Relative:
case Intrinsic:
case MinIntrinsic:
@@ -164,11 +91,11 @@ float floatValueForLength(const Length& length, LayoutUnit maximumValue, RenderV
return 0;
}
-float floatValueForLength(const Length& length, float maximumValue, RenderView* renderView)
+float floatValueForLength(const Length& length, float maximumValue)
{
switch (length.type()) {
case Fixed:
- return length.getFloatValue();
+ return length.value();
case Percent:
return static_cast<float>(maximumValue * length.percent() / 100.0f);
case FillAvailable:
@@ -176,26 +103,6 @@ float floatValueForLength(const Length& length, float maximumValue, RenderView*
return static_cast<float>(maximumValue);
case Calculated:
return length.nonNanCalculatedValue(maximumValue);
- case ViewportPercentageWidth:
- if (renderView)
- return static_cast<int>(renderView->viewportSize().width() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageHeight:
- if (renderView)
- return static_cast<int>(renderView->viewportSize().height() * length.viewportPercentageLength() / 100.0f);
- return 0;
- case ViewportPercentageMin:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<int>(std::min(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
- case ViewportPercentageMax:
- if (renderView) {
- IntSize viewportSize = renderView->viewportSize();
- return static_cast<int>(std::max(viewportSize.width(), viewportSize.height()) * length.viewportPercentageLength() / 100.0f);
- }
- return 0;
case Relative:
case Intrinsic:
case MinIntrinsic:
@@ -210,4 +117,9 @@ float floatValueForLength(const Length& length, float maximumValue, RenderView*
return 0;
}
+FloatSize floatSizeForLengthSize(const LengthSize& lengthSize, const FloatSize& boxSize)
+{
+ return { floatValueForLength(lengthSize.width, boxSize.width()), floatValueForLength(lengthSize.height, boxSize.height()) };
+}
+
} // namespace WebCore