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