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

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

Issue 395603002: Simplify flattening to just write enough to call the factory (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 4 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
« no previous file with comments | « src/effects/SkDiscretePathEffect.cpp ('k') | src/effects/SkDropShadowImageFilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "SkReadBuffer.h" 9 #include "SkReadBuffer.h"
10 #include "SkWriteBuffer.h" 10 #include "SkWriteBuffer.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 default: 152 default:
153 break; 153 break;
154 } 154 }
155 return false; 155 return false;
156 } 156 }
157 157
158 } // end namespace 158 } // end namespace
159 159
160 /////////////////////////////////////////////////////////////////////////////// 160 ///////////////////////////////////////////////////////////////////////////////
161 161
162 SkDisplacementMapEffect* SkDisplacementMapEffect::Create(ChannelSelectorType xCh annelSelector,
163 ChannelSelectorType yCh annelSelector,
164 SkScalar scale,
165 SkImageFilter* displace ment,
166 SkImageFilter* color,
167 const CropRect* cropRec t) {
168 if (!channel_selector_type_is_valid(xChannelSelector) ||
169 !channel_selector_type_is_valid(yChannelSelector)) {
170 return NULL;
171 }
172
173 SkImageFilter* inputs[2] = { displacement, color };
174 return SkNEW_ARGS(SkDisplacementMapEffect, (xChannelSelector, yChannelSelect or, scale,
175 inputs, cropRect));
176 }
177
162 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel ector, 178 SkDisplacementMapEffect::SkDisplacementMapEffect(ChannelSelectorType xChannelSel ector,
163 ChannelSelectorType yChannelSel ector, 179 ChannelSelectorType yChannelSel ector,
164 SkScalar scale, 180 SkScalar scale,
165 SkImageFilter* inputs[2], 181 SkImageFilter* inputs[2],
166 const CropRect* cropRect) 182 const CropRect* cropRect)
167 : INHERITED(2, inputs, cropRect) 183 : INHERITED(2, inputs, cropRect)
168 , fXChannelSelector(xChannelSelector) 184 , fXChannelSelector(xChannelSelector)
169 , fYChannelSelector(yChannelSelector) 185 , fYChannelSelector(yChannelSelector)
170 , fScale(scale) 186 , fScale(scale)
171 { 187 {
172 } 188 }
173 189
174 SkDisplacementMapEffect::~SkDisplacementMapEffect() { 190 SkDisplacementMapEffect::~SkDisplacementMapEffect() {
175 } 191 }
176 192
193 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
177 SkDisplacementMapEffect::SkDisplacementMapEffect(SkReadBuffer& buffer) 194 SkDisplacementMapEffect::SkDisplacementMapEffect(SkReadBuffer& buffer)
178 : INHERITED(2, buffer) 195 : INHERITED(2, buffer)
179 { 196 {
180 fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt(); 197 fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt();
181 fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt(); 198 fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.re adInt();
182 fScale = buffer.readScalar(); 199 fScale = buffer.readScalar();
183 buffer.validate(channel_selector_type_is_valid(fXChannelSelector) && 200 buffer.validate(channel_selector_type_is_valid(fXChannelSelector) &&
184 channel_selector_type_is_valid(fYChannelSelector) && 201 channel_selector_type_is_valid(fYChannelSelector) &&
185 SkScalarIsFinite(fScale)); 202 SkScalarIsFinite(fScale));
186 } 203 }
204 #endif
205
206 SkFlattenable* SkDisplacementMapEffect::CreateProc(SkReadBuffer& buffer) {
207 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 2);
208 ChannelSelectorType xsel = (ChannelSelectorType)buffer.readInt();
209 ChannelSelectorType ysel = (ChannelSelectorType)buffer.readInt();
210 SkScalar scale = buffer.readScalar();
211 return Create(xsel, ysel, scale, common.getInput(0), common.getInput(1), &co mmon.cropRect());
212 }
187 213
188 void SkDisplacementMapEffect::flatten(SkWriteBuffer& buffer) const { 214 void SkDisplacementMapEffect::flatten(SkWriteBuffer& buffer) const {
189 this->INHERITED::flatten(buffer); 215 this->INHERITED::flatten(buffer);
190 buffer.writeInt((int) fXChannelSelector); 216 buffer.writeInt((int) fXChannelSelector);
191 buffer.writeInt((int) fYChannelSelector); 217 buffer.writeInt((int) fYChannelSelector);
192 buffer.writeScalar(fScale); 218 buffer.writeScalar(fScale);
193 } 219 }
194 220
195 bool SkDisplacementMapEffect::onFilterImage(Proxy* proxy, 221 bool SkDisplacementMapEffect::onFilterImage(Proxy* proxy,
196 const SkBitmap& src, 222 const SkBitmap& src,
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 const GrGLCaps&, GrEffectKeyBuilder* b) { 633 const GrGLCaps&, GrEffectKeyBuilder* b) {
608 const GrDisplacementMapEffect& displacementMap = 634 const GrDisplacementMapEffect& displacementMap =
609 drawEffect.castEffect<GrDisplacementMapEffect>(); 635 drawEffect.castEffect<GrDisplacementMapEffect>();
610 636
611 uint32_t xKey = displacementMap.xChannelSelector(); 637 uint32_t xKey = displacementMap.xChannelSelector();
612 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit s; 638 uint32_t yKey = displacementMap.yChannelSelector() << kChannelSelectorKeyBit s;
613 639
614 b->add32(xKey | yKey); 640 b->add32(xKey | yKey);
615 } 641 }
616 #endif 642 #endif
OLDNEW
« no previous file with comments | « src/effects/SkDiscretePathEffect.cpp ('k') | src/effects/SkDropShadowImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698