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

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

Issue 1911963008: DNC - JSON of flattenables, with field names. Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add names to call sites Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The Android Open Source Project 2 * Copyright 2012 The Android Open Source Project
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 "SkLightingImageFilter.h" 8 #include "SkLightingImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 point.fX = buffer.readScalar(); 319 point.fX = buffer.readScalar();
320 point.fY = buffer.readScalar(); 320 point.fY = buffer.readScalar();
321 point.fZ = buffer.readScalar(); 321 point.fZ = buffer.readScalar();
322 buffer.validate(SkScalarIsFinite(point.fX) && 322 buffer.validate(SkScalarIsFinite(point.fX) &&
323 SkScalarIsFinite(point.fY) && 323 SkScalarIsFinite(point.fY) &&
324 SkScalarIsFinite(point.fZ)); 324 SkScalarIsFinite(point.fZ));
325 return point; 325 return point;
326 }; 326 };
327 327
328 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) { 328 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) {
329 buffer.writeScalar(point.fX); 329 buffer.writeScalar("fX", point.fX);
330 buffer.writeScalar(point.fY); 330 buffer.writeScalar("fY", point.fY);
331 buffer.writeScalar(point.fZ); 331 buffer.writeScalar("fZ", point.fZ);
332 }; 332 };
333 333
334 enum BoundaryMode { 334 enum BoundaryMode {
335 kTopLeft_BoundaryMode, 335 kTopLeft_BoundaryMode,
336 kTop_BoundaryMode, 336 kTop_BoundaryMode,
337 kTopRight_BoundaryMode, 337 kTopRight_BoundaryMode,
338 kLeft_BoundaryMode, 338 kLeft_BoundaryMode,
339 kInterior_BoundaryMode, 339 kInterior_BoundaryMode,
340 kRight_BoundaryMode, 340 kRight_BoundaryMode,
341 kBottomLeft_BoundaryMode, 341 kBottomLeft_BoundaryMode,
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 fSpecularExponent(specularExponent), 1022 fSpecularExponent(specularExponent),
1023 fCosOuterConeAngle(cosOuterConeAngle), 1023 fCosOuterConeAngle(cosOuterConeAngle),
1024 fCosInnerConeAngle(cosInnerConeAngle), 1024 fCosInnerConeAngle(cosInnerConeAngle),
1025 fConeScale(coneScale), 1025 fConeScale(coneScale),
1026 fS(s) 1026 fS(s)
1027 { 1027 {
1028 } 1028 }
1029 void onFlattenLight(SkWriteBuffer& buffer) const override { 1029 void onFlattenLight(SkWriteBuffer& buffer) const override {
1030 writePoint3(fLocation, buffer); 1030 writePoint3(fLocation, buffer);
1031 writePoint3(fTarget, buffer); 1031 writePoint3(fTarget, buffer);
1032 buffer.writeScalar(fSpecularExponent); 1032 buffer.writeScalar("fSpecularExponent", fSpecularExponent);
1033 buffer.writeScalar(fCosOuterConeAngle); 1033 buffer.writeScalar("fCosOuterConeAngle", fCosOuterConeAngle);
1034 buffer.writeScalar(fCosInnerConeAngle); 1034 buffer.writeScalar("fCosInnerConeAngle", fCosInnerConeAngle);
1035 buffer.writeScalar(fConeScale); 1035 buffer.writeScalar("fConeScale", fConeScale);
1036 writePoint3(fS, buffer); 1036 writePoint3(fS, buffer);
1037 } 1037 }
1038 1038
1039 bool isEqual(const SkImageFilterLight& other) const override { 1039 bool isEqual(const SkImageFilterLight& other) const override {
1040 if (other.type() != kSpot_LightType) { 1040 if (other.type() != kSpot_LightType) {
1041 return false; 1041 return false;
1042 } 1042 }
1043 1043
1044 const SkSpotLight& o = static_cast<const SkSpotLight&>(other); 1044 const SkSpotLight& o = static_cast<const SkSpotLight&>(other);
1045 return INHERITED::isEqual(other) && 1045 return INHERITED::isEqual(other) &&
(...skipping 20 matching lines...) Expand all
1066 1066
1067 // According to the spec, the specular term should be in the range [1, 128] : 1067 // According to the spec, the specular term should be in the range [1, 128] :
1068 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingSpecularExponentAttri bute 1068 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingSpecularExponentAttri bute
1069 const SkScalar SkSpotLight::kSpecularExponentMin = 1.0f; 1069 const SkScalar SkSpotLight::kSpecularExponentMin = 1.0f;
1070 const SkScalar SkSpotLight::kSpecularExponentMax = 128.0f; 1070 const SkScalar SkSpotLight::kSpecularExponentMax = 128.0f;
1071 1071
1072 /////////////////////////////////////////////////////////////////////////////// 1072 ///////////////////////////////////////////////////////////////////////////////
1073 1073
1074 void SkImageFilterLight::flattenLight(SkWriteBuffer& buffer) const { 1074 void SkImageFilterLight::flattenLight(SkWriteBuffer& buffer) const {
1075 // Write type first, then baseclass, then subclass. 1075 // Write type first, then baseclass, then subclass.
1076 buffer.writeInt(this->type()); 1076 buffer.writeInt("type", this->type());
1077 writePoint3(fColor, buffer); 1077 writePoint3(fColor, buffer);
1078 this->onFlattenLight(buffer); 1078 this->onFlattenLight(buffer);
1079 } 1079 }
1080 1080
1081 /*static*/ SkImageFilterLight* SkImageFilterLight::UnflattenLight(SkReadBuffer& buffer) { 1081 /*static*/ SkImageFilterLight* SkImageFilterLight::UnflattenLight(SkReadBuffer& buffer) {
1082 // Read type first. 1082 // Read type first.
1083 const SkImageFilterLight::LightType type = (SkImageFilterLight::LightType)bu ffer.readInt(); 1083 const SkImageFilterLight::LightType type = (SkImageFilterLight::LightType)bu ffer.readInt();
1084 switch (type) { 1084 switch (type) {
1085 // Each of these constructors must first call SkLight's, so we'll read t he baseclass 1085 // Each of these constructors must first call SkLight's, so we'll read t he baseclass
1086 // then subclass, same order as flattenLight. 1086 // then subclass, same order as flattenLight.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1181 const CropRect* cropRect) { 1181 const CropRect* cropRect) {
1182 sk_sp<SkImageFilterLight> light( 1182 sk_sp<SkImageFilterLight> light(
1183 new SkSpotLight(location, target, specularExponent, cutoffAngle, lig htColor)); 1183 new SkSpotLight(location, target, specularExponent, cutoffAngle, lig htColor));
1184 return SkSpecularLightingImageFilter::Make(std::move(light), surfaceScale, k s, shine, 1184 return SkSpecularLightingImageFilter::Make(std::move(light), surfaceScale, k s, shine,
1185 std::move(input), cropRect); 1185 std::move(input), cropRect);
1186 } 1186 }
1187 1187
1188 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1188 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1189 this->INHERITED::flatten(buffer); 1189 this->INHERITED::flatten(buffer);
1190 fLight->flattenLight(buffer); 1190 fLight->flattenLight(buffer);
1191 buffer.writeScalar(fSurfaceScale * 255); 1191 buffer.writeScalar("fSurfaceScale", fSurfaceScale * 255);
1192 } 1192 }
1193 1193
1194 /////////////////////////////////////////////////////////////////////////////// 1194 ///////////////////////////////////////////////////////////////////////////////
1195 1195
1196 sk_sp<SkImageFilter> SkDiffuseLightingImageFilter::Make(sk_sp<SkImageFilterLight > light, 1196 sk_sp<SkImageFilter> SkDiffuseLightingImageFilter::Make(sk_sp<SkImageFilterLight > light,
1197 SkScalar surfaceScale, 1197 SkScalar surfaceScale,
1198 SkScalar kd, 1198 SkScalar kd,
1199 sk_sp<SkImageFilter> inp ut, 1199 sk_sp<SkImageFilter> inp ut,
1200 const CropRect* cropRect ) { 1200 const CropRect* cropRect ) {
1201 if (!light) { 1201 if (!light) {
(...skipping 23 matching lines...) Expand all
1225 sk_sp<SkFlattenable> SkDiffuseLightingImageFilter::CreateProc(SkReadBuffer& buff er) { 1225 sk_sp<SkFlattenable> SkDiffuseLightingImageFilter::CreateProc(SkReadBuffer& buff er) {
1226 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); 1226 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
1227 sk_sp<SkImageFilterLight> light(SkImageFilterLight::UnflattenLight(buffer)); 1227 sk_sp<SkImageFilterLight> light(SkImageFilterLight::UnflattenLight(buffer));
1228 SkScalar surfaceScale = buffer.readScalar(); 1228 SkScalar surfaceScale = buffer.readScalar();
1229 SkScalar kd = buffer.readScalar(); 1229 SkScalar kd = buffer.readScalar();
1230 return Make(std::move(light), surfaceScale, kd, common.getInput(0), &common. cropRect()); 1230 return Make(std::move(light), surfaceScale, kd, common.getInput(0), &common. cropRect());
1231 } 1231 }
1232 1232
1233 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1233 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1234 this->INHERITED::flatten(buffer); 1234 this->INHERITED::flatten(buffer);
1235 buffer.writeScalar(fKD); 1235 buffer.writeScalar("fKD", fKD);
1236 } 1236 }
1237 1237
1238 sk_sp<SkSpecialImage> SkDiffuseLightingImageFilter::onFilterImage(SkSpecialImage * source, 1238 sk_sp<SkSpecialImage> SkDiffuseLightingImageFilter::onFilterImage(SkSpecialImage * source,
1239 const Context& ctx, 1239 const Context& ctx,
1240 SkIPoint* offs et) const { 1240 SkIPoint* offs et) const {
1241 SkIPoint inputOffset = SkIPoint::Make(0, 0); 1241 SkIPoint inputOffset = SkIPoint::Make(0, 0);
1242 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset)) ; 1242 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset)) ;
1243 if (!input) { 1243 if (!input) {
1244 return nullptr; 1244 return nullptr;
1245 } 1245 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 sk_sp<SkImageFilterLight> light(SkImageFilterLight::UnflattenLight(buffer)); 1389 sk_sp<SkImageFilterLight> light(SkImageFilterLight::UnflattenLight(buffer));
1390 SkScalar surfaceScale = buffer.readScalar(); 1390 SkScalar surfaceScale = buffer.readScalar();
1391 SkScalar ks = buffer.readScalar(); 1391 SkScalar ks = buffer.readScalar();
1392 SkScalar shine = buffer.readScalar(); 1392 SkScalar shine = buffer.readScalar();
1393 return Make(std::move(light), surfaceScale, ks, shine, common.getInput(0), 1393 return Make(std::move(light), surfaceScale, ks, shine, common.getInput(0),
1394 &common.cropRect()); 1394 &common.cropRect());
1395 } 1395 }
1396 1396
1397 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1397 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1398 this->INHERITED::flatten(buffer); 1398 this->INHERITED::flatten(buffer);
1399 buffer.writeScalar(fKS); 1399 buffer.writeScalar("fKS", fKS);
1400 buffer.writeScalar(fShininess); 1400 buffer.writeScalar("fShininess", fShininess);
1401 } 1401 }
1402 1402
1403 sk_sp<SkSpecialImage> SkSpecularLightingImageFilter::onFilterImage(SkSpecialImag e* source, 1403 sk_sp<SkSpecialImage> SkSpecularLightingImageFilter::onFilterImage(SkSpecialImag e* source,
1404 const Context & ctx, 1404 const Context & ctx,
1405 SkIPoint* off set) const { 1405 SkIPoint* off set) const {
1406 SkIPoint inputOffset = SkIPoint::Make(0, 0); 1406 SkIPoint inputOffset = SkIPoint::Make(0, 0);
1407 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset)) ; 1407 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset)) ;
1408 if (!input) { 1408 if (!input) {
1409 return nullptr; 1409 return nullptr;
1410 } 1410 }
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 2171
2172 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 2172 fragBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
2173 } 2173 }
2174 2174
2175 #endif 2175 #endif
2176 2176
2177 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 2177 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
2178 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 2178 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
2179 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 2179 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
2180 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 2180 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698