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 | 7 |
8 #include "SkDraw.h" | 8 #include "SkDraw.h" |
9 #include "SkBlitter.h" | 9 #include "SkBlitter.h" |
10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 } | 806 } |
807 | 807 |
808 const SkMatrix& matrix = *fMatrix; | 808 const SkMatrix& matrix = *fMatrix; |
809 SkRect devRect; | 809 SkRect devRect; |
810 | 810 |
811 // transform rect into devRect | 811 // transform rect into devRect |
812 matrix.mapPoints(rect_points(devRect), rect_points(rect), 2); | 812 matrix.mapPoints(rect_points(devRect), rect_points(rect), 2); |
813 devRect.sort(); | 813 devRect.sort(); |
814 | 814 |
815 // look for the quick exit, before we build a blitter | 815 // look for the quick exit, before we build a blitter |
816 SkIRect ir; | 816 SkIRect ir = devRect.roundOut(); |
817 devRect.roundOut(&ir); | |
818 if (paint.getStyle() != SkPaint::kFill_Style) { | 817 if (paint.getStyle() != SkPaint::kFill_Style) { |
819 // extra space for hairlines | 818 // extra space for hairlines |
820 if (paint.getStrokeWidth() == 0) { | 819 if (paint.getStrokeWidth() == 0) { |
821 ir.outset(1, 1); | 820 ir.outset(1, 1); |
822 } else { | 821 } else { |
823 SkScalar radius = SkScalarHalf(paint.getStrokeWidth()); | 822 SkScalar radius = SkScalarHalf(paint.getStrokeWidth()); |
824 ir.outset(radius, radius); | 823 ir.outset(radius, radius); |
825 } | 824 } |
826 } | 825 } |
827 if (fRC->quickReject(ir)) { | 826 if (fRC->quickReject(ir)) { |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1203 SkIntToScalar(bitmap.height())); | 1202 SkIntToScalar(bitmap.height())); |
1204 c.drawRect(rr, install.paintWithShader()); | 1203 c.drawRect(rr, install.paintWithShader()); |
1205 } | 1204 } |
1206 this->drawDevMask(mask, paint); | 1205 this->drawDevMask(mask, paint); |
1207 } | 1206 } |
1208 } | 1207 } |
1209 | 1208 |
1210 static bool clipped_out(const SkMatrix& m, const SkRasterClip& c, | 1209 static bool clipped_out(const SkMatrix& m, const SkRasterClip& c, |
1211 const SkRect& srcR) { | 1210 const SkRect& srcR) { |
1212 SkRect dstR; | 1211 SkRect dstR; |
1213 SkIRect devIR; | |
1214 | |
1215 m.mapRect(&dstR, srcR); | 1212 m.mapRect(&dstR, srcR); |
1216 dstR.roundOut(&devIR); | 1213 return c.quickReject(dstR.roundOut()); |
1217 return c.quickReject(devIR); | |
1218 } | 1214 } |
1219 | 1215 |
1220 static bool clipped_out(const SkMatrix& matrix, const SkRasterClip& clip, | 1216 static bool clipped_out(const SkMatrix& matrix, const SkRasterClip& clip, |
1221 int width, int height) { | 1217 int width, int height) { |
1222 SkRect r; | 1218 SkRect r; |
1223 r.set(0, 0, SkIntToScalar(width), SkIntToScalar(height)); | 1219 r.set(0, 0, SkIntToScalar(width), SkIntToScalar(height)); |
1224 return clipped_out(matrix, clip, r); | 1220 return clipped_out(matrix, clip, r); |
1225 } | 1221 } |
1226 | 1222 |
1227 static bool clipHandlesSprite(const SkRasterClip& clip, int x, int y, | 1223 static bool clipHandlesSprite(const SkRasterClip& clip, int x, int y, |
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2275 #endif | 2271 #endif |
2276 | 2272 |
2277 ////////////////////////////////////////////////////////////////////////////////
//////////////// | 2273 ////////////////////////////////////////////////////////////////////////////////
//////////////// |
2278 | 2274 |
2279 #include "SkPath.h" | 2275 #include "SkPath.h" |
2280 #include "SkDraw.h" | 2276 #include "SkDraw.h" |
2281 #include "SkRegion.h" | 2277 #include "SkRegion.h" |
2282 #include "SkBlitter.h" | 2278 #include "SkBlitter.h" |
2283 | 2279 |
2284 static bool compute_bounds(const SkPath& devPath, const SkIRect* clipBounds, | 2280 static bool compute_bounds(const SkPath& devPath, const SkIRect* clipBounds, |
2285 const SkMaskFilter* filter, const SkMatrix* filterMatrix, | 2281 const SkMaskFilter* filter, const SkMatrix* filterMat
rix, |
2286 SkIRect* bounds) { | 2282 SkIRect* bounds) { |
2287 if (devPath.isEmpty()) { | 2283 if (devPath.isEmpty()) { |
2288 return false; | 2284 return false; |
2289 } | 2285 } |
2290 | 2286 |
2291 // init our bounds from the path | 2287 // init our bounds from the path |
2292 { | 2288 { |
2293 SkRect pathBounds = devPath.getBounds(); | 2289 SkRect pathBounds = devPath.getBounds(); |
2294 pathBounds.inset(-SK_ScalarHalf, -SK_ScalarHalf); | 2290 pathBounds.inset(-SK_ScalarHalf, -SK_ScalarHalf); |
2295 pathBounds.roundOut(bounds); | 2291 pathBounds.roundOut(bounds); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2374 mask->fImage = SkMask::AllocImage(size); | 2370 mask->fImage = SkMask::AllocImage(size); |
2375 memset(mask->fImage, 0, mask->computeImageSize()); | 2371 memset(mask->fImage, 0, mask->computeImageSize()); |
2376 } | 2372 } |
2377 | 2373 |
2378 if (SkMask::kJustComputeBounds_CreateMode != mode) { | 2374 if (SkMask::kJustComputeBounds_CreateMode != mode) { |
2379 draw_into_mask(*mask, devPath, style); | 2375 draw_into_mask(*mask, devPath, style); |
2380 } | 2376 } |
2381 | 2377 |
2382 return true; | 2378 return true; |
2383 } | 2379 } |
OLD | NEW |