1 /* 2 * Copyright 2012 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "gm.h" 9 #include "SkMagnifierImageFilter.h" 10 11 #define WIDTH 500 12 #define HEIGHT 500 13 14 namespace skiagm { 15 16 class ImageMagnifierGM : public GM { 17 public: 18 ImageMagnifierGM() { 19 this->setBGColor(0xFF000000); 20 } 21 22 protected: 23 virtual uint32_t onGetFlags() const SK_OVERRIDE { 24 // Skip tiled drawing until https://code.google.com/p/skia/issues/detail?id=781 is fixed. 25 return this->INHERITED::onGetFlags() | GM::kSkipTiled_Flag; 26 } 27 28 virtual SkString onShortName() SK_OVERRIDE { 29 return SkString("imagemagnifier"); 30 } 31 32 virtual SkISize onISize() SK_OVERRIDE { 33 return make_isize(WIDTH, HEIGHT); 34 } 35 36 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 37 SkPaint paint; 38 paint.setImageFilter( 39 new SkMagnifierImageFilter( 40 SkRect::MakeXYWH(SkIntToScalar(125), SkIntToScalar(125), 41 SkIntToScalar(WIDTH / 2), 42 SkIntToScalar(HEIGHT / 2)), 43 100))->unref(); 44 canvas->saveLayer(NULL, &paint); 45 paint.setAntiAlias(true); 46 const char* str = "The quick brown fox jumped over the lazy dog."; 47 srand(1234); 48 for (int i = 0; i < 25; ++i) { 49 int x = rand() % WIDTH; 50 int y = rand() % HEIGHT; 51 paint.setColor(rand() % 0x1000000 | 0xFF000000); 52 paint.setTextSize(SkIntToScalar(rand() % 300)); 53 canvas->drawText(str, strlen(str), SkIntToScalar(x), 54 SkIntToScalar(y), paint); 55 } 56 canvas->restore(); 57 } 58 59 private: 60 typedef GM INHERITED; 61 }; 62 63 ////////////////////////////////////////////////////////////////////////////// 64 65 static GM* MyFactory(void*) { return new ImageMagnifierGM; } 66 static GMRegistry reg(MyFactory); 67 68 } 69