aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-10 12:57:12 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-10 12:57:12 +0000
commit1c04bf97b6245b55ac58c2f3902f8ca95ca91c3d (patch)
tree1fda597e041c3f337c694358a1cf45adf88d18d4 /samplecode
parent07faed110275048c83a55ae39042da2c9d916108 (diff)
implement region-ops
git-svn-id: http://skia.googlecode.com/svn/trunk@2436 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleAAClip2.cpp43
1 files changed, 26 insertions, 17 deletions
diff --git a/samplecode/SampleAAClip2.cpp b/samplecode/SampleAAClip2.cpp
index bdb3741704..b3d7b6d3c7 100644
--- a/samplecode/SampleAAClip2.cpp
+++ b/samplecode/SampleAAClip2.cpp
@@ -57,22 +57,19 @@ public:
this->setBGColor(0xFFDDDDDD);
}
- void build_rgn(SkAAClip* clip, SkRegion::Op op) {
- clip->setRect(fBase);
-#if 0
- SkIRect r = fBase;
- r.offset(75, 20);
- rgn->op(r, SkRegion::kUnion_Op);
-#endif
-
+ static void setAAClip(SkAAClip* clip, const SkIRect& rect) {
SkRect r;
- r.set(fRect);
+ r.set(rect);
SkPath path;
- path.addOval(r);
+ path.addRoundRect(r, SkIntToScalar(5), SkIntToScalar(5));
+ clip->setPath(path);
+ }
+
+ void build_rgn(SkAAClip* clip, SkRegion::Op op) {
+ setAAClip(clip, fBase);
+
SkAAClip clip2;
- clip2.setPath(path);
- // hack
- op = SkRegion::kIntersect_Op;
+ setAAClip(&clip2, fRect);
clip->op(clip2, op);
}
@@ -101,6 +98,17 @@ protected:
canvas->drawRect(r, paint);
}
+ static void outer_frame(SkCanvas* canvas, const SkIRect& rect) {
+ SkRect r;
+ r.set(rect);
+ r.inset(-SK_ScalarHalf, -SK_ScalarHalf);
+
+ SkPaint paint;
+ paint.setColor(SK_ColorGRAY);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRect(r, paint);
+ }
+
void drawRgnOped(SkCanvas* canvas, SkRegion::Op op, SkColor color) {
SkAAClip clip;
@@ -115,6 +123,11 @@ protected:
paint.setStyle(SkPaint::kStroke_Style);
paint.setColor(color);
paint_rgn(canvas, clip, paint);
+
+ SkAAClip clip2(clip);
+ clip2.offset(0, 80);
+ outer_frame(canvas, clip2.getBounds());
+ paint_rgn(canvas, clip2, paint);
}
virtual void onDrawContent(SkCanvas* canvas) {
@@ -135,10 +148,6 @@ protected:
textPaint.setTextSize(SK_Scalar1*24);
this->drawOrig(canvas, false);
- canvas->save();
- canvas->translate(SkIntToScalar(200), 0);
- this->drawRgnOped(canvas, SkRegion::kUnion_Op, SK_ColorBLACK);
- canvas->restore();
canvas->translate(0, SkIntToScalar(200));