aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkRasterClip.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-13 15:11:59 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-13 15:11:59 +0000
commit34f7e47a3593911d03307a08e5af625b218ceec3 (patch)
tree4ad0d10c577e26cd84c0f10bf98a8598e5be70c8 /src/core/SkRasterClip.cpp
parente295313f019d36be5303673dd0c58c751e516fdb (diff)
checkpoint -- more support changes for soft clipping
git-svn-id: http://skia.googlecode.com/svn/trunk@2475 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkRasterClip.cpp')
-rw-r--r--src/core/SkRasterClip.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/SkRasterClip.cpp b/src/core/SkRasterClip.cpp
index d5ce395a0e..5588dfbc5c 100644
--- a/src/core/SkRasterClip.cpp
+++ b/src/core/SkRasterClip.cpp
@@ -12,6 +12,15 @@ SkRasterClip::SkRasterClip() {
fIsBW = true;
}
+SkRasterClip::SkRasterClip(const SkRasterClip& src) {
+ fIsBW = src.fIsBW;
+ if (fIsBW) {
+ fBW = src.fBW;
+ } else {
+ fAA = src.fAA;
+ }
+}
+
SkRasterClip::SkRasterClip(const SkIRect& bounds) : fBW(bounds) {
fIsBW = true;
}
@@ -141,6 +150,32 @@ bool SkRasterClip::op(const SkRect& r, SkRegion::Op op, bool doAA) {
}
}
+void SkRasterClip::translate(int dx, int dy, SkRasterClip* dst) const {
+ if (NULL == dst) {
+ return;
+ }
+
+ if (this->isEmpty()) {
+ dst->setEmpty();
+ return;
+ }
+ if (0 == (dx | dy)) {
+ *dst = *this;
+ return;
+ }
+
+ dst->fIsBW = fIsBW;
+ if (fIsBW) {
+ fBW.translate(dx, dy, &dst->fBW);
+ dst->fAA.setEmpty();
+ } else {
+ fAA.translate(dx, dy, &dst->fAA);
+ dst->fBW.setEmpty();
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
const SkRegion& SkRasterClip::forceGetBW() {
if (!fIsBW) {
fBW.setRect(fAA.getBounds());