Home | History | Annotate | Download | only in gm
      1 #include "gm.h"
      2 #include "SkBlurMaskFilter.h"
      3 
      4 namespace skiagm {
      5 
      6 class BlursGM : public GM {
      7 public:
      8     BlursGM() {}
      9 
     10 protected:
     11     virtual SkString onShortName() {
     12         return SkString("blurs");
     13     }
     14 
     15     virtual SkISize onISize() {
     16         return make_isize(700, 500);
     17     }
     18 
     19     void drawBG(SkCanvas* canvas) {
     20         canvas->drawColor(0xFFDDDDDD);
     21     }
     22 
     23     virtual void onDraw(SkCanvas* canvas) {
     24         drawBG(canvas);
     25 
     26         SkBlurMaskFilter::BlurStyle NONE = SkBlurMaskFilter::BlurStyle(-999);
     27         static const struct {
     28             SkBlurMaskFilter::BlurStyle fStyle;
     29             int                         fCx, fCy;
     30         } gRecs[] = {
     31             { NONE,                                 0,  0 },
     32             { SkBlurMaskFilter::kInner_BlurStyle,  -1,  0 },
     33             { SkBlurMaskFilter::kNormal_BlurStyle,  0,  1 },
     34             { SkBlurMaskFilter::kSolid_BlurStyle,   0, -1 },
     35             { SkBlurMaskFilter::kOuter_BlurStyle,   1,  0 },
     36         };
     37 
     38         SkPaint paint;
     39         paint.setAntiAlias(true);
     40         paint.setTextSize(SkIntToScalar(25));
     41         canvas->translate(SkIntToScalar(-40), SkIntToScalar(0));
     42 
     43         SkBlurMaskFilter::BlurFlags flags = SkBlurMaskFilter::kNone_BlurFlag;
     44         for (int j = 0; j < 2; j++) {
     45             canvas->save();
     46             paint.setColor(SK_ColorBLUE);
     47             for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) {
     48                 if (gRecs[i].fStyle != NONE) {
     49                     SkMaskFilter* mf = SkBlurMaskFilter::Create(
     50                             SkIntToScalar(20), gRecs[i].fStyle, flags
     51                     );
     52                     paint.setMaskFilter(mf)->unref();
     53                 } else {
     54                     paint.setMaskFilter(NULL);
     55                 }
     56                 canvas->drawCircle(SkIntToScalar(200 + gRecs[i].fCx*100)
     57                                    , SkIntToScalar(200 + gRecs[i].fCy*100)
     58                                    , SkIntToScalar(50)
     59                                    , paint);
     60             }
     61             // draw text
     62             {
     63                 SkMaskFilter* mf = SkBlurMaskFilter::Create(
     64                         SkIntToScalar(4)
     65                         , SkBlurMaskFilter::kNormal_BlurStyle
     66                         , flags
     67                 );
     68                 paint.setMaskFilter(mf)->unref();
     69                 SkScalar x = SkIntToScalar(70);
     70                 SkScalar y = SkIntToScalar(400);
     71                 paint.setColor(SK_ColorBLACK);
     72                 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
     73                 canvas->drawText("Hamburgefons Style", 18
     74                                  , x, y + SkIntToScalar(50), paint);
     75                 paint.setMaskFilter(NULL);
     76                 paint.setColor(SK_ColorWHITE);
     77                 x -= SkIntToScalar(2);
     78                 y -= SkIntToScalar(2);
     79                 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
     80             }
     81             canvas->restore();
     82             flags = SkBlurMaskFilter::kHighQuality_BlurFlag;
     83             canvas->translate(SkIntToScalar(350), SkIntToScalar(0));
     84         }
     85     }
     86 
     87 private:
     88     typedef GM INHERITED;
     89 };
     90 
     91 //////////////////////////////////////////////////////////////////////////////
     92 
     93 static GM* MyFactory(void*) { return new BlursGM; }
     94 static GMRegistry reg(MyFactory);
     95 
     96 }
     97 
     98