Bug 1035330 - Optimize rects in the gfxContext methods for getting extents to fix tsvgr_opacity regressions. r=Bas

This commit is contained in:
Jonathan Watt 2014-07-10 08:44:17 +01:00
Родитель 00f24f9055
Коммит 08bd4915a7
1 изменённых файлов: 11 добавлений и 0 удалений

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

@ -1769,6 +1769,9 @@ gfxContext::GetUserPathExtent()
cairo_path_extents(mCairo, &xmin, &ymin, &xmax, &ymax);
return gfxRect(xmin, ymin, xmax - xmin, ymax - ymin);
} else {
if (mPathIsRect) {
return ThebesRect(mTransform.TransformBounds(mRect));
}
EnsurePath();
return ThebesRect(mPath->GetBounds());
}
@ -1782,6 +1785,9 @@ gfxContext::GetUserFillExtent()
cairo_fill_extents(mCairo, &xmin, &ymin, &xmax, &ymax);
return gfxRect(xmin, ymin, xmax - xmin, ymax - ymin);
} else {
if (mPathIsRect) {
return ThebesRect(mTransform.TransformBounds(mRect));
}
EnsurePath();
return ThebesRect(mPath->GetBounds());
}
@ -1795,6 +1801,11 @@ gfxContext::GetUserStrokeExtent()
cairo_stroke_extents(mCairo, &xmin, &ymin, &xmax, &ymax);
return gfxRect(xmin, ymin, xmax - xmin, ymax - ymin);
} else {
if (mPathIsRect) {
Rect rect = mRect;
rect.Inflate(CurrentState().strokeOptions.mLineWidth / 2);
return ThebesRect(mTransform.TransformBounds(rect));
}
EnsurePath();
return ThebesRect(mPath->GetStrokedBounds(CurrentState().strokeOptions, mTransform));
}