OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "SkBlurMaskFilter.h" | 9 #include "SkBlurMaskFilter.h" |
10 #include "SkBlurMask.h" | 10 #include "SkBlurMask.h" |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 | 180 |
181 return SkBlurMask::BlurRRect(sigma, dst, r, fBlurStyle, | 181 return SkBlurMask::BlurRRect(sigma, dst, r, fBlurStyle, |
182 margin, createMode); | 182 margin, createMode); |
183 } | 183 } |
184 | 184 |
185 #include "SkCanvas.h" | 185 #include "SkCanvas.h" |
186 | 186 |
187 static bool prepare_to_draw_into_mask(const SkRect& bounds, SkMask* mask) { | 187 static bool prepare_to_draw_into_mask(const SkRect& bounds, SkMask* mask) { |
188 SkASSERT(mask != NULL); | 188 SkASSERT(mask != NULL); |
189 | 189 |
190 bounds.roundOut(&mask->fBounds); | 190 mask->fBounds = bounds.roundOut(); |
191 mask->fRowBytes = SkAlign4(mask->fBounds.width()); | 191 mask->fRowBytes = SkAlign4(mask->fBounds.width()); |
192 mask->fFormat = SkMask::kA8_Format; | 192 mask->fFormat = SkMask::kA8_Format; |
193 const size_t size = mask->computeImageSize(); | 193 const size_t size = mask->computeImageSize(); |
194 mask->fImage = SkMask::AllocImage(size); | 194 mask->fImage = SkMask::AllocImage(size); |
195 if (NULL == mask->fImage) { | 195 if (NULL == mask->fImage) { |
196 return false; | 196 return false; |
197 } | 197 } |
198 | 198 |
199 // FIXME: use sk_calloc in AllocImage? | 199 // FIXME: use sk_calloc in AllocImage? |
200 sk_bzero(mask->fImage, size); | 200 sk_bzero(mask->fImage, size); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 } | 353 } |
354 | 354 |
355 // TODO: take clipBounds into account to limit our coordinates up front | 355 // TODO: take clipBounds into account to limit our coordinates up front |
356 // for now, just skip too-large src rects (to take the old code path). | 356 // for now, just skip too-large src rects (to take the old code path). |
357 if (rect_exceeds(rrect.rect(), SkIntToScalar(32767))) { | 357 if (rect_exceeds(rrect.rect(), SkIntToScalar(32767))) { |
358 return kUnimplemented_FilterReturn; | 358 return kUnimplemented_FilterReturn; |
359 } | 359 } |
360 | 360 |
361 SkIPoint margin; | 361 SkIPoint margin; |
362 SkMask srcM, dstM; | 362 SkMask srcM, dstM; |
363 rrect.rect().roundOut(&srcM.fBounds); | 363 srcM.fBounds = rrect.rect().roundOut(); |
364 srcM.fImage = NULL; | 364 srcM.fImage = NULL; |
365 srcM.fFormat = SkMask::kA8_Format; | 365 srcM.fFormat = SkMask::kA8_Format; |
366 srcM.fRowBytes = 0; | 366 srcM.fRowBytes = 0; |
367 | 367 |
368 bool filterResult = false; | 368 bool filterResult = false; |
369 if (c_analyticBlurRRect) { | 369 if (c_analyticBlurRRect) { |
370 // special case for fast round rect blur | 370 // special case for fast round rect blur |
371 // don't actually do the blur the first time, just compute the correct s
ize | 371 // don't actually do the blur the first time, just compute the correct s
ize |
372 filterResult = this->filterRRectMask(&dstM, rrect, matrix, &margin, | 372 filterResult = this->filterRRectMask(&dstM, rrect, matrix, &margin, |
373 SkMask::kJustComputeBounds_CreateMod
e); | 373 SkMask::kJustComputeBounds_CreateMod
e); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 } | 469 } |
470 | 470 |
471 // TODO: take clipBounds into account to limit our coordinates up front | 471 // TODO: take clipBounds into account to limit our coordinates up front |
472 // for now, just skip too-large src rects (to take the old code path). | 472 // for now, just skip too-large src rects (to take the old code path). |
473 if (rect_exceeds(rects[0], SkIntToScalar(32767))) { | 473 if (rect_exceeds(rects[0], SkIntToScalar(32767))) { |
474 return kUnimplemented_FilterReturn; | 474 return kUnimplemented_FilterReturn; |
475 } | 475 } |
476 | 476 |
477 SkIPoint margin; | 477 SkIPoint margin; |
478 SkMask srcM, dstM; | 478 SkMask srcM, dstM; |
479 rects[0].roundOut(&srcM.fBounds); | 479 srcM.fBounds = rects[0].roundOut(); |
480 srcM.fImage = NULL; | 480 srcM.fImage = NULL; |
481 srcM.fFormat = SkMask::kA8_Format; | 481 srcM.fFormat = SkMask::kA8_Format; |
482 srcM.fRowBytes = 0; | 482 srcM.fRowBytes = 0; |
483 | 483 |
484 bool filterResult = false; | 484 bool filterResult = false; |
485 if (count == 1 && c_analyticBlurNinepatch) { | 485 if (count == 1 && c_analyticBlurNinepatch) { |
486 // special case for fast rect blur | 486 // special case for fast rect blur |
487 // don't actually do the blur the first time, just compute the correct s
ize | 487 // don't actually do the blur the first time, just compute the correct s
ize |
488 filterResult = this->filterRectMask(&dstM, rects[0], matrix, &margin, | 488 filterResult = this->filterRectMask(&dstM, rects[0], matrix, &margin, |
489 SkMask::kJustComputeBounds_CreateMod
e); | 489 SkMask::kJustComputeBounds_CreateMod
e); |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 } else { | 1279 } else { |
1280 str->append("None"); | 1280 str->append("None"); |
1281 } | 1281 } |
1282 str->append("))"); | 1282 str->append("))"); |
1283 } | 1283 } |
1284 #endif | 1284 #endif |
1285 | 1285 |
1286 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) | 1286 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) |
1287 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) | 1287 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) |
1288 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1288 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |