make transformed rrect radii fit rectangle

one more case caught by 1M skps
R=herb@google.com,reed@google.com
BUG=skia:4413
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1722483003

Review URL: https://codereview.chromium.org/1722483003
This commit is contained in:
caryclark 2016-02-23 10:32:40 -08:00 committed by Commit bot
parent 9ca27f39dd
commit 5a70bc7f3c
2 changed files with 7 additions and 1 deletions

View File

@ -326,6 +326,7 @@ private:
void computeType();
bool checkCornerContainment(SkScalar x, SkScalar y) const;
void scaleRadii();
// to access fRadii directly
friend class SkPath;

View File

@ -158,6 +158,11 @@ void SkRRect::setRectRadii(const SkRect& rect, const SkVector radii[4]) {
return;
}
this->scaleRadii();
}
void SkRRect::scaleRadii() {
// Proportionally scale down all radii to fit. Find the minimum ratio
// of a side and the radii on that side (for all four sides) and use
// that to scale down _all_ the radii. This algorithm is from the
@ -420,7 +425,7 @@ bool SkRRect::transform(const SkMatrix& matrix, SkRRect* dst) const {
SkTSwap(dst->fRadii[kUpperRight_Corner], dst->fRadii[kLowerRight_Corner]);
}
SkDEBUGCODE(dst->validate();)
dst->scaleRadii();
return true;
}