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

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: Simplified SkRect/SkIRect validity tests Created 7 years, 3 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 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 surfaceToLight = l->surfaceToLight(x, y, m[4], surfaceScale); 242 surfaceToLight = l->surfaceToLight(x, y, m[4], surfaceScale);
243 *dptr++ = lightingType.light(bottomRightNormal(m, surfaceScale), surface ToLight, l->lightColor(surfaceToLight)); 243 *dptr++ = lightingType.light(bottomRightNormal(m, surfaceScale), surface ToLight, l->lightColor(surfaceToLight));
244 } 244 }
245 } 245 }
246 246
247 SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) { 247 SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) {
248 SkPoint3 point; 248 SkPoint3 point;
249 point.fX = buffer.readScalar(); 249 point.fX = buffer.readScalar();
250 point.fY = buffer.readScalar(); 250 point.fY = buffer.readScalar();
251 point.fZ = buffer.readScalar(); 251 point.fZ = buffer.readScalar();
252 buffer.validateData(SkScalarIsFinite(point.fX) &&
253 SkScalarIsFinite(point.fY) &&
254 SkScalarIsFinite(point.fZ));
252 return point; 255 return point;
253 }; 256 };
254 257
255 void writePoint3(const SkPoint3& point, SkFlattenableWriteBuffer& buffer) { 258 void writePoint3(const SkPoint3& point, SkFlattenableWriteBuffer& buffer) {
256 buffer.writeScalar(point.fX); 259 buffer.writeScalar(point.fX);
257 buffer.writeScalar(point.fY); 260 buffer.writeScalar(point.fY);
258 buffer.writeScalar(point.fZ); 261 buffer.writeScalar(point.fZ);
259 }; 262 };
260 263
261 class SkDiffuseLightingImageFilter : public SkLightingImageFilter { 264 class SkDiffuseLightingImageFilter : public SkLightingImageFilter {
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 737
735 protected: 738 protected:
736 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { 739 SkSpotLight(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
737 fLocation = readPoint3(buffer); 740 fLocation = readPoint3(buffer);
738 fTarget = readPoint3(buffer); 741 fTarget = readPoint3(buffer);
739 fSpecularExponent = buffer.readScalar(); 742 fSpecularExponent = buffer.readScalar();
740 fCosOuterConeAngle = buffer.readScalar(); 743 fCosOuterConeAngle = buffer.readScalar();
741 fCosInnerConeAngle = buffer.readScalar(); 744 fCosInnerConeAngle = buffer.readScalar();
742 fConeScale = buffer.readScalar(); 745 fConeScale = buffer.readScalar();
743 fS = readPoint3(buffer); 746 fS = readPoint3(buffer);
747 buffer.validateData(SkScalarIsFinite(fSpecularExponent) &&
748 SkScalarIsFinite(fCosOuterConeAngle) &&
749 SkScalarIsFinite(fCosInnerConeAngle) &&
750 SkScalarIsFinite(fConeScale));
744 } 751 }
745 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color) 752 SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specu larExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar co neScale, const SkPoint3& s, const SkPoint3& color)
746 : INHERITED(color), 753 : INHERITED(color),
747 fLocation(location), 754 fLocation(location),
748 fTarget(target), 755 fTarget(target),
749 fSpecularExponent(specularExponent), 756 fSpecularExponent(specularExponent),
750 fCosOuterConeAngle(cosOuterConeAngle), 757 fCosOuterConeAngle(cosOuterConeAngle),
751 fCosInnerConeAngle(cosInnerConeAngle), 758 fCosInnerConeAngle(cosInnerConeAngle),
752 fConeScale(coneScale), 759 fConeScale(coneScale),
753 fS(s) 760 fS(s)
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 862
856 SkLightingImageFilter::~SkLightingImageFilter() { 863 SkLightingImageFilter::~SkLightingImageFilter() {
857 fLight->unref(); 864 fLight->unref();
858 } 865 }
859 866
860 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer) 867 SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer)
861 : INHERITED(buffer) 868 : INHERITED(buffer)
862 { 869 {
863 fLight = buffer.readFlattenableT<SkLight>(); 870 fLight = buffer.readFlattenableT<SkLight>();
864 fSurfaceScale = buffer.readScalar(); 871 fSurfaceScale = buffer.readScalar();
872 buffer.validateData(SkScalarIsFinite(fSurfaceScale));
865 } 873 }
866 874
867 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { 875 void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
868 this->INHERITED::flatten(buffer); 876 this->INHERITED::flatten(buffer);
869 buffer.writeFlattenable(fLight); 877 buffer.writeFlattenable(fLight);
870 buffer.writeScalar(fSurfaceScale); 878 buffer.writeScalar(fSurfaceScale);
871 } 879 }
872 880
873 /////////////////////////////////////////////////////////////////////////////// 881 ///////////////////////////////////////////////////////////////////////////////
874 882
875 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const SkIRect* cropRect = N ULL) 883 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkLight* light, SkSca lar surfaceScale, SkScalar kd, SkImageFilter* input, const SkIRect* cropRect = N ULL)
876 : SkLightingImageFilter(light, surfaceScale, input, cropRect), 884 : SkLightingImageFilter(light, surfaceScale, input, cropRect),
877 fKD(kd) 885 fKD(kd)
878 { 886 {
879 } 887 }
880 888
881 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer) 889 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff er& buffer)
882 : INHERITED(buffer) 890 : INHERITED(buffer)
883 { 891 {
884 fKD = buffer.readScalar(); 892 fKD = buffer.readScalar();
893 buffer.validateData(SkScalarIsFinite(fKD));
885 } 894 }
886 895
887 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st { 896 void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) con st {
888 this->INHERITED::flatten(buffer); 897 this->INHERITED::flatten(buffer);
889 buffer.writeScalar(fKD); 898 buffer.writeScalar(fKD);
890 } 899 }
891 900
892 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*, 901 bool SkDiffuseLightingImageFilter::onFilterImage(Proxy*,
893 const SkBitmap& src, 902 const SkBitmap& src,
894 const SkMatrix& ctm, 903 const SkMatrix& ctm,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 fKS(ks), 961 fKS(ks),
953 fShininess(shininess) 962 fShininess(shininess)
954 { 963 {
955 } 964 }
956 965
957 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer) 966 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu ffer& buffer)
958 : INHERITED(buffer) 967 : INHERITED(buffer)
959 { 968 {
960 fKS = buffer.readScalar(); 969 fKS = buffer.readScalar();
961 fShininess = buffer.readScalar(); 970 fShininess = buffer.readScalar();
971 buffer.validateData(SkScalarIsFinite(fKS) &&
972 SkScalarIsFinite(fShininess));
962 } 973 }
963 974
964 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst { 975 void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) co nst {
965 this->INHERITED::flatten(buffer); 976 this->INHERITED::flatten(buffer);
966 buffer.writeScalar(fKS); 977 buffer.writeScalar(fKS);
967 buffer.writeScalar(fShininess); 978 buffer.writeScalar(fShininess);
968 } 979 }
969 980
970 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*, 981 bool SkSpecularLightingImageFilter::onFilterImage(Proxy*,
971 const SkBitmap& src, 982 const SkBitmap& src,
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
1564 1575
1565 #endif 1576 #endif
1566 1577
1567 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 1578 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
1568 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 1579 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
1569 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 1580 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
1570 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDistantLight) 1581 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDistantLight)
1571 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPointLight) 1582 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPointLight)
1572 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpotLight) 1583 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpotLight)
1573 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1584 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698