ee6765af55e07e265e453480bd0c5f27c0278441
[platform/upstream/libSkiaSharp.git] / gm / pathopsskpclip.cpp
1 /*
2  * Copyright 2013 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 "SkBitmap.h"
10 #include "SkCanvas.h"
11 #include "SkClipStack.h"
12 #include "SkDevice.h"
13 #include "SkPath.h"
14 #include "SkPathOps.h"
15 #include "SkPicture.h"
16 #include "SkPictureRecorder.h"
17 #include "SkRect.h"
18
19 namespace skiagm {
20
21 class PathOpsSkpClipGM : public GM {
22 public:
23     PathOpsSkpClipGM() {
24     }
25
26 protected:
27     SkString onShortName() SK_OVERRIDE {
28         return SkString("pathopsskpclip");
29     }
30
31     SkISize onISize() SK_OVERRIDE {
32         return SkISize::Make(1200, 900);
33     }
34
35     void onDraw(SkCanvas* canvas) SK_OVERRIDE {
36         SkPictureRecorder recorder;
37         SkCanvas* rec = recorder.beginRecording(1200, 900, NULL, 0);
38         SkPath p;
39         SkRect r = {
40             SkIntToScalar(100),
41             SkIntToScalar(200),
42             SkIntToScalar(400),
43             SkIntToScalar(700)
44         };
45         p.addRoundRect(r, SkIntToScalar(50), SkIntToScalar(50));
46         rec->clipPath(p, SkRegion::kIntersect_Op, true);
47         rec->translate(SkIntToScalar(250), SkIntToScalar(250));
48         rec->clipPath(p, SkRegion::kIntersect_Op, true);
49         rec->drawColor(0xffff0000);
50         SkAutoTUnref<SkPicture> pict(recorder.endRecording());
51
52         canvas->setAllowSimplifyClip(true);
53         canvas->save();
54         canvas->drawPicture(pict);
55         canvas->restore();
56
57         canvas->setAllowSimplifyClip(false);
58         canvas->save();
59         canvas->translate(SkIntToScalar(1200 / 2), 0);
60         canvas->drawPicture(pict);
61         canvas->restore();
62     }
63
64 private:
65     typedef GM INHERITED;
66 };
67
68 //////////////////////////////////////////////////////////////////////////////
69
70 static GM* MyFactory(void*) { return new PathOpsSkpClipGM; }
71 static GMRegistry reg(MyFactory);
72
73 }