aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleAnimBlur.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'samplecode/SampleAnimBlur.cpp')
-rw-r--r--samplecode/SampleAnimBlur.cpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/samplecode/SampleAnimBlur.cpp b/samplecode/SampleAnimBlur.cpp
index e00c46ddd1..527d4300e7 100644
--- a/samplecode/SampleAnimBlur.cpp
+++ b/samplecode/SampleAnimBlur.cpp
@@ -11,14 +11,23 @@
#include "SkCanvas.h"
#include "SkRandom.h"
+SkScalar get_anim_sin(SkMSec time, SkScalar amplitude, SkScalar periodInSec, SkScalar phaseInSec) {
+ if (!periodInSec) {
+ return 0;
+ }
+ double t = (double)time / 1000.0 + phaseInSec;
+ t *= SkScalarToFloat(2 * SK_ScalarPI) / periodInSec;
+ amplitude = SK_ScalarHalf * amplitude;
+ return amplitude * SkDoubleToScalar(sin(t)) + amplitude;
+}
+
class AnimBlurView : public SampleView {
public:
- AnimBlurView() {
- }
+ AnimBlurView() : fBlurSigma(0), fCircleRadius(100) {}
protected:
// overrides from SkEventSink
- virtual bool onQuery(SkEvent* evt) {
+ bool onQuery(SkEvent* evt) SK_OVERRIDE {
if (SampleCode::TitleQ(*evt)) {
SampleCode::TitleR(evt, "AnimBlur");
return true;
@@ -26,17 +35,7 @@ protected:
return this->INHERITED::onQuery(evt);
}
- virtual void onDrawContent(SkCanvas* canvas) {
-
- SkScalar blurSigma = 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);
-
+ void onDrawContent(SkCanvas* canvas) SK_OVERRIDE {
static const SkBlurStyle gStyles[] = {
kNormal_SkBlurStyle,
kInner_SkBlurStyle,
@@ -48,20 +47,27 @@ protected:
for (size_t i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) {
SkMaskFilter* mf = SkBlurMaskFilter::Create(
gStyles[i],
- blurSigma,
+ fBlurSigma,
SkBlurMaskFilter::kHighQuality_BlurFlag);
SkPaint paint;
SkSafeUnref(paint.setMaskFilter(mf));
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);
+ fCircleRadius, paint);
}
- this->inval(NULL);
+ }
+
+ bool onAnimatePulse(SkMSec curr, SkMSec prev) SK_OVERRIDE {
+ fBlurSigma = get_anim_sin(curr, 100, 4, 5);
+ fCircleRadius = 3 + get_anim_sin(curr, 150, 25, 3);
+ return true;
}
private:
- typedef SkView INHERITED;
+ SkScalar fBlurSigma, fCircleRadius;
+
+ typedef SampleView INHERITED;
};
//////////////////////////////////////////////////////////////////////////////