summaryrefslogtreecommitdiffstats
path: root/layout/generic/nsHTMLCanvasFrame.cpp
diff options
context:
space:
mode:
authorAndy <webmaster@RealityRipple.com>2020-07-31 13:01:18 -0700
committerMoonchild <moonchild@palemoon.org>2020-08-07 21:27:29 +0000
commit3266e0976ff055aefa49b664966229bbb89d1009 (patch)
tree41603b23ec1667a191fe0714d72a2d2649d77125 /layout/generic/nsHTMLCanvasFrame.cpp
parent4433519ae8b7e1cc14e217c3e20d8bca3f9cf2f2 (diff)
downloadUXP-3266e0976ff055aefa49b664966229bbb89d1009.tar
UXP-3266e0976ff055aefa49b664966229bbb89d1009.tar.gz
UXP-3266e0976ff055aefa49b664966229bbb89d1009.tar.lz
UXP-3266e0976ff055aefa49b664966229bbb89d1009.tar.xz
UXP-3266e0976ff055aefa49b664966229bbb89d1009.zip
Issue #1619 - Convert Intrinsic Ratio to Float
https://bugzilla.mozilla.org/show_bug.cgi?id=1547792 Aspect Ratio handling simplified by using floating point integers: - Multiplication of value (or inverse value) to a known side for Scaling - No unequal equal values such as "4/3" vs "8/6" vs "20/15" - Truly "Empty" aspect ratios, even if one dimension is not 0
Diffstat (limited to 'layout/generic/nsHTMLCanvasFrame.cpp')
-rw-r--r--layout/generic/nsHTMLCanvasFrame.cpp30
1 files changed, 10 insertions, 20 deletions
diff --git a/layout/generic/nsHTMLCanvasFrame.cpp b/layout/generic/nsHTMLCanvasFrame.cpp
index f86ec1136..032b95e5b 100644
--- a/layout/generic/nsHTMLCanvasFrame.cpp
+++ b/layout/generic/nsHTMLCanvasFrame.cpp
@@ -44,21 +44,6 @@ IntrinsicSizeFromCanvasSize(const nsIntSize& aCanvasSizeInPx)
return intrinsicSize;
}
-/* Helper for our nsIFrame::GetIntrinsicRatio() impl. Takes the result of
- * "GetCanvasSize()" as a parameter, which may help avoid redundant
- * indirect calls to GetCanvasSize().
- *
- * @param aCanvasSizeInPx The canvas's size in CSS pixels, as returned
- * by GetCanvasSize().
- * @return The canvas's intrinsic ratio, as a nsSize.
- */
-static nsSize
-IntrinsicRatioFromCanvasSize(const nsIntSize& aCanvasSizeInPx)
-{
- return nsSize(nsPresContext::CSSPixelsToAppUnits(aCanvasSizeInPx.width),
- nsPresContext::CSSPixelsToAppUnits(aCanvasSizeInPx.height));
-}
-
class nsDisplayCanvas : public nsDisplayItem {
public:
nsDisplayCanvas(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame)
@@ -92,7 +77,7 @@ public:
// Need intrinsic size & ratio, for ComputeObjectDestRect:
nsIntSize canvasSize = f->GetCanvasSize();
IntrinsicSize intrinsicSize = IntrinsicSizeFromCanvasSize(canvasSize);
- nsSize intrinsicRatio = IntrinsicRatioFromCanvasSize(canvasSize);
+ AspectRatio intrinsicRatio = AspectRatio::FromSize(canvasSize);
const nsRect destRect =
nsLayoutUtils::ComputeObjectDestRect(constraintRect,
@@ -211,10 +196,15 @@ nsHTMLCanvasFrame::GetIntrinsicSize()
return IntrinsicSizeFromCanvasSize(GetCanvasSize());
}
-/* virtual */ nsSize
+/* virtual */ AspectRatio
nsHTMLCanvasFrame::GetIntrinsicRatio()
{
- return IntrinsicRatioFromCanvasSize(GetCanvasSize());
+/*
+ if (StyleDisplay()->IsContainSize()) {
+ return AspectRatio();
+ }
+ */
+ return AspectRatio::FromSize(GetCanvasSize());
}
/* virtual */
@@ -234,7 +224,7 @@ nsHTMLCanvasFrame::ComputeSize(nsRenderingContext *aRenderingContext,
intrinsicSize.width.SetCoordValue(nsPresContext::CSSPixelsToAppUnits(size.width));
intrinsicSize.height.SetCoordValue(nsPresContext::CSSPixelsToAppUnits(size.height));
- nsSize intrinsicRatio = GetIntrinsicRatio(); // won't actually be used
+ AspectRatio intrinsicRatio = GetIntrinsicRatio();
return ComputeSizeWithIntrinsicDimensions(aRenderingContext, aWM,
intrinsicSize, intrinsicRatio,
@@ -340,7 +330,7 @@ nsHTMLCanvasFrame::BuildLayer(nsDisplayListBuilder* aBuilder,
return nullptr;
IntrinsicSize intrinsicSize = IntrinsicSizeFromCanvasSize(canvasSizeInPx);
- nsSize intrinsicRatio = IntrinsicRatioFromCanvasSize(canvasSizeInPx);
+ AspectRatio intrinsicRatio = AspectRatio::FromSize(canvasSizeInPx);
nsRect dest =
nsLayoutUtils::ComputeObjectDestRect(area, intrinsicSize, intrinsicRatio,