130db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com/*
230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com * Copyright 2011 Google Inc.
330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com *
430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com * Use of this source code is governed by a BSD-style license that can be
530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com * found in the LICENSE file.
630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com */
7574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
8574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com#include "gm.h"
1030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com#include "SkCanvas.h"
1130db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com#include "SkPath.h"
1230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com#include "SkRandom.h"
13d3ebb48320cf1b7e969974673e4bd7743816985ebungeman#include "SkRect.h"
14d3ebb48320cf1b7e969974673e4bd7743816985ebungeman#include "SkRRect.h"
1530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
1630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.comnamespace skiagm {
1730db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
1830db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.comclass ComplexClip2GM : public GM {
1930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.compublic:
20e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    enum Clip {
21e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        kRect_Clip,
22e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        kRRect_Clip,
23e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        kPath_Clip
24e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    };
25e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org
26e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    ComplexClip2GM(Clip clip, bool antiAlias)
27e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    : fClip(clip)
282470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com    , fAntiAlias(antiAlias) {
2963c684a8a609d39da11b4a656223cebf52ca85dccaryclark        SkScalar xA = 0.65f;
3063c684a8a609d39da11b4a656223cebf52ca85dccaryclark        SkScalar xF = 50.65f;
3163c684a8a609d39da11b4a656223cebf52ca85dccaryclark
3263c684a8a609d39da11b4a656223cebf52ca85dccaryclark        SkScalar yA = 0.65f;
3363c684a8a609d39da11b4a656223cebf52ca85dccaryclark        SkScalar yF = 50.65f;
3463c684a8a609d39da11b4a656223cebf52ca85dccaryclark
3563c684a8a609d39da11b4a656223cebf52ca85dccaryclark        fWidth = xF - xA;
3663c684a8a609d39da11b4a656223cebf52ca85dccaryclark        fHeight = yF - yA;
3763c684a8a609d39da11b4a656223cebf52ca85dccaryclark
3863c684a8a609d39da11b4a656223cebf52ca85dccaryclark        fTotalWidth = kCols * fWidth + SK_Scalar1 * (kCols + 1) * kPadX;
3963c684a8a609d39da11b4a656223cebf52ca85dccaryclark        fTotalHeight = kRows * fHeight + SK_Scalar1 * (kRows + 1) * kPadY;
4063c684a8a609d39da11b4a656223cebf52ca85dccaryclark    }
4163c684a8a609d39da11b4a656223cebf52ca85dccaryclark
4263c684a8a609d39da11b4a656223cebf52ca85dccaryclarkprotected:
4336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void onOnceBeforeDraw() override {
4448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com        this->setBGColor(SkColorSetRGB(0xDD,0xA0,0xDD));
45ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
462470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com        // offset the rects a bit so we get antialiasing even in the rect case
474b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xA = 0.65f;
484b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xB = 10.65f;
494b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xC = 20.65f;
504b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xD = 30.65f;
514b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xE = 40.65f;
524b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar xF = 50.65f;
534b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org
544b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yA = 0.65f;
554b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yB = 10.65f;
564b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yC = 20.65f;
574b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yD = 30.65f;
584b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yE = 40.65f;
594b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org        SkScalar yF = 50.65f;
6030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
61574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com        fRects[0].set(xB, yB, xE, yE);
62e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fRRects[0].setRectXY(fRects[0], 7, 7);
63e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fPaths[0].addRoundRect(fRects[0], 5, 5);
6430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fRectColors[0] = SK_ColorRED;
6530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
66574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com        fRects[1].set(xA, yA, xD, yD);
67e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fRRects[1].setRectXY(fRects[1], 7, 7);
68e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fPaths[1].addRoundRect(fRects[1], 5, 5);
6930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fRectColors[1] = SK_ColorGREEN;
7030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
71574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com        fRects[2].set(xC, yA, xF, yD);
72e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fRRects[2].setRectXY(fRects[2], 7, 7);
73e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fPaths[2].addRoundRect(fRects[2], 5, 5);
7430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fRectColors[2] = SK_ColorBLUE;
7530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
76574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com        fRects[3].set(xA, yC, xD, yF);
77e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fRRects[3].setRectXY(fRects[3], 7, 7);
78e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fPaths[3].addRoundRect(fRects[3], 5, 5);
7930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fRectColors[3] = SK_ColorYELLOW;
8030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
81574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com        fRects[4].set(xC, yC, xF, yF);
82e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fRRects[4].setRectXY(fRects[4], 7, 7);
83e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        fPaths[4].addRoundRect(fRects[4], 5, 5);
8430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fRectColors[4] = SK_ColorCYAN;
8530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
86c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed        const SkClipOp ops[] = {
87c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kDifference_SkClipOp,
88c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kIntersect_SkClipOp,
89c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kUnion_SkClipOp,
90c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kXOR_SkClipOp,
91c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kReverseDifference_SkClipOp,
92c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed            kReplace_SkClipOp,
9330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        };
9430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
95f9d610179d7d4198b57b12d06f8d1ca09f580df3scroggo        SkRandom r;
9630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        for (int i = 0; i < kRows; ++i) {
9730db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com            for (int j = 0; j < kCols; ++j) {
9830db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                for (int k = 0; k < 5; ++k) {
9930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                    fOps[j*kRows+i][k] = ops[r.nextU() % SK_ARRAY_COUNT(ops)];
10030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                }
10130db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com            }
10230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        }
103574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com    }
104574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
105dbfd7ab10883f173f5c1b653a233e18dc6142002mtklein    static constexpr int kRows = 5;
106dbfd7ab10883f173f5c1b653a233e18dc6142002mtklein    static constexpr int kCols = 5;
107dbfd7ab10883f173f5c1b653a233e18dc6142002mtklein    static constexpr int kPadX = 20;
108dbfd7ab10883f173f5c1b653a233e18dc6142002mtklein    static constexpr int kPadY = 20;
109574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
110e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    static const char* ClipStr(Clip clip) {
111e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        switch (clip) {
112e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        case kRect_Clip:
113e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org            return "rect";
114e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        case kRRect_Clip:
115e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org            return "rrect";
116e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        case kPath_Clip:
117e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org            return "path";
118e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        }
119e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        SkDEBUGFAIL("Unknown clip type.");
120e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        return "";
121e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    }
122e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org
123f059900f75639f1b1a03f2c25333ef9aa22d58b8mtklein    SkString onShortName() override {
124e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org        if (kRect_Clip == fClip && !fAntiAlias) {
1252470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com            return SkString("complexclip2");
1262470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com        }
1272470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
1282470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com        SkString str;
129ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com        str.printf("complexclip2_%s_%s",
130e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                    ClipStr(fClip),
1312470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                    fAntiAlias ? "aa" : "bw");
1322470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com        return str;
133574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com    }
134574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
135f059900f75639f1b1a03f2c25333ef9aa22d58b8mtklein    SkISize onISize() override {
136f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina        return SkISize::Make(SkScalarRoundToInt(fTotalWidth),
137f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina                             SkScalarRoundToInt(fTotalHeight));
13845482d1d2b97de185df137a1db40cbe5a62313a5reed@google.com    }
139574f29dfa7944879e3266ccdf47dc7f178f21104bsalomon@google.com
140f059900f75639f1b1a03f2c25333ef9aa22d58b8mtklein    void onDraw(SkCanvas* canvas) override {
14130db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        SkPaint rectPaint;
14230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        rectPaint.setStyle(SkPaint::kStroke_Style);
14330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        rectPaint.setStrokeWidth(-1);
14430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
14530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        SkPaint fillPaint;
14630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        fillPaint.setColor(SkColorSetRGB(0xA0,0xDD,0xA0));
14730db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
14830db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        for (int i = 0; i < kRows; ++i) {
14930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com            for (int j = 0; j < kCols; ++j) {
15030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                canvas->save();
1512470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
15230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                canvas->translate(kPadX * SK_Scalar1 + (fWidth + kPadX * SK_Scalar1)*j,
15330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                                  kPadY * SK_Scalar1 + (fHeight + kPadY * SK_Scalar1)*i);
1542470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
155ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com                // draw the original shapes first so we can see the
1562470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                // antialiasing on the clipped draw
15730db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                for (int k = 0; k < 5; ++k) {
1582470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                    rectPaint.setColor(fRectColors[k]);
159e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                    switch (fClip) {
160e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kRect_Clip:
161e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->drawRect(fRects[k], rectPaint);
162e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
163e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kRRect_Clip:
164e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->drawRRect(fRRects[k], rectPaint);
165e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
166e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kPath_Clip:
167e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->drawPath(fPaths[k], rectPaint);
168e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
1692470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                    }
17030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                }
1712470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
17230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                for (int k = 0; k < 5; ++k) {
173e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                    switch (fClip) {
174e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kRect_Clip:
175e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->clipRect(fRects[k],
176e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                             fOps[j*kRows+i][k],
177e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                             fAntiAlias);
178e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
179e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kRRect_Clip:
180e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->clipRRect(fRRects[k],
181e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                              fOps[j*kRows+i][k],
182e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                              fAntiAlias);
183e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
184e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                        case kPath_Clip:
185e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            canvas->clipPath(fPaths[k],
186e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                             fOps[j*kRows+i][k],
187e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                                             fAntiAlias);
188e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org                            break;
1892470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                    }
19030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                }
1912470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com                canvas->drawRect(SkRect::MakeWH(fWidth, fHeight), fillPaint);
19230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com                canvas->restore();
19330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com            }
19430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com        }
19530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    }
19630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.comprivate:
197e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    Clip fClip;
1982470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com    bool fAntiAlias;
19930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkRect fRects[5];
200e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org    SkRRect fRRects[5];
2012470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com    SkPath fPaths[5];
20230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkColor fRectColors[5];
203c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed    SkClipOp fOps[kRows * kCols][5];
20430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkScalar fWidth;
20530db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkScalar fHeight;
20630db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkScalar fTotalWidth;
20730db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    SkScalar fTotalHeight;
20830db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
20930db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com    typedef GM INHERITED;
21030db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com};
21130db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
21230db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com//////////////////////////////////////////////////////////////////////////////
21330db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com
214e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org// bw
215e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kRect_Clip, false); )
216e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kRRect_Clip, false); )
217e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kPath_Clip, false); )
2182470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
219e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.org// aa
220e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kRect_Clip, true); )
221e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kRRect_Clip, true); )
222e5b2af955b7d06815ddd405659ad62a2a8355ca3commit-bot@chromium.orgDEF_GM( return new ComplexClip2GM(ComplexClip2GM::kPath_Clip, true); )
2232470b25ac858d2262943aaaa0f7e25da5dbeba1crobertphillips@google.com
22430db599c1de70b2832ff9ec05c266a4c9b515d94reed@google.com}
225