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