Index: src/effects/SkTileImageFilter.cpp |
diff --git a/src/effects/SkTileImageFilter.cpp b/src/effects/SkTileImageFilter.cpp |
index ca4c15d4191900fc644cdb3961096bcb8b4bf125..5d74295fd8373057aa44b51d608b1c7accac6c99 100644 |
--- a/src/effects/SkTileImageFilter.cpp |
+++ b/src/effects/SkTileImageFilter.cpp |
@@ -9,6 +9,7 @@ |
#include "SkBitmap.h" |
#include "SkCanvas.h" |
#include "SkDevice.h" |
+#include "SkOffsetImageFilter.h" |
#include "SkReadBuffer.h" |
#include "SkWriteBuffer.h" |
#include "SkMatrix.h" |
@@ -21,6 +22,17 @@ SkImageFilter* SkTileImageFilter::Create(const SkRect& srcRect, const SkRect& ds |
if (!SkIsValidRect(srcRect) || !SkIsValidRect(dstRect)) { |
return nullptr; |
} |
robertphillips
2016/01/12 14:18:29
Can this fit on one line ?
Stephen White
2016/01/12 14:23:12
Done.
|
+ if (srcRect.width() == dstRect.width() && |
+ srcRect.height() == dstRect.height()) { |
+ SkRect ir = dstRect; |
+ if (!ir.intersect(srcRect)) { |
+ return SkSafeRef(input); |
+ } |
+ CropRect cropRect(ir); |
+ return SkOffsetImageFilter::Create(dstRect.x() - srcRect.x(), |
+ dstRect.y() - srcRect.y(), |
+ input, &cropRect); |
+ } |
return new SkTileImageFilter(srcRect, dstRect, input); |
} |