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

Side by Side Diff: src/effects/SkLightingImageFilter.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: 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
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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 }; 257 };
258 258
259 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) { 259 void writePoint3(const SkPoint3& point, SkWriteBuffer& buffer) {
260 buffer.writeScalar(point.fX); 260 buffer.writeScalar(point.fX);
261 buffer.writeScalar(point.fY); 261 buffer.writeScalar(point.fY);
262 buffer.writeScalar(point.fZ); 262 buffer.writeScalar(point.fZ);
263 }; 263 };
264 264
265 class SkDiffuseLightingImageFilter : public SkLightingImageFilter { 265 class SkDiffuseLightingImageFilter : public SkLightingImageFilter {
266 public: 266 public:
267 SkDiffuseLightingImageFilter(SkLight* light, SkScalar surfaceScale, 267 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale, SkScalar kd, SkImageFilter*,
268 SkScalar kd, SkImageFilter* input, const CropRe ct* cropRect); 268 const CropRect*);
269
269 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiffuseLightingImageFi lter) 270 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiffuseLightingImageFi lter)
270 SkScalar kd() const { return fKD; } 271 SkScalar kd() const { return fKD; }
271 272
272 protected: 273 protected:
274 SkDiffuseLightingImageFilter(SkLight* light, SkScalar surfaceScale,
275 SkScalar kd, SkImageFilter* input, const CropRe ct* cropRect);
276 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
273 explicit SkDiffuseLightingImageFilter(SkReadBuffer& buffer); 277 explicit SkDiffuseLightingImageFilter(SkReadBuffer& buffer);
278 #endif
274 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; 279 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
275 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 280 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
276 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE; 281 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE;
277 #if SK_SUPPORT_GPU 282 #if SK_SUPPORT_GPU
278 virtual bool asNewEffect(GrEffect** effect, GrTexture*, const SkMatrix& matr ix, 283 virtual bool asNewEffect(GrEffect** effect, GrTexture*, const SkMatrix& matr ix,
279 const SkIRect& bounds) const SK_OVERRIDE; 284 const SkIRect& bounds) const SK_OVERRIDE;
280 #endif 285 #endif
281 286
282 private: 287 private:
283 typedef SkLightingImageFilter INHERITED; 288 typedef SkLightingImageFilter INHERITED;
284 SkScalar fKD; 289 SkScalar fKD;
285 }; 290 };
286 291
287 class SkSpecularLightingImageFilter : public SkLightingImageFilter { 292 class SkSpecularLightingImageFilter : public SkLightingImageFilter {
288 public: 293 public:
289 SkSpecularLightingImageFilter(SkLight* light, SkScalar surfaceScale, SkScala r ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropRect); 294 static SkImageFilter* Create(SkLight* light, SkScalar surfaceScale,
295 SkScalar ks, SkScalar shininess, SkImageFilter* , const CropRect*);
296
290 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSpecularLightingImageF ilter) 297 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSpecularLightingImageF ilter)
291 298
292 SkScalar ks() const { return fKS; } 299 SkScalar ks() const { return fKS; }
293 SkScalar shininess() const { return fShininess; } 300 SkScalar shininess() const { return fShininess; }
294 301
295 protected: 302 protected:
303 SkSpecularLightingImageFilter(SkLight* light, SkScalar surfaceScale, SkScala r ks,
304 SkScalar shininess, SkImageFilter* input, cons t CropRect*);
305 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
296 explicit SkSpecularLightingImageFilter(SkReadBuffer& buffer); 306 explicit SkSpecularLightingImageFilter(SkReadBuffer& buffer);
307 #endif
297 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; 308 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
298 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 309 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
299 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE; 310 SkBitmap* result, SkIPoint* offset) const SK_OVER RIDE;
300 #if SK_SUPPORT_GPU 311 #if SK_SUPPORT_GPU
301 virtual bool asNewEffect(GrEffect** effect, GrTexture*, const SkMatrix& matr ix, 312 virtual bool asNewEffect(GrEffect** effect, GrTexture*, const SkMatrix& matr ix,
302 const SkIRect& bounds) const SK_OVERRIDE; 313 const SkIRect& bounds) const SK_OVERRIDE;
303 #endif 314 #endif
304 315
305 private: 316 private:
306 typedef SkLightingImageFilter INHERITED; 317 typedef SkLightingImageFilter INHERITED;
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 SkDEBUGFAIL("Unknown LightType."); 837 SkDEBUGFAIL("Unknown LightType.");
827 buffer.validate(false); 838 buffer.validate(false);
828 return NULL; 839 return NULL;
829 } 840 }
830 } 841 }
831 /////////////////////////////////////////////////////////////////////////////// 842 ///////////////////////////////////////////////////////////////////////////////
832 843
833 SkLightingImageFilter::SkLightingImageFilter(SkLight* light, SkScalar surfaceSca le, 844 SkLightingImageFilter::SkLightingImageFilter(SkLight* light, SkScalar surfaceSca le,
834 SkImageFilter* input, const CropRec t* cropRect) 845 SkImageFilter* input, const CropRec t* cropRect)
835 : INHERITED(1, &input, cropRect), 846 : INHERITED(1, &input, cropRect),
836 fLight(light), 847 fLight(SkRef(light)),
837 fSurfaceScale(SkScalarDiv(surfaceScale, SkIntToScalar(255))) 848 fSurfaceScale(surfaceScale / 255)
838 { 849 {
839 SkASSERT(fLight); 850 SkASSERT(fLight);
840 // our caller knows that we take ownership of the light, so we don't 851 // our caller knows that we take ownership of the light, so we don't
Stephen White 2014/08/18 18:17:26 I think this comment should now be removed, since
reed1 2014/08/18 22:39:16 Done.
841 // need to call ref() here. 852 // need to call ref() here.
842 } 853 }
843 854
844 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse( 855 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse(const SkPoint3& di rection,
845 const SkPoint3& direction, SkColor lightColor, SkScalar surfaceScale, 856 SkColor lightColor ,
846 SkScalar kd, SkImageFilter* input, const CropRect* cropRect) { 857 SkScalar surfaceSc ale,
847 return SkNEW_ARGS(SkDiffuseLightingImageFilter, 858 SkScalar kd,
848 (SkNEW_ARGS(SkDistantLight, (direction, lightColor)), surfaceScale, kd, 859 SkImageFilter* inp ut,
849 input, cropRect)); 860 const CropRect* cr opRect) {
861 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkDistantLight, (direction, lightColo r)));
862 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
850 } 863 }
851 864
852 SkImageFilter* SkLightingImageFilter::CreatePointLitDiffuse( 865 SkImageFilter* SkLightingImageFilter::CreatePointLitDiffuse(const SkPoint3& loca tion,
853 const SkPoint3& location, SkColor lightColor, SkScalar surfaceScale, 866 SkColor lightColor,
854 SkScalar kd, SkImageFilter* input, const CropRect* cropRect) { 867 SkScalar surfaceScal e,
855 return SkNEW_ARGS(SkDiffuseLightingImageFilter, 868 SkScalar kd,
856 (SkNEW_ARGS(SkPointLight, (location, lightColor)), surfaceScale, kd, 869 SkImageFilter* input ,
857 input, cropRect)); 870 const CropRect* crop Rect) {
871 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkPointLight, (location, lightColor)) );
872 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
858 } 873 }
859 874
860 SkImageFilter* SkLightingImageFilter::CreateSpotLitDiffuse( 875 SkImageFilter* SkLightingImageFilter::CreateSpotLitDiffuse(const SkPoint3& locat ion,
861 const SkPoint3& location, const SkPoint3& target, 876 const SkPoint3& targe t,
862 SkScalar specularExponent, SkScalar cutoffAngle, 877 SkScalar specularExpo nent,
863 SkColor lightColor, SkScalar surfaceScale, SkScalar kd, 878 SkScalar cutoffAngle,
864 SkImageFilter* input, const CropRect* cropRect) { 879 SkColor lightColor,
865 return SkNEW_ARGS(SkDiffuseLightingImageFilter, 880 SkScalar surfaceScale ,
866 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, 881 SkScalar kd,
867 cutoffAngle, lightColor)), 882 SkImageFilter* input,
868 surfaceScale, kd, input, cropRect)); 883 const CropRect* cropR ect) {
884 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkSpotLight, (location, target, specu larExponent,
885 cutoffAngle, lightColor )));
886 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
869 } 887 }
870 888
871 SkImageFilter* SkLightingImageFilter::CreateDistantLitSpecular( 889 SkImageFilter* SkLightingImageFilter::CreateDistantLitSpecular(const SkPoint3& d irection,
872 const SkPoint3& direction, SkColor lightColor, SkScalar surfaceScale, 890 SkColor lightColo r,
873 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) { 891 SkScalar surfaceS cale,
874 return SkNEW_ARGS(SkSpecularLightingImageFilter, 892 SkScalar ks,
875 (SkNEW_ARGS(SkDistantLight, (direction, lightColor)), 893 SkScalar shine,
876 surfaceScale, ks, shininess, input, cropRect)); 894 SkImageFilter* in put,
895 const CropRect* c ropRect) {
896 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkDistantLight, (direction, lightColo r)));
897 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
877 } 898 }
878 899
879 SkImageFilter* SkLightingImageFilter::CreatePointLitSpecular( 900 SkImageFilter* SkLightingImageFilter::CreatePointLitSpecular(const SkPoint3& loc ation,
880 const SkPoint3& location, SkColor lightColor, SkScalar surfaceScale, 901 SkColor lightColor,
881 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) { 902 SkScalar surfaceSca le,
882 return SkNEW_ARGS(SkSpecularLightingImageFilter, 903 SkScalar ks,
883 (SkNEW_ARGS(SkPointLight, (location, lightColor)), 904 SkScalar shine,
884 surfaceScale, ks, shininess, input, cropRect)); 905 SkImageFilter* inpu t,
906 const CropRect* cro pRect) {
907 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkPointLight, (location, lightColor)) );
908 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
885 } 909 }
886 910
887 SkImageFilter* SkLightingImageFilter::CreateSpotLitSpecular( 911 SkImageFilter* SkLightingImageFilter::CreateSpotLitSpecular(const SkPoint3& loca tion,
888 const SkPoint3& location, const SkPoint3& target, 912 const SkPoint3& targ et,
889 SkScalar specularExponent, SkScalar cutoffAngle, 913 SkScalar specularExp onent,
890 SkColor lightColor, SkScalar surfaceScale, 914 SkScalar cutoffAngle ,
891 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) { 915 SkColor lightColor,
892 return SkNEW_ARGS(SkSpecularLightingImageFilter, 916 SkScalar surfaceScal e,
893 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, cutoffAngl e, lightColor)), 917 SkScalar ks,
894 surfaceScale, ks, shininess, input, cropRect)); 918 SkScalar shine,
919 SkImageFilter* input ,
920 const CropRect* crop Rect) {
921 SkAutoTUnref<SkLight> light(SkNEW_ARGS(SkSpotLight, (location, target, specu larExponent,
922 cutoffAngle, lightColor )));
923 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
895 } 924 }
896 925
897 SkLightingImageFilter::~SkLightingImageFilter() { 926 SkLightingImageFilter::~SkLightingImageFilter() {}
898 SkSafeUnref(fLight);
899 }
900 927
928 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
901 SkLightingImageFilter::SkLightingImageFilter(SkReadBuffer& buffer) 929 SkLightingImageFilter::SkLightingImageFilter(SkReadBuffer& buffer)
902 : INHERITED(1, buffer) { 930 : INHERITED(1, buffer) {
903 fLight = SkLight::UnflattenLight(buffer); 931 fLight.reset(SkLight::UnflattenLight(buffer));
904 fSurfaceScale = buffer.readScalar(); 932 fSurfaceScale = buffer.readScalar();
905 buffer.validate(SkScalarIsFinite(fSurfaceScale)); 933 buffer.validate(SkScalarIsFinite(fSurfaceScale));
906 } 934 }
935 #endif
907 936
908 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 937 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
909 this->INHERITED::flatten(buffer); 938 this->INHERITED::flatten(buffer);
910 fLight->flattenLight(buffer); 939 fLight->flattenLight(buffer);
911 buffer.writeScalar(fSurfaceScale); 940 buffer.writeScalar(fSurfaceScale * 255);
912 } 941 }
913 942
914 /////////////////////////////////////////////////////////////////////////////// 943 ///////////////////////////////////////////////////////////////////////////////
915 944
945 SkImageFilter* SkDiffuseLightingImageFilter::Create(SkLight* light, SkScalar sur faceScale,
946 SkScalar kd, SkImageFilter* input, const Cro pRect* cropRect) {
947 if (NULL == light) {
948 return NULL;
949 }
950 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(kd)) {
951 return NULL;
952 }
953 // According to the spec, kd can be any non-negative number :
954 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement
955 if (kd < 0) {
956 return NULL;
957 }
958 return SkNEW_ARGS(SkDiffuseLightingImageFilter, (light, surfaceScale, kd, in put, cropRect));
959 }
960
916 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL) 961 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL)
917 : SkLightingImageFilter(light, surfaceScale, input, cropRect), 962 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
918 // According to the spec, kd can be any non-negative number : 963 fKD(kd)
919 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement
920 fKD(kd < 0 ? 0 : kd)
921 { 964 {
922 } 965 }
923 966
967 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
924 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkReadBuffer& buffer) 968 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkReadBuffer& buffer)
925 : INHERITED(buffer) 969 : INHERITED(buffer)
926 { 970 {
927 fKD = buffer.readScalar(); 971 fKD = buffer.readScalar();
928 buffer.validate(SkScalarIsFinite(fKD) && (fKD >= 0)); 972 buffer.validate(SkScalarIsFinite(fKD) && (fKD >= 0));
929 } 973 }
974 #endif
975
976 SkFlattenable* SkDiffuseLightingImageFilter::CreateProc(SkReadBuffer& buffer) {
977 SK_IMAGEFILTER_UNFLATTEN_COMMON(1);
978 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer));
979 SkScalar surfaceScale = buffer.readScalar();
980 SkScalar kd = buffer.readScalar();
981 return Create(light, surfaceScale, kd, common.inputAt(0), &common.cropRect() );
982 }
930 983
931 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 984 void SkDiffuseLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
932 this->INHERITED::flatten(buffer); 985 this->INHERITED::flatten(buffer);
933 buffer.writeScalar(fKD); 986 buffer.writeScalar(fKD);
934 } 987 }
935 988
936 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy* proxy, 989 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy* proxy,
937 const SkBitmap& source, 990 const SkBitmap& source,
938 const Context& ctx, 991 const Context& ctx,
939 SkBitmap* dst, 992 SkBitmap* dst,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 if (effect) { 1046 if (effect) {
994 SkScalar scale = SkScalarMul(surfaceScale(), SkIntToScalar(255)); 1047 SkScalar scale = SkScalarMul(surfaceScale(), SkIntToScalar(255));
995 *effect = GrDiffuseLightingEffect::Create(texture, light(), scale, matri x, kd()); 1048 *effect = GrDiffuseLightingEffect::Create(texture, light(), scale, matri x, kd());
996 } 1049 }
997 return true; 1050 return true;
998 } 1051 }
999 #endif 1052 #endif
1000 1053
1001 /////////////////////////////////////////////////////////////////////////////// 1054 ///////////////////////////////////////////////////////////////////////////////
1002 1055
1056 SkImageFilter* SkSpecularLightingImageFilter::Create(SkLight* light, SkScalar su rfaceScale,
1057 SkScalar ks, SkScalar shininess, SkImageFilter* input, const Cro pRect* cropRect) {
1058 if (NULL == light) {
1059 return NULL;
1060 }
1061 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(ks) || !SkScalarIsF inite(shininess)) {
1062 return NULL;
1063 }
1064 // According to the spec, ks can be any non-negative number :
1065 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement
1066 if (ks < 0) {
1067 return NULL;
1068 }
1069 return SkNEW_ARGS(SkSpecularLightingImageFilter,
1070 (light, surfaceScale, ks, shininess, input, cropRect));
1071 }
1072
1003 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkLight* light, SkS calar surfaceScale, SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropRect) 1073 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkLight* light, SkS calar surfaceScale, SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropRect)
1004 : SkLightingImageFilter(light, surfaceScale, input, cropRect), 1074 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
1005 // According to the spec, ks can be any non-negative number : 1075 fKS(ks),
1006 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement
1007 fKS(ks < 0 ? 0 : ks),
1008 fShininess(shininess) 1076 fShininess(shininess)
1009 { 1077 {
1010 } 1078 }
1011 1079
1012 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkReadBuffer& buffe r) 1080 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
1081 kSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkReadBuffer& buffer )
1013 : INHERITED(buffer) 1082 : INHERITED(buffer)
1014 { 1083 {
1015 fKS = buffer.readScalar(); 1084 fKS = buffer.readScalar();
1016 fShininess = buffer.readScalar(); 1085 fShininess = buffer.readScalar();
1017 buffer.validate(SkScalarIsFinite(fKS) && (fKS >= 0) && 1086 buffer.validate(SkScalarIsFinite(fKS) && (fKS >= 0) &&
1018 SkScalarIsFinite(fShininess)); 1087 SkScalarIsFinite(fShininess));
1019 } 1088 }
1089 #endif
1090
1091 SkFlattenable* SkSpecularLightingImageFilter::CreateProc(SkReadBuffer& buffer) {
1092 SK_IMAGEFILTER_UNFLATTEN_COMMON(1);
1093 SkAutoTUnref<SkLight> light(SkLight::UnflattenLight(buffer));
1094 SkScalar surfaceScale = buffer.readScalar();
1095 SkScalar ks = buffer.readScalar();
1096 SkScalar shine = buffer.readScalar();
1097 return Create(light, surfaceScale, ks, shine, common.inputAt(0), &common.cro pRect());
1098 }
1020 1099
1021 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1100 void SkSpecularLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1022 this->INHERITED::flatten(buffer); 1101 this->INHERITED::flatten(buffer);
1023 buffer.writeScalar(fKS); 1102 buffer.writeScalar(fKS);
1024 buffer.writeScalar(fShininess); 1103 buffer.writeScalar(fShininess);
1025 } 1104 }
1026 1105
1027 bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy, 1106 bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy,
1028 const SkBitmap& source, 1107 const SkBitmap& source,
1029 const Context& ctx, 1108 const Context& ctx,
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
1616 1695
1617 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 1696 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
1618 } 1697 }
1619 1698
1620 #endif 1699 #endif
1621 1700
1622 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 1701 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
1623 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 1702 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
1624 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 1703 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
1625 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1704 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698