OLD | NEW |
1 #include "SkKernel33MaskFilter.h" | 1 #include "SkKernel33MaskFilter.h" |
2 #include "SkColorPriv.h" | 2 #include "SkColorPriv.h" |
3 | 3 |
4 SkMask::Format SkKernel33ProcMaskFilter::getFormat() | 4 SkMask::Format SkKernel33ProcMaskFilter::getFormat() |
5 { | 5 { |
6 return SkMask::kA8_Format; | 6 return SkMask::kA8_Format; |
7 } | 7 } |
8 | 8 |
9 bool SkKernel33ProcMaskFilter::filterMask(SkMask* dst, const SkMask& src, const
SkMatrix&, SkIPoint* margin) | 9 bool SkKernel33ProcMaskFilter::filterMask(SkMask* dst, const SkMask& src, const
SkMatrix&, SkIPoint* margin) |
10 { | 10 { |
11 // margin??? | 11 // margin??? |
12 dst->fImage = NULL; | 12 dst->fImage = NULL; |
13 dst->fBounds = src.fBounds; | 13 dst->fBounds = src.fBounds; |
14 dst->fBounds.inset(-1, -1); | 14 dst->fBounds.inset(-1, -1); |
15 dst->fFormat = SkMask::kA8_Format; | 15 dst->fFormat = SkMask::kA8_Format; |
16 | 16 |
17 if (NULL == src.fImage) | 17 if (NULL == src.fImage) |
18 return true; | 18 return true; |
19 | 19 |
20 dst->fRowBytes = dst->fBounds.width(); | 20 dst->fRowBytes = dst->fBounds.width(); |
21 size_t size = dst->computeImageSize(); | 21 size_t size = dst->computeImageSize(); |
| 22 if (0 == size) { |
| 23 return false; // too big to allocate, abort |
| 24 } |
22 dst->fImage = SkMask::AllocImage(size); | 25 dst->fImage = SkMask::AllocImage(size); |
23 | 26 |
24 const int h = src.fBounds.height(); | 27 const int h = src.fBounds.height(); |
25 const int w = src.fBounds.width(); | 28 const int w = src.fBounds.width(); |
26 const int srcRB = src.fRowBytes; | 29 const int srcRB = src.fRowBytes; |
27 const uint8_t* srcImage = src.fImage; | 30 const uint8_t* srcImage = src.fImage; |
28 uint8_t* dstImage = dst->fImage; | 31 uint8_t* dstImage = dst->fImage; |
29 | 32 |
30 uint8_t* srcRows[3]; | 33 uint8_t* srcRows[3]; |
31 uint8_t storage[3][3]; | 34 uint8_t storage[3][3]; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 return new SkKernel33MaskFilter(rb); | 116 return new SkKernel33MaskFilter(rb); |
114 } | 117 } |
115 | 118 |
116 SkKernel33MaskFilter::SkKernel33MaskFilter(SkFlattenableReadBuffer& rb) | 119 SkKernel33MaskFilter::SkKernel33MaskFilter(SkFlattenableReadBuffer& rb) |
117 : SkKernel33ProcMaskFilter(rb) | 120 : SkKernel33ProcMaskFilter(rb) |
118 { | 121 { |
119 rb.read(fKernel, 9 * sizeof(int)); | 122 rb.read(fKernel, 9 * sizeof(int)); |
120 fShift = rb.readS32(); | 123 fShift = rb.readS32(); |
121 } | 124 } |
122 | 125 |
OLD | NEW |