Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Side by Side Diff: src/effects/SkBlurMaskFilter.cpp

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: New serialization method Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
11 #include "SkGpuBlurUtils.h" 11 #include "SkGpuBlurUtils.h"
12 #include "SkFlattenableBuffers.h" 12 #include "SkFlattenableBuffers.h"
13 #include "SkMaskFilter.h" 13 #include "SkMaskFilter.h"
14 #include "SkRTConf.h" 14 #include "SkRTConf.h"
15 #include "SkStringUtils.h" 15 #include "SkStringUtils.h"
16 #include "SkStrokeRec.h" 16 #include "SkStrokeRec.h"
17 17
18 #if SK_SUPPORT_GPU 18 #if SK_SUPPORT_GPU
19 #include "GrContext.h" 19 #include "GrContext.h"
20 #include "GrTexture.h" 20 #include "GrTexture.h"
21 #include "effects/GrSimpleTextureEffect.h" 21 #include "effects/GrSimpleTextureEffect.h"
22 #include "SkGrPixelRef.h" 22 #include "SkGrPixelRef.h"
23 #endif 23 #endif
24 24
25 class SkBlurMaskFilterImpl : public SkMaskFilter { 25 class SkBlurMaskFilterImpl : public SkMaskFilter {
26 typedef SkMaskFilter INHERITED;
27
26 public: 28 public:
27 SkBlurMaskFilterImpl(SkScalar sigma, SkBlurMaskFilter::BlurStyle, uint32_t f lags); 29 SkBlurMaskFilterImpl(SkScalar sigma, SkBlurMaskFilter::BlurStyle, uint32_t f lags);
28 30
29 // overrides from SkMaskFilter 31 // overrides from SkMaskFilter
30 virtual SkMask::Format getFormat() const SK_OVERRIDE; 32 virtual SkMask::Format getFormat() const SK_OVERRIDE;
31 virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, 33 virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
32 SkIPoint* margin) const SK_OVERRIDE; 34 SkIPoint* margin) const SK_OVERRIDE;
33 35
34 #if SK_SUPPORT_GPU 36 #if SK_SUPPORT_GPU
35 virtual bool canFilterMaskGPU(const SkRect& devBounds, 37 virtual bool canFilterMaskGPU(const SkRect& devBounds,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 69
68 SkBlurMaskFilterImpl(SkFlattenableReadBuffer&); 70 SkBlurMaskFilterImpl(SkFlattenableReadBuffer&);
69 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 71 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
70 72
71 SkScalar computeXformedSigma(const SkMatrix& ctm) const { 73 SkScalar computeXformedSigma(const SkMatrix& ctm) const {
72 bool ignoreTransform = SkToBool(fBlurFlags & SkBlurMaskFilter::kIgnoreTr ansform_BlurFlag); 74 bool ignoreTransform = SkToBool(fBlurFlags & SkBlurMaskFilter::kIgnoreTr ansform_BlurFlag);
73 75
74 SkScalar xformedSigma = ignoreTransform ? fSigma : ctm.mapRadius(fSigma) ; 76 SkScalar xformedSigma = ignoreTransform ? fSigma : ctm.mapRadius(fSigma) ;
75 return SkMinScalar(xformedSigma, kMAX_BLUR_SIGMA); 77 return SkMinScalar(xformedSigma, kMAX_BLUR_SIGMA);
76 } 78 }
77
78 typedef SkMaskFilter INHERITED;
79 }; 79 };
80 80
81 const SkScalar SkBlurMaskFilterImpl::kMAX_BLUR_SIGMA = SkIntToScalar(128); 81 const SkScalar SkBlurMaskFilterImpl::kMAX_BLUR_SIGMA = SkIntToScalar(128);
82 82
83 SkMaskFilter* SkBlurMaskFilter::Create(SkScalar radius, 83 SkMaskFilter* SkBlurMaskFilter::Create(SkScalar radius,
84 SkBlurMaskFilter::BlurStyle style, 84 SkBlurMaskFilter::BlurStyle style,
85 uint32_t flags) { 85 uint32_t flags) {
86 // use !(radius > 0) instead of radius <= 0 to reject NaN values 86 // use !(radius > 0) instead of radius <= 0 to reject NaN values
87 if (!(radius > 0) || (unsigned)style >= SkBlurMaskFilter::kBlurStyleCount 87 if (!(radius > 0) || (unsigned)style >= SkBlurMaskFilter::kBlurStyleCount
88 || flags > SkBlurMaskFilter::kAll_BlurFlag) { 88 || flags > SkBlurMaskFilter::kAll_BlurFlag) {
(...skipping 10 matching lines...) Expand all
99 uint32_t flags) { 99 uint32_t flags) {
100 // use !(sigma > 0) instead of sigma <= 0 to reject NaN values 100 // use !(sigma > 0) instead of sigma <= 0 to reject NaN values
101 if (!(sigma > 0) || (unsigned)style >= SkBlurMaskFilter::kBlurStyleCount 101 if (!(sigma > 0) || (unsigned)style >= SkBlurMaskFilter::kBlurStyleCount
102 || flags > SkBlurMaskFilter::kAll_BlurFlag) { 102 || flags > SkBlurMaskFilter::kAll_BlurFlag) {
103 return NULL; 103 return NULL;
104 } 104 }
105 105
106 return SkNEW_ARGS(SkBlurMaskFilterImpl, (sigma, style, flags)); 106 return SkNEW_ARGS(SkBlurMaskFilterImpl, (sigma, style, flags));
107 } 107 }
108 108
109 SkFlattenable::Factory SkBlurMaskFilter::GetFactory(SkFlattenable::Type type) {
110 switch(type) {
111 case SkFlattenable::kSkBlurMaskFilterImpl:
112 return SkBlurMaskFilterImpl::CreateProc;
113 default:
114 break;
115 }
116 return NULL;
117 }
118
119 SkFlattenable::TypeCheck SkBlurMaskFilter::GetTypeCheck(SkFlattenable::Type type ) {
120 switch(type) {
121 case SkFlattenable::kSkBlurMaskFilterImpl:
122 return SkBlurMaskFilterImpl::IsA;
123 default:
124 break;
125 }
126 return NULL;
127 }
128
109 /////////////////////////////////////////////////////////////////////////////// 129 ///////////////////////////////////////////////////////////////////////////////
110 130
111 SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkScalar sigma, 131 SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkScalar sigma,
112 SkBlurMaskFilter::BlurStyle style, 132 SkBlurMaskFilter::BlurStyle style,
113 uint32_t flags) 133 uint32_t flags)
114 : fSigma(sigma), fBlurStyle(style), fBlurFlags(flags) { 134 : fSigma(sigma), fBlurStyle(style), fBlurFlags(flags) {
115 #if 0 135 #if 0
116 fGamma = NULL; 136 fGamma = NULL;
117 if (gammaScale) { 137 if (gammaScale) {
118 fGamma = new U8[256]; 138 fGamma = new U8[256];
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 } else { 493 } else {
474 str->append("None"); 494 str->append("None");
475 } 495 }
476 str->append("))"); 496 str->append("))");
477 } 497 }
478 #endif 498 #endif
479 499
480 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) 500 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter)
481 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) 501 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl)
482 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 502 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698