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