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

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

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Adapting code to sk_once changes Created 7 years, 1 month 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
« no previous file with comments | « src/effects/SkDropShadowImageFilter.cpp ('k') | src/effects/SkMagnifierImageFilter.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 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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 surfaceToLight = l->surfaceToLight(x, y, m[4], surfaceScale); 241 surfaceToLight = l->surfaceToLight(x, y, m[4], surfaceScale);
242 *dptr++ = lightingType.light(bottomRightNormal(m, surfaceScale), surface ToLight, l->lightColor(surfaceToLight)); 242 *dptr++ = lightingType.light(bottomRightNormal(m, surfaceScale), surface ToLight, l->lightColor(surfaceToLight));
243 } 243 }
244 } 244 }
245 245
246 SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) { 246 SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) {
247 SkPoint3 point; 247 SkPoint3 point;
248 point.fX = buffer.readScalar(); 248 point.fX = buffer.readScalar();
249 point.fY = buffer.readScalar(); 249 point.fY = buffer.readScalar();
250 point.fZ = buffer.readScalar(); 250 point.fZ = buffer.readScalar();
251 buffer.validate(SkScalarIsFinite(point.fX) &&
252 SkScalarIsFinite(point.fY) &&
253 SkScalarIsFinite(point.fZ));
251 return point; 254 return point;
252 }; 255 };
253 256
254 void writePoint3(const SkPoint3& point, SkFlattenableWriteBuffer& buffer) { 257 void writePoint3(const SkPoint3& point, SkFlattenableWriteBuffer& buffer) {
255 buffer.writeScalar(point.fX); 258 buffer.writeScalar(point.fX);
256 buffer.writeScalar(point.fY); 259 buffer.writeScalar(point.fY);
257 buffer.writeScalar(point.fZ); 260 buffer.writeScalar(point.fZ);
258 }; 261 };
259 262
260 class SkDiffuseLightingImageFilter : public SkLightingImageFilter { 263 class SkDiffuseLightingImageFilter : public SkLightingImageFilter {
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 const SkPoint3& s() const { return fS; } 728 const SkPoint3& s() const { return fS; }
726 729
727 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { 730 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
728 fLocation = readPoint3(buffer); 731 fLocation = readPoint3(buffer);
729 fTarget = readPoint3(buffer); 732 fTarget = readPoint3(buffer);
730 fSpecularExponent = buffer.readScalar(); 733 fSpecularExponent = buffer.readScalar();
731 fCosOuterConeAngle = buffer.readScalar(); 734 fCosOuterConeAngle = buffer.readScalar();
732 fCosInnerConeAngle = buffer.readScalar(); 735 fCosInnerConeAngle = buffer.readScalar();
733 fConeScale = buffer.readScalar(); 736 fConeScale = buffer.readScalar();
734 fS = readPoint3(buffer); 737 fS = readPoint3(buffer);
738 buffer.validate(SkScalarIsFinite(fSpecularExponent) &&
739 SkScalarIsFinite(fCosOuterConeAngle) &&
740 SkScalarIsFinite(fCosInnerConeAngle) &&
741 SkScalarIsFinite(fConeScale));
735 } 742 }
736 protected: 743 protected:
737 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color) 744 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color)
738 : INHERITED(color), 745 : INHERITED(color),
739 fLocation(location), 746 fLocation(location),
740 fTarget(target), 747 fTarget(target),
741 fSpecularExponent(specularExponent), 748 fSpecularExponent(specularExponent),
742 fCosOuterConeAngle(cosOuterConeAngle), 749 fCosOuterConeAngle(cosOuterConeAngle),
743 fCosInnerConeAngle(cosInnerConeAngle), 750 fCosInnerConeAngle(cosInnerConeAngle),
744 fConeScale(coneScale), 751 fConeScale(coneScale),
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 const SkPoint3& location, const SkPoint3& target, 876 const SkPoint3& location, const SkPoint3& target,
870 SkScalar specularExponent, SkScalar cutoffAngle, 877 SkScalar specularExponent, SkScalar cutoffAngle,
871 SkColor lightColor, SkScalar surfaceScale, 878 SkColor lightColor, SkScalar surfaceScale,
872 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) { 879 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) {
873 return SkNEW_ARGS(SkSpecularLightingImageFilter, 880 return SkNEW_ARGS(SkSpecularLightingImageFilter,
874 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, cutoffAngl e, lightColor)), 881 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, cutoffAngl e, lightColor)),
875 surfaceScale, ks, shininess, input, cropRect)); 882 surfaceScale, ks, shininess, input, cropRect));
876 } 883 }
877 884
878 SkLightingImageFilter::~SkLightingImageFilter() { 885 SkLightingImageFilter::~SkLightingImageFilter() {
879 fLight->unref(); 886 SkSafeUnref(fLight);
880 } 887 }
881 888
882 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer) 889 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer)
883 : INHERITED(buffer) { 890 : INHERITED(buffer) {
884 fLight = SkLight::UnflattenLight(buffer); 891 fLight = SkLight::UnflattenLight(buffer);
885 fSurfaceScale = buffer.readScalar(); 892 fSurfaceScale = buffer.readScalar();
893 buffer.validate(SkScalarIsFinite(fSurfaceScale));
886 } 894 }
887 895
888 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { 896 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
889 this->INHERITED::flatten(buffer); 897 this->INHERITED::flatten(buffer);
890 fLight->flattenLight(buffer); 898 fLight->flattenLight(buffer);
891 buffer.writeScalar(fSurfaceScale); 899 buffer.writeScalar(fSurfaceScale);
892 } 900 }
893 901
894 /////////////////////////////////////////////////////////////////////////////// 902 ///////////////////////////////////////////////////////////////////////////////
895 903
896 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL) 904 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL)
897 : SkLightingImageFilter(light, surfaceScale, input, cropRect), 905 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
898 fKD(kd) 906 fKD(kd)
899 { 907 {
900 } 908 }
901 909
902 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer) 910 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer)
903 : INHERITED(buffer) 911 : INHERITED(buffer)
904 { 912 {
905 fKD = buffer.readScalar(); 913 fKD = buffer.readScalar();
914 buffer.validate(SkScalarIsFinite(fKD));
906 } 915 }
907 916
908 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st { 917 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st {
909 this->INHERITED::flatten(buffer); 918 this->INHERITED::flatten(buffer);
910 buffer.writeScalar(fKD); 919 buffer.writeScalar(fKD);
911 } 920 }
912 921
913 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*, 922 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*,
914 const SkBitmap& src, 923 const SkBitmap& src,
915 const SkMatrix& ctm, 924 const SkMatrix& ctm,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 fKS(ks), 982 fKS(ks),
974 fShininess(shininess) 983 fShininess(shininess)
975 { 984 {
976 } 985 }
977 986
978 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer) 987 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer)
979 : INHERITED(buffer) 988 : INHERITED(buffer)
980 { 989 {
981 fKS = buffer.readScalar(); 990 fKS = buffer.readScalar();
982 fShininess = buffer.readScalar(); 991 fShininess = buffer.readScalar();
992 buffer.validate(SkScalarIsFinite(fKS) &&
993 SkScalarIsFinite(fShininess));
983 } 994 }
984 995
985 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst { 996 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst {
986 this->INHERITED::flatten(buffer); 997 this->INHERITED::flatten(buffer);
987 buffer.writeScalar(fKS); 998 buffer.writeScalar(fKS);
988 buffer.writeScalar(fShininess); 999 buffer.writeScalar(fShininess);
989 } 1000 }
990 1001
991 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*, 1002 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*,
992 const SkBitmap& src, 1003 const SkBitmap& src,
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 1581
1571 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 1582 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
1572 } 1583 }
1573 1584
1574 #endif 1585 #endif
1575 1586
1576 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 1587 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
1577 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 1588 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
1578 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 1589 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
1579 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1590 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW
« no previous file with comments | « src/effects/SkDropShadowImageFilter.cpp ('k') | src/effects/SkMagnifierImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698