summaryrefslogtreecommitdiffstats
path: root/layout/generic/nsVideoFrame.cpp
diff options
context:
space:
mode:
authorAndy <webmaster@RealityRipple.com>2020-07-31 13:01:18 -0700
committerAndy <webmaster@RealityRipple.com>2020-07-31 13:01:18 -0700
commit232f987cf45aad65d20e79d283f14c72771c9bc8 (patch)
tree1a794fa80b38b0248439085c8ce76b6dfce1cb3a /layout/generic/nsVideoFrame.cpp
parent091749192cc7595a0013850fb450a5c1b6dde20b (diff)
downloadUXP-232f987cf45aad65d20e79d283f14c72771c9bc8.tar
UXP-232f987cf45aad65d20e79d283f14c72771c9bc8.tar.gz
UXP-232f987cf45aad65d20e79d283f14c72771c9bc8.tar.lz
UXP-232f987cf45aad65d20e79d283f14c72771c9bc8.tar.xz
UXP-232f987cf45aad65d20e79d283f14c72771c9bc8.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/nsVideoFrame.cpp')
-rw-r--r--layout/generic/nsVideoFrame.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/layout/generic/nsVideoFrame.cpp b/layout/generic/nsVideoFrame.cpp
index cea209cb5..6bd6395a3 100644
--- a/layout/generic/nsVideoFrame.cpp
+++ b/layout/generic/nsVideoFrame.cpp
@@ -217,12 +217,10 @@ nsVideoFrame::BuildLayer(nsDisplayListBuilder* aBuilder,
// Convert video size from pixel units into app units, to get an aspect-ratio
// (which has to be represented as a nsSize) and an IntrinsicSize that we
// can pass to ComputeObjectRenderRect.
- nsSize aspectRatio(nsPresContext::CSSPixelsToAppUnits(videoSizeInPx.width),
- nsPresContext::CSSPixelsToAppUnits(videoSizeInPx.height));
+ auto aspectRatio = AspectRatio::FromSize(videoSizeInPx);
IntrinsicSize intrinsicSize;
- intrinsicSize.width.SetCoordValue(aspectRatio.width);
- intrinsicSize.height.SetCoordValue(aspectRatio.height);
-
+ intrinsicSize.width.SetCoordValue(nsPresContext::CSSPixelsToAppUnits(videoSizeInPx.width));
+ intrinsicSize.height.SetCoordValue(nsPresContext::CSSPixelsToAppUnits(videoSizeInPx.height));
nsRect dest = nsLayoutUtils::ComputeObjectDestRect(area,
intrinsicSize,
aspectRatio,
@@ -533,7 +531,9 @@ nsVideoFrame::ComputeSize(nsRenderingContext *aRenderingContext,
intrinsicSize.height.SetCoordValue(size.height);
// Only video elements have an intrinsic ratio.
- nsSize intrinsicRatio = HasVideoElement() ? size : nsSize(0, 0);
+ auto intrinsicRatio = HasVideoElement()
+ ? AspectRatio::FromSize(size)
+ : AspectRatio();
return ComputeSizeWithIntrinsicDimensions(aRenderingContext, aWM,
intrinsicSize, intrinsicRatio,
@@ -557,14 +557,14 @@ nscoord nsVideoFrame::GetPrefISize(nsRenderingContext *aRenderingContext)
return result;
}
-nsSize nsVideoFrame::GetIntrinsicRatio()
+AspectRatio nsVideoFrame::GetIntrinsicRatio()
{
if (!HasVideoElement()) {
// Audio elements have no intrinsic ratio.
- return nsSize(0, 0);
+ return AspectRatio();
}
- return GetVideoIntrinsicSize(nullptr);
+ return AspectRatio::FromSize(GetVideoIntrinsicSize(nullptr));
}
bool nsVideoFrame::ShouldDisplayPoster()