disable GPU blur on small paths
Change originally by Guanqun.Lu@gmail.com with minor edits and sample added by me
COULD POSSIBLY CHANGE GPU RESULTS OF GM SLIDES WITH BLUR, WILL REBASILINE IF SO.
Review URL: https://codereview.appspot.com/5940045/
git-svn-id: http://skia.googlecode.com/svn/trunk@3514 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleAnimBlur.cpp b/samplecode/SampleAnimBlur.cpp
new file mode 100644
index 0000000..74f8811
--- /dev/null
+++ b/samplecode/SampleAnimBlur.cpp
@@ -0,0 +1,70 @@
+
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SampleCode.h"
+#include "SkBlurMaskFilter.h"
+#include "SkColorPriv.h"
+#include "SkCanvas.h"
+#include "SkRandom.h"
+
+class AnimBlurView : public SampleView {
+public:
+ AnimBlurView() {
+ }
+
+protected:
+ // overrides from SkEventSink
+ virtual bool onQuery(SkEvent* evt) {
+ if (SampleCode::TitleQ(*evt)) {
+ SampleCode::TitleR(evt, "AnimBlur");
+ return true;
+ }
+ return this->INHERITED::onQuery(evt);
+ }
+
+ virtual void onDrawContent(SkCanvas* canvas) {
+
+ SkScalar blurRadius = SampleCode::GetAnimSinScalar(100 * SK_Scalar1,
+ 4 * SK_Scalar1,
+ 5 * SK_Scalar1);
+
+ SkScalar circleRadius = 3 * SK_Scalar1 +
+ SampleCode::GetAnimSinScalar(150 * SK_Scalar1,
+ 25 * SK_Scalar1,
+ 3 * SK_Scalar1);
+
+ static const SkBlurMaskFilter::BlurStyle gStyles[] = {
+ SkBlurMaskFilter::kNormal_BlurStyle,
+ SkBlurMaskFilter::kInner_BlurStyle,
+ SkBlurMaskFilter::kSolid_BlurStyle,
+ SkBlurMaskFilter::kOuter_BlurStyle,
+ };
+ SkRandom random;
+
+ for (int i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) {
+ SkMaskFilter* mf = SkBlurMaskFilter::Create(blurRadius,
+ gStyles[i],
+ SkBlurMaskFilter::kHighQuality_BlurFlag);
+ SkPaint paint;
+ paint.setMaskFilter(mf)->unref();
+ paint.setColor(random.nextU() | 0xff000000);
+ canvas->drawCircle(200 * SK_Scalar1 + 400 * (i % 2) * SK_Scalar1,
+ 200 * SK_Scalar1 + i / 2 * 400 * SK_Scalar1,
+ circleRadius, paint);
+ }
+ this->inval(NULL);
+ }
+
+private:
+ typedef SkView INHERITED;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+static SkView* MyFactory() { return new AnimBlurView; }
+static SkViewRegister reg(MyFactory);
+