summaryrefslogtreecommitdiff
path: root/image
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 /image
parent091749192cc7595a0013850fb450a5c1b6dde20b (diff)
downloaduxp-232f987cf45aad65d20e79d283f14c72771c9bc8.tar.gz
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 'image')
-rw-r--r--image/ClippedImage.cpp4
-rw-r--r--image/ClippedImage.h2
-rw-r--r--image/DynamicImage.cpp6
-rw-r--r--image/ImageWrapper.cpp4
-rw-r--r--image/OrientedImage.cpp4
-rw-r--r--image/OrientedImage.h2
-rw-r--r--image/RasterImage.cpp5
-rw-r--r--image/VectorImage.cpp2
-rw-r--r--image/imgIContainer.idl4
9 files changed, 18 insertions, 15 deletions
diff --git a/image/ClippedImage.cpp b/image/ClippedImage.cpp
index 5394718512..6372f59505 100644
--- a/image/ClippedImage.cpp
+++ b/image/ClippedImage.cpp
@@ -242,13 +242,13 @@ ClippedImage::GetIntrinsicSize(nsSize* aSize)
}
NS_IMETHODIMP
-ClippedImage::GetIntrinsicRatio(nsSize* aRatio)
+ClippedImage::GetIntrinsicRatio(AspectRatio* aRatio)
{
if (!ShouldClip()) {
return InnerImage()->GetIntrinsicRatio(aRatio);
}
- *aRatio = nsSize(mClip.width, mClip.height);
+ *aRatio = AspectRatio::FromSize(mClip.width, mClip.height);
return NS_OK;
}
diff --git a/image/ClippedImage.h b/image/ClippedImage.h
index 140cc19090..65963b7562 100644
--- a/image/ClippedImage.h
+++ b/image/ClippedImage.h
@@ -35,7 +35,7 @@ public:
NS_IMETHOD GetWidth(int32_t* aWidth) override;
NS_IMETHOD GetHeight(int32_t* aHeight) override;
NS_IMETHOD GetIntrinsicSize(nsSize* aSize) override;
- NS_IMETHOD GetIntrinsicRatio(nsSize* aRatio) override;
+ NS_IMETHOD GetIntrinsicRatio(AspectRatio* aRatio) override;
NS_IMETHOD_(already_AddRefed<SourceSurface>)
GetFrame(uint32_t aWhichFrame, uint32_t aFlags) override;
NS_IMETHOD_(already_AddRefed<SourceSurface>)
diff --git a/image/DynamicImage.cpp b/image/DynamicImage.cpp
index 670595aecb..aeb1fcf78e 100644
--- a/image/DynamicImage.cpp
+++ b/image/DynamicImage.cpp
@@ -136,10 +136,10 @@ DynamicImage::GetIntrinsicSize(nsSize* aSize)
}
NS_IMETHODIMP
-DynamicImage::GetIntrinsicRatio(nsSize* aSize)
+DynamicImage::GetIntrinsicRatio(AspectRatio* aRatio)
{
- IntSize intSize(mDrawable->Size());
- *aSize = nsSize(intSize.width, intSize.height);
+ auto size = mDrawable->Size();
+ *aRatio = AspectRatio::FromSize(size);
return NS_OK;
}
diff --git a/image/ImageWrapper.cpp b/image/ImageWrapper.cpp
index f7068dfc58..5ed6c78179 100644
--- a/image/ImageWrapper.cpp
+++ b/image/ImageWrapper.cpp
@@ -146,9 +146,9 @@ ImageWrapper::GetIntrinsicSize(nsSize* aSize)
}
NS_IMETHODIMP
-ImageWrapper::GetIntrinsicRatio(nsSize* aSize)
+ImageWrapper::GetIntrinsicRatio(AspectRatio* aRatio)
{
- return mInnerImage->GetIntrinsicRatio(aSize);
+ return mInnerImage->GetIntrinsicRatio(aRatio);
}
NS_IMETHODIMP_(Orientation)
diff --git a/image/OrientedImage.cpp b/image/OrientedImage.cpp
index 9489ceafd0..0b6560df1d 100644
--- a/image/OrientedImage.cpp
+++ b/image/OrientedImage.cpp
@@ -59,12 +59,12 @@ OrientedImage::GetIntrinsicSize(nsSize* aSize)
}
NS_IMETHODIMP
-OrientedImage::GetIntrinsicRatio(nsSize* aRatio)
+OrientedImage::GetIntrinsicRatio(AspectRatio* aRatio)
{
nsresult rv = InnerImage()->GetIntrinsicRatio(aRatio);
if (mOrientation.SwapsWidthAndHeight()) {
- swap(aRatio->width, aRatio->height);
+ *aRatio = aRatio->Inverted();
}
return rv;
diff --git a/image/OrientedImage.h b/image/OrientedImage.h
index 604ab3d4f5..b77571f4a3 100644
--- a/image/OrientedImage.h
+++ b/image/OrientedImage.h
@@ -31,7 +31,7 @@ public:
NS_IMETHOD GetWidth(int32_t* aWidth) override;
NS_IMETHOD GetHeight(int32_t* aHeight) override;
NS_IMETHOD GetIntrinsicSize(nsSize* aSize) override;
- NS_IMETHOD GetIntrinsicRatio(nsSize* aRatio) override;
+ NS_IMETHOD GetIntrinsicRatio(AspectRatio* aRatio) override;
NS_IMETHOD_(already_AddRefed<SourceSurface>)
GetFrame(uint32_t aWhichFrame, uint32_t aFlags) override;
NS_IMETHOD_(already_AddRefed<SourceSurface>)
diff --git a/image/RasterImage.cpp b/image/RasterImage.cpp
index b67ec3bef4..5725aee3a4 100644
--- a/image/RasterImage.cpp
+++ b/image/RasterImage.cpp
@@ -240,13 +240,14 @@ RasterImage::GetIntrinsicSize(nsSize* aSize)
//******************************************************************************
NS_IMETHODIMP
-RasterImage::GetIntrinsicRatio(nsSize* aRatio)
+RasterImage::GetIntrinsicRatio(AspectRatio* aRatio)
{
if (mError) {
return NS_ERROR_FAILURE;
}
- *aRatio = nsSize(mSize.width, mSize.height);
+ *aRatio = AspectRatio::FromSize(mSize);
+
return NS_OK;
}
diff --git a/image/VectorImage.cpp b/image/VectorImage.cpp
index 3028c1c2ec..3fcb296f5f 100644
--- a/image/VectorImage.cpp
+++ b/image/VectorImage.cpp
@@ -628,7 +628,7 @@ VectorImage::GetIntrinsicSize(nsSize* aSize)
//******************************************************************************
NS_IMETHODIMP
-VectorImage::GetIntrinsicRatio(nsSize* aRatio)
+VectorImage::GetIntrinsicRatio(AspectRatio* aRatio)
{
if (mError || !mIsFullyLoaded) {
return NS_ERROR_FAILURE;
diff --git a/image/imgIContainer.idl b/image/imgIContainer.idl
index 20c949037f..ba1c494af6 100644
--- a/image/imgIContainer.idl
+++ b/image/imgIContainer.idl
@@ -12,6 +12,7 @@
#include "gfxMatrix.h"
#include "gfxRect.h"
#include "mozilla/gfx/2D.h"
+#include "mozilla/AspectRatio.h"
#include "mozilla/Maybe.h"
#include "mozilla/RefPtr.h"
#include "nsRect.h"
@@ -55,6 +56,7 @@ native SamplingFilter(mozilla::gfx::SamplingFilter);
native nsIntRectByVal(nsIntRect);
[ref] native nsIntSize(nsIntSize);
native nsSize(nsSize);
+native AspectRatio(mozilla::AspectRatio);
[ptr] native nsIFrame(nsIFrame);
native TempRefImageContainer(already_AddRefed<mozilla::layers::ImageContainer>);
[ref] native ImageRegion(mozilla::image::ImageRegion);
@@ -101,7 +103,7 @@ interface imgIContainer : nsISupports
* The (dimensionless) intrinsic ratio of this image. In the case of any
* error, an exception will be thrown.
*/
- [noscript] readonly attribute nsSize intrinsicRatio;
+ [noscript] readonly attribute AspectRatio intrinsicRatio;
/**
* Given a size at which this image will be displayed, and the drawing