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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 SkBlurMaskFilterImpl(SkReadBuffer&); | 101 SkBlurMaskFilterImpl(SkReadBuffer&); |
102 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; | 102 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
103 | 103 |
104 SkScalar computeXformedSigma(const SkMatrix& ctm) const { | 104 SkScalar computeXformedSigma(const SkMatrix& ctm) const { |
105 bool ignoreTransform = SkToBool(fBlurFlags & SkBlurMaskFilter::kIgnoreTr
ansform_BlurFlag); | 105 bool ignoreTransform = SkToBool(fBlurFlags & SkBlurMaskFilter::kIgnoreTr
ansform_BlurFlag); |
106 | 106 |
107 SkScalar xformedSigma = ignoreTransform ? fSigma : ctm.mapRadius(fSigma)
; | 107 SkScalar xformedSigma = ignoreTransform ? fSigma : ctm.mapRadius(fSigma)
; |
108 return SkMinScalar(xformedSigma, kMAX_BLUR_SIGMA); | 108 return SkMinScalar(xformedSigma, kMAX_BLUR_SIGMA); |
109 } | 109 } |
110 | 110 |
| 111 friend class SkBlurMaskFilter; |
| 112 |
111 typedef SkMaskFilter INHERITED; | 113 typedef SkMaskFilter INHERITED; |
112 }; | 114 }; |
113 | 115 |
114 const SkScalar SkBlurMaskFilterImpl::kMAX_BLUR_SIGMA = SkIntToScalar(128); | 116 const SkScalar SkBlurMaskFilterImpl::kMAX_BLUR_SIGMA = SkIntToScalar(128); |
115 | 117 |
116 SkMaskFilter* SkBlurMaskFilter::Create(SkBlurStyle style, SkScalar sigma, uint32
_t flags) { | 118 SkMaskFilter* SkBlurMaskFilter::Create(SkBlurStyle style, SkScalar sigma, uint32
_t flags) { |
117 if (!SkScalarIsFinite(sigma) || sigma <= 0) { | 119 if (!SkScalarIsFinite(sigma) || sigma <= 0) { |
118 return NULL; | 120 return NULL; |
119 } | 121 } |
120 if ((unsigned)style > (unsigned)kLastEnum_SkBlurStyle) { | 122 if ((unsigned)style > (unsigned)kLastEnum_SkBlurStyle) { |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 } | 517 } |
516 | 518 |
517 void SkBlurMaskFilterImpl::computeFastBounds(const SkRect& src, | 519 void SkBlurMaskFilterImpl::computeFastBounds(const SkRect& src, |
518 SkRect* dst) const { | 520 SkRect* dst) const { |
519 SkScalar pad = 3.0f * fSigma; | 521 SkScalar pad = 3.0f * fSigma; |
520 | 522 |
521 dst->set(src.fLeft - pad, src.fTop - pad, | 523 dst->set(src.fLeft - pad, src.fTop - pad, |
522 src.fRight + pad, src.fBottom + pad); | 524 src.fRight + pad, src.fBottom + pad); |
523 } | 525 } |
524 | 526 |
525 SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkReadBuffer& buffer) | 527 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
526 : SkMaskFilter(buffer) { | 528 SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkReadBuffer& buffer) : SkMaskFilter(
buffer) { |
527 fSigma = buffer.readScalar(); | 529 fSigma = buffer.readScalar(); |
528 fBlurStyle = (SkBlurStyle)buffer.readInt(); | 530 fBlurStyle = (SkBlurStyle)buffer.readInt(); |
529 fBlurFlags = buffer.readUInt() & SkBlurMaskFilter::kAll_BlurFlag; | 531 fBlurFlags = buffer.readUInt() & SkBlurMaskFilter::kAll_BlurFlag; |
530 SkASSERT(fSigma > 0); | 532 SkASSERT(fSigma > 0); |
531 SkASSERT((unsigned)fBlurStyle <= kLastEnum_SkBlurStyle); | 533 SkASSERT((unsigned)fBlurStyle <= kLastEnum_SkBlurStyle); |
532 } | 534 } |
| 535 #endif |
| 536 |
| 537 SkFlattenable* SkBlurMaskFilterImpl::CreateProc(SkReadBuffer& buffer) { |
| 538 const SkScalar sigma = buffer.readScalar(); |
| 539 const unsigned style = buffer.readUInt(); |
| 540 const unsigned flags = buffer.readUInt(); |
| 541 if (style <= kLastEnum_SkBlurStyle) { |
| 542 return SkBlurMaskFilter::Create((SkBlurStyle)style, sigma, flags); |
| 543 } |
| 544 return NULL; |
| 545 } |
533 | 546 |
534 void SkBlurMaskFilterImpl::flatten(SkWriteBuffer& buffer) const { | 547 void SkBlurMaskFilterImpl::flatten(SkWriteBuffer& buffer) const { |
535 this->INHERITED::flatten(buffer); | |
536 buffer.writeScalar(fSigma); | 548 buffer.writeScalar(fSigma); |
537 buffer.writeInt(fBlurStyle); | 549 buffer.writeUInt(fBlurStyle); |
538 buffer.writeUInt(fBlurFlags); | 550 buffer.writeUInt(fBlurFlags); |
539 } | 551 } |
540 | 552 |
541 #if SK_SUPPORT_GPU | 553 #if SK_SUPPORT_GPU |
542 | 554 |
543 class GrGLRectBlurEffect; | 555 class GrGLRectBlurEffect; |
544 | 556 |
545 class GrRectBlurEffect : public GrEffect { | 557 class GrRectBlurEffect : public GrEffect { |
546 public: | 558 public: |
547 virtual ~GrRectBlurEffect(); | 559 virtual ~GrRectBlurEffect(); |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1204 } else { | 1216 } else { |
1205 str->append("None"); | 1217 str->append("None"); |
1206 } | 1218 } |
1207 str->append("))"); | 1219 str->append("))"); |
1208 } | 1220 } |
1209 #endif | 1221 #endif |
1210 | 1222 |
1211 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) | 1223 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) |
1212 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) | 1224 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) |
1213 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1225 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |