Home | History | Annotate | Download | only in samplecode
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 #include "SampleCode.h"
      9 #include "SkView.h"
     10 #include "SkCanvas.h"
     11 
     12 class SpiralView : public SampleView {
     13 public:
     14     SpiralView() {
     15         this->setBGColor(0xFFDDDDDD);
     16     }
     17 
     18 protected:
     19     // overrides from SkEventSink
     20     virtual bool onQuery(SkEvent* evt)  {
     21         if (SampleCode::TitleQ(*evt)) {
     22             SampleCode::TitleR(evt, "Spiral");
     23             return true;
     24         }
     25         return this->INHERITED::onQuery(evt);
     26     }
     27 
     28     virtual void onDrawContent(SkCanvas* canvas) {
     29         SkPaint paint;
     30         paint.setAntiAlias(true);
     31         paint.setStyle(SkPaint::kStroke_Style);
     32         paint.setStrokeWidth(SkScalarHalf(SkIntToScalar(3)));
     33         paint.setStyle(SkPaint::kFill_Style);
     34 
     35         SkRect r;
     36         SkScalar l,t,x,y;
     37         l = SampleCode::GetAnimScalar(SkIntToScalar(10),
     38                                       SkIntToScalar(400));
     39         t = SampleCode::GetAnimScalar(SkIntToScalar(5),
     40                                       SkIntToScalar(200));
     41 
     42         canvas->translate(320,240);
     43         for (int i = 0; i < 35; i++) {
     44             paint.setColor(0xFFF00FF0 - i * 0x04000000);
     45             SkScalar step = SK_ScalarPI / (55 - i);
     46             SkScalar angle = t * step;
     47             x = (20 + SkIntToScalar(i) * 5) * SkScalarSinCos(angle, &y);
     48             y *= (20 + SkIntToScalar(i) * 5);
     49             r.set(x, y, x + SkIntToScalar(10), y + SkIntToScalar(10));
     50             canvas->drawRect(r, paint);
     51         }
     52 
     53         this->inval(NULL);
     54     }
     55 
     56 private:
     57     typedef SampleView INHERITED;
     58 };
     59 
     60 //////////////////////////////////////////////////////////////////////////////
     61 
     62 static SkView* MyFactory() { return new SpiralView; }
     63 static SkViewRegister reg(MyFactory);
     64