checkpoint -- more support changes for soft clipping
git-svn-id: http://skia.googlecode.com/svn/trunk@2475 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkRasterClip.cpp b/src/core/SkRasterClip.cpp
index d5ce395..5588dfb 100644
--- a/src/core/SkRasterClip.cpp
+++ b/src/core/SkRasterClip.cpp
@@ -12,6 +12,15 @@
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 @@
}
}
+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());