1 /* 2 * Copyright 2016 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 "SkAvoidXfermode.h" 10 11 class AvoidXfermode2GM : public skiagm::GM { 12 public: AvoidXfermode2GM()13 AvoidXfermode2GM() { } 14 15 protected: onShortName()16 SkString onShortName() override { 17 return SkString("avoidxfermode2"); 18 } 19 onISize()20 SkISize onISize() override { return SkISize::Make(128, 128); } 21 onDraw(SkCanvas * canvas)22 void onDraw(SkCanvas* canvas) override { 23 canvas->drawARGB(255, 0, 0, 0); 24 25 SkRect r = SkRect::MakeXYWH(32, 32, 64, 64); 26 27 SkPaint p0; 28 p0.setColor(SK_ColorGREEN); 29 p0.setAntiAlias(false); 30 31 canvas->drawRect(r, p0); 32 33 r = SkRect::MakeIWH(64, 64); 34 35 // UL corner: replace the green with a tight tolerance 36 SkPaint p1; 37 p1.setColor(SK_ColorRED); 38 p1.setXfermode(SkAvoidXfermode::Create(SK_ColorGREEN, 39 55, 40 SkAvoidXfermode::kTargetColor_Mode))->unref(); 41 42 canvas->drawRect(r, p1); 43 44 r.offsetTo(64, 0.0f); 45 46 // UR corner: avoid the green with a tight tolerance 47 SkPaint p2; 48 p2.setColor(SK_ColorRED); 49 p2.setXfermode(SkAvoidXfermode::Create(SK_ColorGREEN, 50 200, 51 SkAvoidXfermode::kAvoidColor_Mode))->unref(); 52 53 canvas->drawRect(r, p2); 54 55 r.offsetTo(0.0f, 64); 56 57 // LL corner: replace the green with a loose tolerance 58 SkPaint p3; 59 p3.setColor(SK_ColorRED); 60 p3.setXfermode(SkAvoidXfermode::Create(SK_ColorGREEN, 61 200, 62 SkAvoidXfermode::kTargetColor_Mode))->unref(); 63 64 canvas->drawRect(r, p3); 65 66 r.offsetTo(64, 64); 67 68 // LR corner: avoid the green with a loose tolerance 69 SkPaint p4; 70 p4.setColor(SK_ColorRED); 71 p4.setXfermode(SkAvoidXfermode::Create(SK_ColorGREEN, 72 55, 73 SkAvoidXfermode::kAvoidColor_Mode))->unref(); 74 75 canvas->drawRect(r, p4); 76 } 77 78 private: 79 typedef GM INHERITED; 80 }; 81 82 ////////////////////////////////////////////////////////////////////////////// 83 84 DEF_GM(return new AvoidXfermode2GM;) 85