Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Unified Diff: gm/bigblurs.cpp

Issue 67263002: Add additional case to bigblurs GM (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/bigblurs.cpp
===================================================================
--- gm/bigblurs.cpp (revision 12202)
+++ gm/bigblurs.cpp (working copy)
@@ -13,9 +13,13 @@
namespace skiagm {
// This GM exercises the blurred rect nine-patching special cases when the
-// blurred rect is very large and/or very far from the origin.
-// It creates a large blurred rect/rectori then renders the 4 corners and the
-// middle.
+// blurred geometry is very large and/or very far from the origin.
+// It creates large blurred geometry then renders the 4 corners and the middle.
+// The three geometries tested are:
+// a large rect
+// a large thin rectorii (inner rect is only 20 inside outer rect)
+// a large thick rectorii (inner rect is tiny compared to outer rect)
+// This last case is inappropriate for the nine-patch fast path.
class BigBlursGM : public GM {
public:
BigBlursGM() {
@@ -39,11 +43,16 @@
SkRect insetRect = bigRect;
insetRect.inset(20, 20);
- SkPath rectori;
+ SkPath thinRectori;
+ thinRectori.addRect(bigRect);
+ thinRectori.addRect(insetRect, SkPath::kCCW_Direction);
- rectori.addRect(bigRect);
- rectori.addRect(insetRect, SkPath::kCCW_Direction);
+ insetRect.inset(kBig/2-40, kBig/2-40);
+ SkPath thickRectori;
+ thickRectori.addRect(bigRect);
+ thickRectori.addRect(insetRect, SkPath::kCCW_Direction);
+
// The blur extends 3*kSigma out from the big rect.
// Offset the close-up windows so we get the entire blur
static const SkScalar kLeftTopPad = 3*kSigma; // use on left & up of big rect
@@ -68,7 +77,7 @@
int desiredX = 0, desiredY = 0;
- for (int i = 0; i < 2; ++i) {
+ for (int i = 0; i < kNumGeometryTypes; ++i) {
for (int j = 0; j < SkBlurMaskFilter::kBlurStyleCount; ++j) {
SkMaskFilter* mf = SkBlurMaskFilter::Create((SkBlurMaskFilter::BlurStyle)j,
kSigma);
@@ -89,9 +98,12 @@
if (0 == i) {
canvas->drawRect(bigRect, blurPaint);
+ } else if (1 == i) {
+ canvas->drawPath(thinRectori, blurPaint);
} else {
- canvas->drawPath(rectori, blurPaint);
+ canvas->drawPath(thickRectori, blurPaint);
}
+
canvas->restore();
canvas->drawRect(clipRect, outlinePaint);
@@ -105,9 +117,12 @@
}
private:
+ static const int kNumGeometryTypes = 3;
static const int kCloseUpSize = 64;
static const int kWidth = 5 * kCloseUpSize;
- static const int kHeight = 2 * SkBlurMaskFilter::kBlurStyleCount * kCloseUpSize;
+ static const int kHeight = kNumGeometryTypes *
+ SkBlurMaskFilter::kBlurStyleCount *
+ kCloseUpSize;
typedef GM INHERITED;
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698