add roundOut that returns its result

BUG=skia:

Review URL: https://codereview.chromium.org/742663002
diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp
index 5204fdb..9df7c9b 100644
--- a/src/core/SkBitmapDevice.cpp
+++ b/src/core/SkBitmapDevice.cpp
@@ -260,8 +260,7 @@
 
         // since we may need to clamp to the borders of the src rect within
         // the bitmap, we extract a subset.
-        SkIRect srcIR;
-        tmpSrc.roundOut(&srcIR);
+        const SkIRect srcIR = tmpSrc.roundOut();
         if(bitmap.pixelRef()->getTexture()) {
             // Accelerated source canvas, don't use extractSubset but readPixels to get the subset.
             // This way, the pixels are copied in CPU memory instead of GPU memory.
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 8d17be7..4fda7a3 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1586,9 +1586,7 @@
     if (fMCRec->fMatrix.hasPerspective()) {
         SkRect dst;
         fMCRec->fMatrix.mapRect(&dst, rect);
-        SkIRect idst;
-        dst.roundOut(&idst);
-        return !SkIRect::Intersects(idst, fMCRec->fRasterClip.getBounds());
+        return !SkIRect::Intersects(dst.roundOut(), fMCRec->fRasterClip.getBounds());
     } else {
         const SkRect& clipR = this->getLocalClipBounds();
 
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index 95d348e..7ccd258 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -813,8 +813,7 @@
     devRect.sort();
 
     // look for the quick exit, before we build a blitter
-    SkIRect ir;
-    devRect.roundOut(&ir);
+    SkIRect ir = devRect.roundOut();
     if (paint.getStyle() != SkPaint::kFill_Style) {
         // extra space for hairlines
         if (paint.getStrokeWidth() == 0) {
@@ -1210,11 +1209,8 @@
 static bool clipped_out(const SkMatrix& m, const SkRasterClip& c,
                         const SkRect& srcR) {
     SkRect  dstR;
-    SkIRect devIR;
-
     m.mapRect(&dstR, srcR);
-    dstR.roundOut(&devIR);
-    return c.quickReject(devIR);
+    return c.quickReject(dstR.roundOut());
 }
 
 static bool clipped_out(const SkMatrix& matrix, const SkRasterClip& clip,
@@ -2282,7 +2278,7 @@
 #include "SkBlitter.h"
 
 static bool compute_bounds(const SkPath& devPath, const SkIRect* clipBounds,
-                       const SkMaskFilter* filter, const SkMatrix* filterMatrix,
+                           const SkMaskFilter* filter, const SkMatrix* filterMatrix,
                            SkIRect* bounds) {
     if (devPath.isEmpty()) {
         return false;
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index 8f49a06..79f04b8 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -290,8 +290,7 @@
     srcBounds.offset(srcOffset);
     SkRect cropRect;
     ctx.ctm().mapRect(&cropRect, fCropRect.rect());
-    SkIRect cropRectI;
-    cropRect.roundOut(&cropRectI);
+    const SkIRect cropRectI = cropRect.roundOut();
     uint32_t flags = fCropRect.flags();
     if (flags & CropRect::kHasLeft_CropEdge) srcBounds.fLeft = cropRectI.fLeft;
     if (flags & CropRect::kHasTop_CropEdge) srcBounds.fTop = cropRectI.fTop;
@@ -311,8 +310,7 @@
     srcBounds.offset(*srcOffset);
     SkRect cropRect;
     ctx.ctm().mapRect(&cropRect, fCropRect.rect());
-    SkIRect cropRectI;
-    cropRect.roundOut(&cropRectI);
+    const SkIRect cropRectI = cropRect.roundOut();
     uint32_t flags = fCropRect.flags();
     *bounds = srcBounds;
     if (flags & CropRect::kHasLeft_CropEdge) bounds->fLeft = cropRectI.fLeft;
diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp
index 86f303c..28c9a38 100644
--- a/src/core/SkMaskFilter.cpp
+++ b/src/core/SkMaskFilter.cpp
@@ -337,7 +337,7 @@
     SkMask  srcM, dstM;
 
     srcM.fImage = NULL;
-    src.roundOut(&srcM.fBounds);
+    srcM.fBounds = src.roundOut();
     srcM.fRowBytes = 0;
     srcM.fFormat = SkMask::kA8_Format;
 
diff --git a/src/core/SkRasterClip.cpp b/src/core/SkRasterClip.cpp
index f820c5a..35197c1 100644
--- a/src/core/SkRasterClip.cpp
+++ b/src/core/SkRasterClip.cpp
@@ -76,9 +76,6 @@
 /////////////////////////////////////////////////////////////////////////////////////
 
 bool SkRasterClip::setConservativeRect(const SkRect& r, const SkIRect& clipR, bool isInverse) {
-    SkIRect ir;
-    r.roundOut(&ir);
-
     SkRegion::Op op;
     if (isInverse) {
         op = SkRegion::kDifference_Op;
@@ -86,7 +83,7 @@
         op = SkRegion::kIntersect_Op;
     }
     fBW.setRect(clipR);
-    fBW.op(ir, op);
+    fBW.op(r.roundOut(), op);
     return this->updateCacheAndReturnNonEmpty();
 }
 
@@ -178,7 +175,7 @@
                 ir = SkIRect::MakeSize(size);
                 break;
             case kContinue_MutateResult:
-                path.getBounds().roundOut(&ir);
+                ir = path.getBounds().roundOut();
                 break;
         }
         return this->op(ir, op);
@@ -287,7 +284,7 @@
                 ir = SkIRect::MakeSize(size);
                 break;
             case kContinue_MutateResult:
-                r.roundOut(&ir);
+                ir = r.roundOut();
                 break;
         }
         return this->op(ir, op);
diff --git a/src/core/SkScalerContext.cpp b/src/core/SkScalerContext.cpp
index 8cb416e..20413a7 100644
--- a/src/core/SkScalerContext.cpp
+++ b/src/core/SkScalerContext.cpp
@@ -167,8 +167,7 @@
             }
         } else {
             // just use devPath
-            SkIRect ir;
-            devPath.getBounds().roundOut(&ir);
+            const SkIRect ir = devPath.getBounds().roundOut();
 
             if (ir.isEmpty() || !ir.is16Bit()) {
                 goto SK_ERROR;
diff --git a/src/core/SkScan_Antihair.cpp b/src/core/SkScan_Antihair.cpp
index 1ad68e5..67c8917 100644
--- a/src/core/SkScan_Antihair.cpp
+++ b/src/core/SkScan_Antihair.cpp
@@ -854,8 +854,7 @@
             return;
         }
 
-        SkIRect outerBounds;
-        newR.roundOut(&outerBounds);
+        const SkIRect outerBounds = newR.roundOut();
 
         if (clip->isRect()) {
             antifillrect(newR, blitter);
diff --git a/src/core/SkScan_Hairline.cpp b/src/core/SkScan_Hairline.cpp
index 1e7e762..7ca54ea 100644
--- a/src/core/SkScan_Hairline.cpp
+++ b/src/core/SkScan_Hairline.cpp
@@ -377,14 +377,12 @@
     } else {
         const SkRegion* clipRgn = NULL;
         SkRect r;
-        SkIRect ir;
         r.set(p0.fX, p0.fY, p1.fX, p1.fY);
         r.sort();
         r.inset(-SK_ScalarHalf, -SK_ScalarHalf);
-        r.roundOut(&ir);
 
         SkAAClipBlitterWrapper wrap;
-        if (!clip.quickContains(ir)) {
+        if (!clip.quickContains(r.roundOut())) {
             wrap.init(clip, blitter);
             blitter = wrap.getBlitter();
             clipRgn = &wrap.getRgn();
diff --git a/src/effects/SkBitmapSource.cpp b/src/effects/SkBitmapSource.cpp
index 0d9315b..1d8078d 100644
--- a/src/effects/SkBitmapSource.cpp
+++ b/src/effects/SkBitmapSource.cpp
@@ -67,9 +67,8 @@
         offset->fX = offset->fY = 0;
         return true;
     }
-    SkIRect dstIRect;
-    dstRect.roundOut(&dstIRect);
 
+    const SkIRect dstIRect = dstRect.roundOut();
     SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(dstIRect.width(), dstIRect.height()));
     if (NULL == device.get()) {
         return false;
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp
index 1612e3d..4601ebb 100644
--- a/src/effects/SkBlurMaskFilter.cpp
+++ b/src/effects/SkBlurMaskFilter.cpp
@@ -187,7 +187,7 @@
 static bool prepare_to_draw_into_mask(const SkRect& bounds, SkMask* mask) {
     SkASSERT(mask != NULL);
 
-    bounds.roundOut(&mask->fBounds);
+    mask->fBounds = bounds.roundOut();
     mask->fRowBytes = SkAlign4(mask->fBounds.width());
     mask->fFormat = SkMask::kA8_Format;
     const size_t size = mask->computeImageSize();
@@ -360,7 +360,7 @@
 
     SkIPoint margin;
     SkMask  srcM, dstM;
-    rrect.rect().roundOut(&srcM.fBounds);
+    srcM.fBounds = rrect.rect().roundOut();
     srcM.fImage = NULL;
     srcM.fFormat = SkMask::kA8_Format;
     srcM.fRowBytes = 0;
@@ -476,7 +476,7 @@
 
     SkIPoint margin;
     SkMask  srcM, dstM;
-    rects[0].roundOut(&srcM.fBounds);
+    srcM.fBounds = rects[0].roundOut();
     srcM.fImage = NULL;
     srcM.fFormat = SkMask::kA8_Format;
     srcM.fRowBytes = 0;
diff --git a/src/effects/SkGpuBlurUtils.cpp b/src/effects/SkGpuBlurUtils.cpp
index 975b704..23128e0 100644
--- a/src/effects/SkGpuBlurUtils.cpp
+++ b/src/effects/SkGpuBlurUtils.cpp
@@ -226,8 +226,7 @@
         SkTSwap(dstTexture, tempTexture);
     }
 
-    SkIRect srcIRect;
-    srcRect.roundOut(&srcIRect);
+    const SkIRect srcIRect = srcRect.roundOut();
 
     // For really small blurs(Certainly no wider than 5x5 on desktop gpus) it is faster to just
     // launch a single non separable kernel vs two launches
diff --git a/src/effects/SkMatrixImageFilter.cpp b/src/effects/SkMatrixImageFilter.cpp
index 34231ba..8b07dd4 100644
--- a/src/effects/SkMatrixImageFilter.cpp
+++ b/src/effects/SkMatrixImageFilter.cpp
@@ -127,8 +127,7 @@
     matrix.postConcat(ctm);
     SkRect floatBounds;
     matrix.mapRect(&floatBounds, SkRect::Make(src));
-    SkIRect bounds;
-    floatBounds.roundOut(&bounds);
+    SkIRect bounds = floatBounds.roundOut();
     if (getInput(0) && !getInput(0)->filterBounds(bounds, ctm, &bounds)) {
         return false;
     }
diff --git a/src/effects/SkPictureImageFilter.cpp b/src/effects/SkPictureImageFilter.cpp
index 30fbac1..0c95b32 100644
--- a/src/effects/SkPictureImageFilter.cpp
+++ b/src/effects/SkPictureImageFilter.cpp
@@ -81,9 +81,8 @@
     }
 
     SkRect floatBounds;
-    SkIRect bounds;
     ctx.ctm().mapRect(&floatBounds, fCropRect);
-    floatBounds.roundOut(&bounds);
+    SkIRect bounds = floatBounds.roundOut();
     if (!bounds.intersect(ctx.clipBounds())) {
         return false;
     }
diff --git a/src/effects/SkTileImageFilter.cpp b/src/effects/SkTileImageFilter.cpp
index bebf8f0..04c62d0 100644
--- a/src/effects/SkTileImageFilter.cpp
+++ b/src/effects/SkTileImageFilter.cpp
@@ -36,8 +36,7 @@
 
     SkRect dstRect;
     ctx.ctm().mapRect(&dstRect, fDstRect);
-    SkIRect dstIRect;
-    dstRect.roundOut(&dstIRect);
+    const SkIRect dstIRect = dstRect.roundOut();
     int w = dstIRect.width();
     int h = dstIRect.height();
     if (!fSrcRect.width() || !fSrcRect.height() || !w || !h) {
diff --git a/src/utils/debugger/SkDebugCanvas.cpp b/src/utils/debugger/SkDebugCanvas.cpp
index b07b383..95256e7 100644
--- a/src/utils/debugger/SkDebugCanvas.cpp
+++ b/src/utils/debugger/SkDebugCanvas.cpp
@@ -42,8 +42,7 @@
     largeIRect.inset(1024, 1024);
     SkRect large = SkRect::Make(largeIRect);
 #ifdef SK_DEBUG
-    large.roundOut(&largeIRect);
-    SkASSERT(!largeIRect.isEmpty());
+    SkASSERT(!large.roundOut().isEmpty());
 #endif
     // call the base class' version to avoid adding a draw command
     this->INHERITED::onClipRect(large, SkRegion::kReplace_Op, kHard_ClipEdgeStyle);