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

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: Minor fixes Created 7 years, 2 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 | Annotate | Revision Log
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 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 const SkPoint3& s() const { return fS; } 731 const SkPoint3& s() const { return fS; }
729 732
730 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { 733 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
731 fLocation = readPoint3(buffer); 734 fLocation = readPoint3(buffer);
732 fTarget = readPoint3(buffer); 735 fTarget = readPoint3(buffer);
733 fSpecularExponent = buffer.readScalar(); 736 fSpecularExponent = buffer.readScalar();
734 fCosOuterConeAngle = buffer.readScalar(); 737 fCosOuterConeAngle = buffer.readScalar();
735 fCosInnerConeAngle = buffer.readScalar(); 738 fCosInnerConeAngle = buffer.readScalar();
736 fConeScale = buffer.readScalar(); 739 fConeScale = buffer.readScalar();
737 fS = readPoint3(buffer); 740 fS = readPoint3(buffer);
741 buffer.validate(SkScalarIsFinite(fSpecularExponent) &&
742 SkScalarIsFinite(fCosOuterConeAngle) &&
743 SkScalarIsFinite(fCosInnerConeAngle) &&
744 SkScalarIsFinite(fConeScale));
738 } 745 }
739 protected: 746 protected:
740 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color) 747 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color)
741 : INHERITED(color), 748 : INHERITED(color),
742 fLocation(location), 749 fLocation(location),
743 fTarget(target), 750 fTarget(target),
744 fSpecularExponent(specularExponent), 751 fSpecularExponent(specularExponent),
745 fCosOuterConeAngle(cosOuterConeAngle), 752 fCosOuterConeAngle(cosOuterConeAngle),
746 fCosInnerConeAngle(cosInnerConeAngle), 753 fCosInnerConeAngle(cosInnerConeAngle),
747 fConeScale(coneScale), 754 fConeScale(coneScale),
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 const SkPoint3& location, const SkPoint3& target, 879 const SkPoint3& location, const SkPoint3& target,
873 SkScalar specularExponent, SkScalar cutoffAngle, 880 SkScalar specularExponent, SkScalar cutoffAngle,
874 SkColor lightColor, SkScalar surfaceScale, 881 SkColor lightColor, SkScalar surfaceScale,
875 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) { 882 SkScalar ks, SkScalar shininess, SkImageFilter* input, const CropRect* cropR ect) {
876 return SkNEW_ARGS(SkSpecularLightingImageFilter, 883 return SkNEW_ARGS(SkSpecularLightingImageFilter,
877 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, cutoffAngl e, lightColor)), 884 (SkNEW_ARGS(SkSpotLight, (location, target, specularExponent, cutoffAngl e, lightColor)),
878 surfaceScale, ks, shininess, input, cropRect)); 885 surfaceScale, ks, shininess, input, cropRect));
879 } 886 }
880 887
881 SkLightingImageFilter::~SkLightingImageFilter() { 888 SkLightingImageFilter::~SkLightingImageFilter() {
882 fLight->unref(); 889 SkSafeUnref(fLight);
883 } 890 }
884 891
885 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer) 892 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer)
886 : INHERITED(buffer) { 893 : INHERITED(buffer) {
887 fLight = SkLight::UnflattenLight(buffer); 894 fLight = SkLight::UnflattenLight(buffer);
888 fSurfaceScale = buffer.readScalar(); 895 fSurfaceScale = buffer.readScalar();
896 buffer.validate(SkScalarIsFinite(fSurfaceScale));
889 } 897 }
890 898
891 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { 899 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
892 this->INHERITED::flatten(buffer); 900 this->INHERITED::flatten(buffer);
893 fLight->flattenLight(buffer); 901 fLight->flattenLight(buffer);
894 buffer.writeScalar(fSurfaceScale); 902 buffer.writeScalar(fSurfaceScale);
895 } 903 }
896 904
897 /////////////////////////////////////////////////////////////////////////////// 905 ///////////////////////////////////////////////////////////////////////////////
898 906
899 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL) 907 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const CropRect* cropRect = NULL)
900 : SkLightingImageFilter(light, surfaceScale, input, cropRect), 908 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
901 fKD(kd) 909 fKD(kd)
902 { 910 {
903 } 911 }
904 912
905 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer) 913 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer)
906 : INHERITED(buffer) 914 : INHERITED(buffer)
907 { 915 {
908 fKD = buffer.readScalar(); 916 fKD = buffer.readScalar();
917 buffer.validate(SkScalarIsFinite(fKD));
909 } 918 }
910 919
911 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st { 920 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st {
912 this->INHERITED::flatten(buffer); 921 this->INHERITED::flatten(buffer);
913 buffer.writeScalar(fKD); 922 buffer.writeScalar(fKD);
914 } 923 }
915 924
916 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*, 925 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*,
917 const SkBitmap& src, 926 const SkBitmap& src,
918 const SkMatrix& ctm, 927 const SkMatrix& ctm,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 fKS(ks), 985 fKS(ks),
977 fShininess(shininess) 986 fShininess(shininess)
978 { 987 {
979 } 988 }
980 989
981 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer) 990 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer)
982 : INHERITED(buffer) 991 : INHERITED(buffer)
983 { 992 {
984 fKS = buffer.readScalar(); 993 fKS = buffer.readScalar();
985 fShininess = buffer.readScalar(); 994 fShininess = buffer.readScalar();
995 buffer.validate(SkScalarIsFinite(fKS) &&
996 SkScalarIsFinite(fShininess));
986 } 997 }
987 998
988 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst { 999 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst {
989 this->INHERITED::flatten(buffer); 1000 this->INHERITED::flatten(buffer);
990 buffer.writeScalar(fKS); 1001 buffer.writeScalar(fKS);
991 buffer.writeScalar(fShininess); 1002 buffer.writeScalar(fShininess);
992 } 1003 }
993 1004
994 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*, 1005 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*,
995 const SkBitmap& src, 1006 const SkBitmap& src,
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 1584
1574 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 1585 builder->fsCodeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
1575 } 1586 }
1576 1587
1577 #endif 1588 #endif
1578 1589
1579 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 1590 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
1580 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 1591 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
1581 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 1592 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
1582 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1593 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698