OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 #define __STDC_LIMIT_MACROS | 7 #define __STDC_LIMIT_MACROS |
8 | 8 |
9 #include "SkDraw.h" | 9 #include "SkDraw.h" |
10 #include "SkBlitter.h" | 10 #include "SkBlitter.h" |
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1010 if (scale > 0) { | 1010 if (scale > 0) { |
1011 return scale; | 1011 return scale; |
1012 } | 1012 } |
1013 } | 1013 } |
1014 } | 1014 } |
1015 return 1; | 1015 return 1; |
1016 } | 1016 } |
1017 | 1017 |
1018 void SkDraw::drawDevPath(const SkPath& devPath, const SkPaint& paint, bool drawC overage, | 1018 void SkDraw::drawDevPath(const SkPath& devPath, const SkPaint& paint, bool drawC overage, |
1019 SkBlitter* customBlitter, bool doFill) const { | 1019 SkBlitter* customBlitter, bool doFill) const { |
1020 // Do a quick-reject test, since a looper or other modifier may have moved u s out of range. | |
1021 { | |
1022 // outset 1 in case we're antialiasing | |
1023 SkRect clipBounds = SkRect::Make(fRC->getBounds()).makeOffset(1, 1); | |
f(malita)
2016/07/18 16:34:15
makeOutset()
| |
1024 | |
1025 if (paint.getMaskFilter()) { | |
1026 paint.getMaskFilter()->computeFastBounds(clipBounds, &clipBounds); | |
1027 } | |
1028 if (!clipBounds.intersects(devPath.getBounds())) { | |
1029 return; | |
1030 } | |
1031 } | |
1032 | |
1020 SkBlitter* blitter = nullptr; | 1033 SkBlitter* blitter = nullptr; |
1021 SkAutoBlitterChoose blitterStorage; | 1034 SkAutoBlitterChoose blitterStorage; |
1022 if (nullptr == customBlitter) { | 1035 if (nullptr == customBlitter) { |
1023 blitterStorage.choose(fDst, *fMatrix, paint, drawCoverage); | 1036 blitterStorage.choose(fDst, *fMatrix, paint, drawCoverage); |
1024 blitter = blitterStorage.get(); | 1037 blitter = blitterStorage.get(); |
1025 } else { | 1038 } else { |
1026 blitter = customBlitter; | 1039 blitter = customBlitter; |
1027 } | 1040 } |
1028 | 1041 |
1029 if (paint.getMaskFilter()) { | 1042 if (paint.getMaskFilter()) { |
(...skipping 1054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2084 mask->fImage = SkMask::AllocImage(size); | 2097 mask->fImage = SkMask::AllocImage(size); |
2085 memset(mask->fImage, 0, mask->computeImageSize()); | 2098 memset(mask->fImage, 0, mask->computeImageSize()); |
2086 } | 2099 } |
2087 | 2100 |
2088 if (SkMask::kJustComputeBounds_CreateMode != mode) { | 2101 if (SkMask::kJustComputeBounds_CreateMode != mode) { |
2089 draw_into_mask(*mask, devPath, style); | 2102 draw_into_mask(*mask, devPath, style); |
2090 } | 2103 } |
2091 | 2104 |
2092 return true; | 2105 return true; |
2093 } | 2106 } |
OLD | NEW |