Bug 1635064 - Make SVG images take image-orientation property into account. r=tnikkel

Differential Revision: https://phabricator.services.mozilla.com/D75478
This commit is contained in:
Cameron McCormack 2020-05-16 00:38:18 +00:00
Родитель 573977550b
Коммит adc997e221
5 изменённых файлов: 24 добавлений и 3 удалений

Просмотреть файл

@ -116,6 +116,24 @@ void nsSVGImageFrame::DestroyFrom(nsIFrame* aDestructRoot,
nsFrame::DestroyFrom(aDestructRoot, aPostDestroyData);
}
/* virtual */
void nsSVGImageFrame::DidSetComputedStyle(ComputedStyle* aOldStyle) {
SVGGeometryFrame::DidSetComputedStyle(aOldStyle);
if (!mImageContainer || !aOldStyle) {
return;
}
auto newOrientation = StyleVisibility()->mImageOrientation;
if (aOldStyle->StyleVisibility()->mImageOrientation != newOrientation) {
nsCOMPtr<imgIContainer> image(mImageContainer->Unwrap());
mImageContainer = nsLayoutUtils::OrientImage(image, newOrientation);
}
// TODO(heycam): We should handle aspect-ratio, like nsImageFrame does.
}
//----------------------------------------------------------------------
// nsIFrame methods:
@ -805,6 +823,8 @@ void nsSVGImageListener::Notify(imgIRequest* aRequest, int32_t aType,
nsCOMPtr<imgIContainer> image;
aRequest->GetImage(getter_AddRefs(image));
if (image) {
image = nsLayoutUtils::OrientImage(
image, mFrame->StyleVisibility()->mImageOrientation);
image->SetAnimationMode(mFrame->PresContext()->ImageAnimationMode());
mFrame->mImageContainer = std::move(image);
}

Просмотреть файл

@ -94,6 +94,7 @@ class nsSVGImageFrame final : public mozilla::SVGGeometryFrame,
nsIFrame* aPrevInFlow) override;
virtual void DestroyFrom(nsIFrame* aDestructRoot,
PostDestroyData& aPostDestroyData) override;
void DidSetComputedStyle(ComputedStyle* aOldStyle) final;
bool GetIntrinsicImageDimensions(mozilla::gfx::Size& aSize,
mozilla::AspectRatio& aAspectRatio) const;

Просмотреть файл

@ -1,2 +1,2 @@
[svg-image-orientation-aspect-ratio.html]
expected: FAIL
fuzzy: 17-20;5534-6147

Просмотреть файл

@ -1,2 +1,2 @@
[svg-image-orientation-none.html]
expected: FAIL
fuzzy: 3;93

Просмотреть файл

@ -1,2 +1,2 @@
[svg-image-orientation.html]
expected: FAIL
fuzzy: 3;166