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

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

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Serialization with strings as ID Created 7 years, 2 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 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
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 "SkDisplacementMapEffect.h" 8 #include "SkDisplacementMapEffect.h"
9 #include "SkFlattenableBuffers.h" 9 #include "SkFlattenableBuffers.h"
10 #include "SkUnPreMultiply.h" 10 #include "SkUnPreMultiply.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 case SkDisplacementMapEffect::kA_ChannelSelectorType: 121 case SkDisplacementMapEffect::kA_ChannelSelectorType:
122 computeDisplacement<SkDisplacementMapEffect::kA_ChannelSelectorType>( 122 computeDisplacement<SkDisplacementMapEffect::kA_ChannelSelectorType>(
123 yChannelSelector, scale, dst, displ, src); 123 yChannelSelector, scale, dst, displ, src);
124 break; 124 break;
125 case SkDisplacementMapEffect::kUnknown_ChannelSelectorType: 125 case SkDisplacementMapEffect::kUnknown_ChannelSelectorType:
126 default: 126 default:
127 SkDEBUGFAIL("Unknown X channel selector"); 127 SkDEBUGFAIL("Unknown X channel selector");
128 } 128 }
129 } 129 }
130 130
131 bool ChannelSelectorTypeIsValid(SkDisplacementMapEffect::ChannelSelectorType cha nnelSelector) {
132 switch (channelSelector) {
133 case SkDisplacementMapEffect::kUnknown_ChannelSelectorType:
134 case SkDisplacementMapEffect::kR_ChannelSelectorType:
135 case SkDisplacementMapEffect::kG_ChannelSelectorType:
136 case SkDisplacementMapEffect::kB_ChannelSelectorType:
137 case SkDisplacementMapEffect::kA_ChannelSelectorType:
138 return true;
139 default:
140 break;
141 }
142 return false;
143 }
144
131 } // end namespace 145 } // end namespace
132 146
133 /////////////////////////////////////////////////////////////////////////////// 147 ///////////////////////////////////////////////////////////////////////////////
134 148
135 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel ector, 149 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel ector,
136 ChannelSelectorType yChannelSel ector, 150 ChannelSelectorType yChannelSel ector,
137 SkScalar scale, 151 SkScalar scale,
138 SkImageFilter* displacement, 152 SkImageFilter* displacement,
139 SkImageFilter* color) 153 SkImageFilter* color)
140 : INHERITED(displacement, color) 154 : INHERITED(displacement, color)
141 , fXChannelSelector(xChannelSelector) 155 , fXChannelSelector(xChannelSelector)
142 , fYChannelSelector(yChannelSelector) 156 , fYChannelSelector(yChannelSelector)
143 , fScale(scale) 157 , fScale(scale)
144 { 158 {
145 } 159 }
146 160
147 SkDisplacementMapEffect::~SkDisplacementMapEffect() { 161 SkDisplacementMapEffect::~SkDisplacementMapEffect() {
148 } 162 }
149 163
150 SkDisplacementMapEffect::SkDisplacementMapEffect(SkFlattenableReadBuffer& buffer ) 164 SkDisplacementMapEffect::SkDisplacementMapEffect(SkFlattenableReadBuffer& buffer )
151 : INHERITED(buffer) 165 : INHERITED(buffer)
152 { 166 {
153 fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt(); 167 fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt();
154 fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt(); 168 fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt();
155 fScale = buffer.readScalar(); 169 fScale = buffer.readScalar();
170 buffer.validate(ChannelSelectorTypeIsValid(fXChannelSelector) &&
171 ChannelSelectorTypeIsValid(fYChannelSelector) &&
172 SkScalarIsFinite(fScale));
156 } 173 }
157 174
158 void SkDisplacementMapEffect::flatten(SkFlattenableWriteBuffer& buffer) const { 175 void SkDisplacementMapEffect::flatten(SkFlattenableWriteBuffer& buffer) const {
159 this->INHERITED::flatten(buffer); 176 this->INHERITED::flatten(buffer);
160 buffer.writeInt((int) fXChannelSelector); 177 buffer.writeInt((int) fXChannelSelector);
161 buffer.writeInt((int) fYChannelSelector); 178 buffer.writeInt((int) fYChannelSelector);
162 buffer.writeScalar(fScale); 179 buffer.writeScalar(fScale);
163 } 180 }
164 181
165 bool SkDisplacementMapEffect::onFilterImage(Proxy* proxy, 182 bool SkDisplacementMapEffect::onFilterImage(Proxy* proxy,
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 const GrGLCaps&) { 511 const GrGLCaps&) {
495 const GrDisplacementMapEffect& displacementMap = 512 const GrDisplacementMapEffect& displacementMap =
496 drawEffect.castEffect<GrDisplacementMapEffect>(); 513 drawEffect.castEffect<GrDisplacementMapEffect>();
497 514
498 EffectKey xKey = displacementMap.xChannelSelector(); 515 EffectKey xKey = displacementMap.xChannelSelector();
499 EffectKey yKey = displacementMap.yChannelSelector() << SkDisplacementMapEffe ct::kKeyBits; 516 EffectKey yKey = displacementMap.yChannelSelector() << SkDisplacementMapEffe ct::kKeyBits;
500 517
501 return xKey | yKey; 518 return xKey | yKey;
502 } 519 }
503 #endif 520 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698