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

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

Issue 1019493002: Remove uniqueID from all filter serialization. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Restore deprecated factory fn (Chrome still calls it) Created 5 years, 9 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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 273
274 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) { 274 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) {
275 buffer.writeScalar(point.fX); 275 buffer.writeScalar(point.fX);
276 buffer.writeScalar(point.fY); 276 buffer.writeScalar(point.fY);
277 buffer.writeScalar(point.fZ); 277 buffer.writeScalar(point.fZ);
278 }; 278 };
279 279
280 class SkDiffuseLightingImageFilter : public SkLightingImageFilter { 280 class SkDiffuseLightingImageFilter : public SkLightingImageFilter {
281 public: 281 public:
282 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale, SkScalar kd, SkImageFilter*, 282 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale, SkScalar kd, SkImageFilter*,
283 const CropRect*, uint32_t uniqueID = 0); 283 const CropRect*);
284 284
285 SK_TO_STRING_OVERRIDE() 285 SK_TO_STRING_OVERRIDE()
286 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiffuseLightingImageFi lter) 286 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiffuseLightingImageFi lter)
287 SkScalar kd() const { return fKD; } 287 SkScalar kd() const { return fKD; }
288 288
289 protected: 289 protected:
290 SkDiffuseLightingImageFilter(SkLight* light, SkScalar surfaceScale, 290 SkDiffuseLightingImageFilter(SkLight* light, SkScalar surfaceScale,
291 SkScalar kd, SkImageFilter* input, const CropRe ct* cropRect, 291 SkScalar kd, SkImageFilter* input, const CropRe ct* cropRect);
292 uint32_t uniqueID);
293 void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; 292 void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
294 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 293 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
295 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE; 294 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE;
296 #if SK_SUPPORT_GPU 295 #if SK_SUPPORT_GPU
297 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const Sk Matrix&, 296 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const Sk Matrix&,
298 const SkIRect& bounds) const SK_OVERRIDE; 297 const SkIRect& bounds) const SK_OVERRIDE;
299 #endif 298 #endif
300 299
301 private: 300 private:
302 friend class SkLightingImageFilter; 301 friend class SkLightingImageFilter;
303 typedef SkLightingImageFilter INHERITED; 302 typedef SkLightingImageFilter INHERITED;
304 SkScalar fKD; 303 SkScalar fKD;
305 }; 304 };
306 305
307 class SkSpecularLightingImageFilter : public SkLightingImageFilter { 306 class SkSpecularLightingImageFilter : public SkLightingImageFilter {
308 public: 307 public:
309 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale, 308 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale,
310 SkScalar ks, SkScalar shininess, SkImageFilter* , const CropRect*, 309 SkScalar ks, SkScalar shininess, SkImageFilter* , const CropRect*);
311 uint32_t uniqueID = 0);
312 310
313 SK_TO_STRING_OVERRIDE() 311 SK_TO_STRING_OVERRIDE()
314 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSpecularLightingImageF ilter) 312 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSpecularLightingImageF ilter)
315 313
316 SkScalar ks() const { return fKS; } 314 SkScalar ks() const { return fKS; }
317 SkScalar shininess() const { return fShininess; } 315 SkScalar shininess() const { return fShininess; }
318 316
319 protected: 317 protected:
320 SkSpecularLightingImageFilter(SkLight* light, SkScalar surfaceScale, SkScala r ks, 318 SkSpecularLightingImageFilter(SkLight* light, SkScalar surfaceScale, SkScala r ks,
321 SkScalar shininess, SkImageFilter* input, cons t CropRect*, 319 SkScalar shininess, SkImageFilter* input, cons t CropRect*);
322 uint32_t uniqueID);
323 void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; 320 void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
324 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 321 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
325 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE; 322 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE;
326 #if SK_SUPPORT_GPU 323 #if SK_SUPPORT_GPU
327 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const Sk Matrix&, 324 virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const Sk Matrix&,
328 const SkIRect& bounds) const SK_OVERRIDE; 325 const SkIRect& bounds) const SK_OVERRIDE;
329 #endif 326 #endif
330 327
331 private: 328 private:
332 SkScalar fKS; 329 SkScalar fKS;
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 case SkLight::kSpot_LightType: return SkNEW_ARGS(SkSpotLight, (buffer )); 850 case SkLight::kSpot_LightType: return SkNEW_ARGS(SkSpotLight, (buffer ));
854 default: 851 default:
855 SkDEBUGFAIL("Unknown LightType."); 852 SkDEBUGFAIL("Unknown LightType.");
856 buffer.validate(false); 853 buffer.validate(false);
857 return NULL; 854 return NULL;
858 } 855 }
859 } 856 }
860 /////////////////////////////////////////////////////////////////////////////// 857 ///////////////////////////////////////////////////////////////////////////////
861 858
862 SkLightingImageFilter::SkLightingImageFilter(SkLight* light, SkScalar surfaceSca le, 859 SkLightingImageFilter::SkLightingImageFilter(SkLight* light, SkScalar surfaceSca le,
863 SkImageFilter* input, const CropRec t* cropRect, 860 SkImageFilter* input, const CropRec t* cropRect)
864 uint32_t uniqueID) 861 : INHERITED(1, &input, cropRect)
865 : INHERITED(1, &input, cropRect, uniqueID)
866 , fLight(SkRef(light)) 862 , fLight(SkRef(light))
867 , fSurfaceScale(surfaceScale / 255) 863 , fSurfaceScale(surfaceScale / 255)
868 {} 864 {}
869 865
870 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse(const SkPoint3& di rection, 866 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse(const SkPoint3& di rection,
871 SkColor lightColor , 867 SkColor lightColor ,
872 SkScalar surfaceSc ale, 868 SkScalar surfaceSc ale,
873 SkScalar kd, 869 SkScalar kd,
874 SkImageFilter* inp ut, 870 SkImageFilter* inp ut,
875 const CropRect* cr opRect) { 871 const CropRect* cr opRect) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 938
943 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 939 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
944 this->INHERITED::flatten(buffer); 940 this->INHERITED::flatten(buffer);
945 fLight->flattenLight(buffer); 941 fLight->flattenLight(buffer);
946 buffer.writeScalar(fSurfaceScale * 255); 942 buffer.writeScalar(fSurfaceScale * 255);
947 } 943 }
948 944
949 /////////////////////////////////////////////////////////////////////////////// 945 ///////////////////////////////////////////////////////////////////////////////
950 946
951 SkImageFilter* SkDiffuseLightingImageFilter::Create(SkLight* light, SkScalar sur faceScale, 947 SkImageFilter* SkDiffuseLightingImageFilter::Create(SkLight* light, SkScalar sur faceScale,
952 SkScalar kd, SkImageFilter* input, const Cro pRect* cropRect, uint32_t uniqueID) { 948 SkScalar kd, SkImageFilter* input, const Cro pRect* cropRect) {
953 if (NULL == light) { 949 if (NULL == light) {
954 return NULL; 950 return NULL;
955 } 951 }
956 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(kd)) { 952 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(kd)) {
957 return NULL; 953 return NULL;
958 } 954 }
959 // According to the spec, kd can be any non-negative number : 955 // According to the spec, kd can be any non-negative number :
960 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement 956 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement
961 if (kd < 0) { 957 if (kd < 0) {
962 return NULL; 958 return NULL;
963 } 959 }
964 return SkNEW_ARGS(SkDiffuseLightingImageFilter, (light, surfaceScale, kd, in put, cropRect, uniqueID)); 960 return SkNEW_ARGS(SkDiffuseLightingImageFilter, (light, surfaceScale, kd, in put, cropRect));
965 } 961 }
966 962
967 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect, u int32_t uniqueID) 963 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL)
robertphillips 2015/03/18 16:51:43 Why add this "= NULL" here ?
Stephen White 2015/03/18 16:55:29 Bad revert. Fixed.
968 : SkLightingImageFilter(light, surfaceScale, input, cropRect, uniqueID), 964 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
969 fKD(kd) 965 fKD(kd)
970 { 966 {
971 } 967 }
972 968
973 SkFlattenable* SkDiffuseLightingImageFilter::CreateProc(SkReadBuffer& buffer) { 969 SkFlattenable* SkDiffuseLightingImageFilter::CreateProc(SkReadBuffer& buffer) {
974 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); 970 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
975 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer)); 971 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer));
976 SkScalar surfaceScale = buffer.readScalar(); 972 SkScalar surfaceScale = buffer.readScalar();
977 SkScalar kd = buffer.readScalar(); 973 SkScalar kd = buffer.readScalar();
978 return Create(light, surfaceScale, kd, common.getInput(0), &common.cropRect( ), common.uniqueID()); 974 return Create(light, surfaceScale, kd, common.getInput(0), &common.cropRect( ));
979 } 975 }
980 976
981 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 977 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
982 this->INHERITED::flatten(buffer); 978 this->INHERITED::flatten(buffer);
983 buffer.writeScalar(fKD); 979 buffer.writeScalar(fKD);
984 } 980 }
985 981
986 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy* proxy, 982 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy* proxy,
987 const SkBitmap& source, 983 const SkBitmap& source,
988 const Context& ctx, 984 const Context& ctx,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 SkScalar scale = SkScalarMul(surfaceScale(), SkIntToScalar(255)); 1050 SkScalar scale = SkScalarMul(surfaceScale(), SkIntToScalar(255));
1055 *fp = GrDiffuseLightingEffect::Create(texture, light(), scale, matrix, k d()); 1051 *fp = GrDiffuseLightingEffect::Create(texture, light(), scale, matrix, k d());
1056 } 1052 }
1057 return true; 1053 return true;
1058 } 1054 }
1059 #endif 1055 #endif
1060 1056
1061 /////////////////////////////////////////////////////////////////////////////// 1057 ///////////////////////////////////////////////////////////////////////////////
1062 1058
1063 SkImageFilter* SkSpecularLightingImageFilter::Create(SkLight* light, SkScalar su rfaceScale, 1059 SkImageFilter* SkSpecularLightingImageFilter::Create(SkLight* light, SkScalar su rfaceScale,
1064 SkScalar ks, SkScalar shininess, SkImageFilter* input, const Cro pRect* cropRect, uint32_t uniqueID) { 1060 SkScalar ks, SkScalar shininess, SkImageFilter* input, const Cro pRect* cropRect) {
1065 if (NULL == light) { 1061 if (NULL == light) {
1066 return NULL; 1062 return NULL;
1067 } 1063 }
1068 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(ks) || !SkScalarIsF inite(shininess)) { 1064 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(ks) || !SkScalarIsF inite(shininess)) {
1069 return NULL; 1065 return NULL;
1070 } 1066 }
1071 // According to the spec, ks can be any non-negative number : 1067 // According to the spec, ks can be any non-negative number :
1072 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement 1068 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement
1073 if (ks < 0) { 1069 if (ks < 0) {
1074 return NULL; 1070 return NULL;
1075 } 1071 }
1076 return SkNEW_ARGS(SkSpecularLightingImageFilter, 1072 return SkNEW_ARGS(SkSpecularLightingImageFilter,
1077 (light, surfaceScale, ks, shininess, input, cropRect, uniq ueID)); 1073 (light, surfaceScale, ks, shininess, input, cropRect));
1078 } 1074 }
1079 1075
1080 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkLight* light, SkS calar surfaceScale, SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropRect, uint32_t uniqueID) 1076 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkLight* light, SkS calar surfaceScale, SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropRect)
1081 : SkLightingImageFilter(light, surfaceScale, input, cropRect, uniqueID), 1077 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
1082 fKS(ks), 1078 fKS(ks),
1083 fShininess(shininess) 1079 fShininess(shininess)
1084 { 1080 {
1085 } 1081 }
1086 1082
1087 SkFlattenable* SkSpecularLightingImageFilter::CreateProc(SkReadBuffer& buffer) { 1083 SkFlattenable* SkSpecularLightingImageFilter::CreateProc(SkReadBuffer& buffer) {
1088 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); 1084 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
1089 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer)); 1085 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer));
1090 SkScalar surfaceScale = buffer.readScalar(); 1086 SkScalar surfaceScale = buffer.readScalar();
1091 SkScalar ks = buffer.readScalar(); 1087 SkScalar ks = buffer.readScalar();
1092 SkScalar shine = buffer.readScalar(); 1088 SkScalar shine = buffer.readScalar();
1093 return Create(light, surfaceScale, ks, shine, common.getInput(0), &common.cr opRect(), common.uniqueID()); 1089 return Create(light, surfaceScale, ks, shine, common.getInput(0), &common.cr opRect());
1094 } 1090 }
1095 1091
1096 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1092 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1097 this->INHERITED::flatten(buffer); 1093 this->INHERITED::flatten(buffer);
1098 buffer.writeScalar(fKS); 1094 buffer.writeScalar(fKS);
1099 buffer.writeScalar(fShininess); 1095 buffer.writeScalar(fShininess);
1100 } 1096 }
1101 1097
1102 bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy, 1098 bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy,
1103 const SkBitmap& source, 1099 const SkBitmap& source,
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 1712
1717 fsBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 1713 fsBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
1718 } 1714 }
1719 1715
1720 #endif 1716 #endif
1721 1717
1722 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 1718 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
1723 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 1719 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
1724 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 1720 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
1725 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1721 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698