Bug 1925561 - Use a quicker radius calculation for ArcParams. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D226242
This commit is contained in:
@@ -12,14 +12,12 @@ namespace mozilla {
|
|||||||
namespace gfx {
|
namespace gfx {
|
||||||
|
|
||||||
inline Maybe<float> PathOps::ArcParams::GetRadius() const {
|
inline Maybe<float> PathOps::ArcParams::GetRadius() const {
|
||||||
if (!transform.HasNonAxisAlignedTransform() &&
|
// Do a quick check for a uniform scale and/or translation transform. In the
|
||||||
FuzzyEqual(transform._11, transform._22) && transform._11 > 0.0f) {
|
// worst case scenario, failing just causes a fallback to ArcToBezier.
|
||||||
|
if (transform._11 == transform._22 && transform._12 == 0.0f &&
|
||||||
|
transform._21 == 0.0f && transform._11 > 0.0f) {
|
||||||
return Some(transform._11);
|
return Some(transform._11);
|
||||||
}
|
}
|
||||||
auto scale = transform.ScaleFactors();
|
|
||||||
if (scale.AreScalesSame() && scale.xScale > 0.0f) {
|
|
||||||
return Some(scale.xScale);
|
|
||||||
}
|
|
||||||
return Nothing();
|
return Nothing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user