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

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

Issue 1316123003: Style Change: SkNEW->new; SkDELETE->delete (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-26 (Wednesday) 15:59:00 EDT Created 5 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
« no previous file with comments | « src/effects/SkLerpXfermode.cpp ('k') | src/effects/SkLumaColorFilter.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 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 520
521 class GrDiffuseLightingEffect : public GrLightingEffect { 521 class GrDiffuseLightingEffect : public GrLightingEffect {
522 public: 522 public:
523 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager, 523 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager,
524 GrTexture* texture, 524 GrTexture* texture,
525 const SkImageFilterLight* light, 525 const SkImageFilterLight* light,
526 SkScalar surfaceScale, 526 SkScalar surfaceScale,
527 const SkMatrix& matrix, 527 const SkMatrix& matrix,
528 SkScalar kd, 528 SkScalar kd,
529 BoundaryMode boundaryMode) { 529 BoundaryMode boundaryMode) {
530 return SkNEW_ARGS(GrDiffuseLightingEffect, (procDataManager, 530 return new GrDiffuseLightingEffect(procDataManager, texture, light, surf aceScale, matrix,
531 texture, 531 kd, boundaryMode);
532 light,
533 surfaceScale,
534 matrix,
535 kd,
536 boundaryMode));
537 } 532 }
538 533
539 const char* name() const override { return "DiffuseLighting"; } 534 const char* name() const override { return "DiffuseLighting"; }
540 535
541 SkScalar kd() const { return fKD; } 536 SkScalar kd() const { return fKD; }
542 537
543 private: 538 private:
544 GrGLFragmentProcessor* onCreateGLInstance() const override; 539 GrGLFragmentProcessor* onCreateGLInstance() const override;
545 540
546 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride; 541 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
(...skipping 16 matching lines...) Expand all
563 class GrSpecularLightingEffect : public GrLightingEffect { 558 class GrSpecularLightingEffect : public GrLightingEffect {
564 public: 559 public:
565 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager, 560 static GrFragmentProcessor* Create(GrProcessorDataManager* procDataManager,
566 GrTexture* texture, 561 GrTexture* texture,
567 const SkImageFilterLight* light, 562 const SkImageFilterLight* light,
568 SkScalar surfaceScale, 563 SkScalar surfaceScale,
569 const SkMatrix& matrix, 564 const SkMatrix& matrix,
570 SkScalar ks, 565 SkScalar ks,
571 SkScalar shininess, 566 SkScalar shininess,
572 BoundaryMode boundaryMode) { 567 BoundaryMode boundaryMode) {
573 return SkNEW_ARGS(GrSpecularLightingEffect, (procDataManager, 568 return new GrSpecularLightingEffect(procDataManager, texture, light, sur faceScale, matrix,
574 texture, 569 ks, shininess, boundaryMode);
575 light,
576 surfaceScale,
577 matrix,
578 ks,
579 shininess,
580 boundaryMode));
581 } 570 }
582 571
583 const char* name() const override { return "SpecularLighting"; } 572 const char* name() const override { return "SpecularLighting"; }
584 573
585 GrGLFragmentProcessor* onCreateGLInstance() const override; 574 GrGLFragmentProcessor* onCreateGLInstance() const override;
586 575
587 SkScalar ks() const { return fKS; } 576 SkScalar ks() const { return fKS; }
588 SkScalar shininess() const { return fShininess; } 577 SkScalar shininess() const { return fShininess; }
589 578
590 private: 579 private:
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 } 744 }
756 745
757 SkPoint3 surfaceToLight(int x, int y, int z, SkScalar surfaceScale) const { 746 SkPoint3 surfaceToLight(int x, int y, int z, SkScalar surfaceScale) const {
758 return fDirection; 747 return fDirection;
759 }; 748 };
760 const SkPoint3& lightColor(const SkPoint3&) const { return this->color(); } 749 const SkPoint3& lightColor(const SkPoint3&) const { return this->color(); }
761 LightType type() const override { return kDistant_LightType; } 750 LightType type() const override { return kDistant_LightType; }
762 const SkPoint3& direction() const { return fDirection; } 751 const SkPoint3& direction() const { return fDirection; }
763 GrGLLight* createGLLight() const override { 752 GrGLLight* createGLLight() const override {
764 #if SK_SUPPORT_GPU 753 #if SK_SUPPORT_GPU
765 return SkNEW(GrGLDistantLight); 754 return new GrGLDistantLight;
766 #else 755 #else
767 SkDEBUGFAIL("Should not call in GPU-less build"); 756 SkDEBUGFAIL("Should not call in GPU-less build");
768 return NULL; 757 return NULL;
769 #endif 758 #endif
770 } 759 }
771 bool requiresFragmentPosition() const override { return false; } 760 bool requiresFragmentPosition() const override { return false; }
772 761
773 bool isEqual(const SkImageFilterLight& other) const override { 762 bool isEqual(const SkImageFilterLight& other) const override {
774 if (other.type() != kDistant_LightType) { 763 if (other.type() != kDistant_LightType) {
775 return false; 764 return false;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 fLocation.fZ - SkScalarMul(SkIntToSc alar(z), 803 fLocation.fZ - SkScalarMul(SkIntToSc alar(z),
815 surfaceSc ale)); 804 surfaceSc ale));
816 fast_normalize(&direction); 805 fast_normalize(&direction);
817 return direction; 806 return direction;
818 }; 807 };
819 const SkPoint3& lightColor(const SkPoint3&) const { return this->color(); } 808 const SkPoint3& lightColor(const SkPoint3&) const { return this->color(); }
820 LightType type() const override { return kPoint_LightType; } 809 LightType type() const override { return kPoint_LightType; }
821 const SkPoint3& location() const { return fLocation; } 810 const SkPoint3& location() const { return fLocation; }
822 GrGLLight* createGLLight() const override { 811 GrGLLight* createGLLight() const override {
823 #if SK_SUPPORT_GPU 812 #if SK_SUPPORT_GPU
824 return SkNEW(GrGLPointLight); 813 return new GrGLPointLight;
825 #else 814 #else
826 SkDEBUGFAIL("Should not call in GPU-less build"); 815 SkDEBUGFAIL("Should not call in GPU-less build");
827 return NULL; 816 return NULL;
828 #endif 817 #endif
829 } 818 }
830 bool requiresFragmentPosition() const override { return true; } 819 bool requiresFragmentPosition() const override { return true; }
831 bool isEqual(const SkImageFilterLight& other) const override { 820 bool isEqual(const SkImageFilterLight& other) const override {
832 if (other.type() != kPoint_LightType) { 821 if (other.type() != kPoint_LightType) {
833 return false; 822 return false;
834 } 823 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 scale = SkScalarPow(cosAngle, fSpecularExponent); 917 scale = SkScalarPow(cosAngle, fSpecularExponent);
929 if (cosAngle < fCosInnerConeAngle) { 918 if (cosAngle < fCosInnerConeAngle) {
930 scale = SkScalarMul(scale, cosAngle - fCosOuterConeAngle); 919 scale = SkScalarMul(scale, cosAngle - fCosOuterConeAngle);
931 scale *= fConeScale; 920 scale *= fConeScale;
932 } 921 }
933 } 922 }
934 return this->color().makeScale(scale); 923 return this->color().makeScale(scale);
935 } 924 }
936 GrGLLight* createGLLight() const override { 925 GrGLLight* createGLLight() const override {
937 #if SK_SUPPORT_GPU 926 #if SK_SUPPORT_GPU
938 return SkNEW(GrGLSpotLight); 927 return new GrGLSpotLight;
939 #else 928 #else
940 SkDEBUGFAIL("Should not call in GPU-less build"); 929 SkDEBUGFAIL("Should not call in GPU-less build");
941 return NULL; 930 return NULL;
942 #endif 931 #endif
943 } 932 }
944 bool requiresFragmentPosition() const override { return true; } 933 bool requiresFragmentPosition() const override { return true; }
945 LightType type() const override { return kSpot_LightType; } 934 LightType type() const override { return kSpot_LightType; }
946 const SkPoint3& location() const { return fLocation; } 935 const SkPoint3& location() const { return fLocation; }
947 const SkPoint3& target() const { return fTarget; } 936 const SkPoint3& target() const { return fTarget; }
948 SkScalar specularExponent() const { return fSpecularExponent; } 937 SkScalar specularExponent() const { return fSpecularExponent; }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 writePoint3(fColor, buffer); 1023 writePoint3(fColor, buffer);
1035 this->onFlattenLight(buffer); 1024 this->onFlattenLight(buffer);
1036 } 1025 }
1037 1026
1038 /*static*/ SkImageFilterLight* SkImageFilterLight::UnflattenLight(SkReadBuffer& buffer) { 1027 /*static*/ SkImageFilterLight* SkImageFilterLight::UnflattenLight(SkReadBuffer& buffer) {
1039 // Read type first. 1028 // Read type first.
1040 const SkImageFilterLight::LightType type = (SkImageFilterLight::LightType)bu ffer.readInt(); 1029 const SkImageFilterLight::LightType type = (SkImageFilterLight::LightType)bu ffer.readInt();
1041 switch (type) { 1030 switch (type) {
1042 // Each of these constructors must first call SkLight's, so we'll read t he baseclass 1031 // Each of these constructors must first call SkLight's, so we'll read t he baseclass
1043 // then subclass, same order as flattenLight. 1032 // then subclass, same order as flattenLight.
1044 case SkImageFilterLight::kDistant_LightType: return SkNEW_ARGS(SkDistant Light, (buffer)); 1033 case SkImageFilterLight::kDistant_LightType:
1045 case SkImageFilterLight::kPoint_LightType: return SkNEW_ARGS(SkPointLi ght, (buffer)); 1034 return new SkDistantLight(buffer);
1046 case SkImageFilterLight::kSpot_LightType: return SkNEW_ARGS(SkSpotLig ht, (buffer)); 1035 case SkImageFilterLight::kPoint_LightType:
1036 return new SkPointLight(buffer);
1037 case SkImageFilterLight::kSpot_LightType:
1038 return new SkSpotLight(buffer);
1047 default: 1039 default:
1048 SkDEBUGFAIL("Unknown LightType."); 1040 SkDEBUGFAIL("Unknown LightType.");
1049 buffer.validate(false); 1041 buffer.validate(false);
1050 return NULL; 1042 return NULL;
1051 } 1043 }
1052 } 1044 }
1053 /////////////////////////////////////////////////////////////////////////////// 1045 ///////////////////////////////////////////////////////////////////////////////
1054 1046
1055 SkLightingImageFilter::SkLightingImageFilter(SkImageFilterLight* light, SkScalar surfaceScale, 1047 SkLightingImageFilter::SkLightingImageFilter(SkImageFilterLight* light, SkScalar surfaceScale,
1056 SkImageFilter* input, const CropRec t* cropRect) 1048 SkImageFilter* input, const CropRec t* cropRect)
1057 : INHERITED(1, &input, cropRect) 1049 : INHERITED(1, &input, cropRect)
1058 , fLight(SkRef(light)) 1050 , fLight(SkRef(light))
1059 , fSurfaceScale(surfaceScale / 255) 1051 , fSurfaceScale(surfaceScale / 255)
1060 {} 1052 {}
1061 1053
1062 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse(const SkPoint3& di rection, 1054 SkImageFilter* SkLightingImageFilter::CreateDistantLitDiffuse(const SkPoint3& di rection,
1063 SkColor lightColor , 1055 SkColor lightColor ,
1064 SkScalar surfaceSc ale, 1056 SkScalar surfaceSc ale,
1065 SkScalar kd, 1057 SkScalar kd,
1066 SkImageFilter* inp ut, 1058 SkImageFilter* inp ut,
1067 const CropRect* cr opRect) { 1059 const CropRect* cr opRect) {
1068 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkDistantLight, (direction , lightColor))); 1060 SkAutoTUnref<SkImageFilterLight> light(new SkDistantLight(direction, lightCo lor));
1069 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect); 1061 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
1070 } 1062 }
1071 1063
1072 SkImageFilter* SkLightingImageFilter::CreatePointLitDiffuse(const SkPoint3& loca tion, 1064 SkImageFilter* SkLightingImageFilter::CreatePointLitDiffuse(const SkPoint3& loca tion,
1073 SkColor lightColor, 1065 SkColor lightColor,
1074 SkScalar surfaceScal e, 1066 SkScalar surfaceScal e,
1075 SkScalar kd, 1067 SkScalar kd,
1076 SkImageFilter* input , 1068 SkImageFilter* input ,
1077 const CropRect* crop Rect) { 1069 const CropRect* crop Rect) {
1078 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkPointLight, (location, l ightColor))); 1070 SkAutoTUnref<SkImageFilterLight> light(new SkPointLight(location, lightColor ));
1079 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect); 1071 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
1080 } 1072 }
1081 1073
1082 SkImageFilter* SkLightingImageFilter::CreateSpotLitDiffuse(const SkPoint3& locat ion, 1074 SkImageFilter* SkLightingImageFilter::CreateSpotLitDiffuse(const SkPoint3& locat ion,
1083 const SkPoint3& targe t, 1075 const SkPoint3& targe t,
1084 SkScalar specularExpo nent, 1076 SkScalar specularExpo nent,
1085 SkScalar cutoffAngle, 1077 SkScalar cutoffAngle,
1086 SkColor lightColor, 1078 SkColor lightColor,
1087 SkScalar surfaceScale , 1079 SkScalar surfaceScale ,
1088 SkScalar kd, 1080 SkScalar kd,
1089 SkImageFilter* input, 1081 SkImageFilter* input,
1090 const CropRect* cropR ect) { 1082 const CropRect* cropR ect) {
1091 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkSpotLight, (location, ta rget, 1083 SkAutoTUnref<SkImageFilterLight> light(
1092 specularExpo nent, 1084 new SkSpotLight(location, target, specularExponent, cutoffAngle, lig htColor));
1093 cutoffAngle, lightColor)));
1094 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect); 1085 return SkDiffuseLightingImageFilter::Create(light, surfaceScale, kd, input, cropRect);
1095 } 1086 }
1096 1087
1097 SkImageFilter* SkLightingImageFilter::CreateDistantLitSpecular(const SkPoint3& d irection, 1088 SkImageFilter* SkLightingImageFilter::CreateDistantLitSpecular(const SkPoint3& d irection,
1098 SkColor lightColo r, 1089 SkColor lightColo r,
1099 SkScalar surfaceS cale, 1090 SkScalar surfaceS cale,
1100 SkScalar ks, 1091 SkScalar ks,
1101 SkScalar shine, 1092 SkScalar shine,
1102 SkImageFilter* in put, 1093 SkImageFilter* in put,
1103 const CropRect* c ropRect) { 1094 const CropRect* c ropRect) {
1104 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkDistantLight, (direction , lightColor))); 1095 SkAutoTUnref<SkImageFilterLight> light(new SkDistantLight(direction, lightCo lor));
1105 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect); 1096 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
1106 } 1097 }
1107 1098
1108 SkImageFilter* SkLightingImageFilter::CreatePointLitSpecular(const SkPoint3& loc ation, 1099 SkImageFilter* SkLightingImageFilter::CreatePointLitSpecular(const SkPoint3& loc ation,
1109 SkColor lightColor, 1100 SkColor lightColor,
1110 SkScalar surfaceSca le, 1101 SkScalar surfaceSca le,
1111 SkScalar ks, 1102 SkScalar ks,
1112 SkScalar shine, 1103 SkScalar shine,
1113 SkImageFilter* inpu t, 1104 SkImageFilter* inpu t,
1114 const CropRect* cro pRect) { 1105 const CropRect* cro pRect) {
1115 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkPointLight, (location, l ightColor))); 1106 SkAutoTUnref<SkImageFilterLight> light(new SkPointLight(location, lightColor ));
1116 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect); 1107 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
1117 } 1108 }
1118 1109
1119 SkImageFilter* SkLightingImageFilter::CreateSpotLitSpecular(const SkPoint3& loca tion, 1110 SkImageFilter* SkLightingImageFilter::CreateSpotLitSpecular(const SkPoint3& loca tion,
1120 const SkPoint3& targ et, 1111 const SkPoint3& targ et,
1121 SkScalar specularExp onent, 1112 SkScalar specularExp onent,
1122 SkScalar cutoffAngle , 1113 SkScalar cutoffAngle ,
1123 SkColor lightColor, 1114 SkColor lightColor,
1124 SkScalar surfaceScal e, 1115 SkScalar surfaceScal e,
1125 SkScalar ks, 1116 SkScalar ks,
1126 SkScalar shine, 1117 SkScalar shine,
1127 SkImageFilter* input , 1118 SkImageFilter* input ,
1128 const CropRect* crop Rect) { 1119 const CropRect* crop Rect) {
1129 SkAutoTUnref<SkImageFilterLight> light(SkNEW_ARGS(SkSpotLight, (location, ta rget, 1120 SkAutoTUnref<SkImageFilterLight> light(
1130 specularExpo nent, 1121 new SkSpotLight(location, target, specularExponent, cutoffAngle, lig htColor));
1131 cutoffAngle, lightColor)));
1132 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect); 1122 return SkSpecularLightingImageFilter::Create(light, surfaceScale, ks, shine, input, cropRect);
1133 } 1123 }
1134 1124
1135 SkLightingImageFilter::~SkLightingImageFilter() {} 1125 SkLightingImageFilter::~SkLightingImageFilter() {}
1136 1126
1137 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const { 1127 void SkLightingImageFilter::flatten(SkWriteBuffer& buffer) const {
1138 this->INHERITED::flatten(buffer); 1128 this->INHERITED::flatten(buffer);
1139 fLight->flattenLight(buffer); 1129 fLight->flattenLight(buffer);
1140 buffer.writeScalar(fSurfaceScale * 255); 1130 buffer.writeScalar(fSurfaceScale * 255);
1141 } 1131 }
1142 1132
1143 /////////////////////////////////////////////////////////////////////////////// 1133 ///////////////////////////////////////////////////////////////////////////////
1144 1134
1145 SkImageFilter* SkDiffuseLightingImageFilter::Create(SkImageFilterLight* light, 1135 SkImageFilter* SkDiffuseLightingImageFilter::Create(SkImageFilterLight* light,
1146 SkScalar surfaceScale, 1136 SkScalar surfaceScale,
1147 SkScalar kd, 1137 SkScalar kd,
1148 SkImageFilter* input, 1138 SkImageFilter* input,
1149 const CropRect* cropRect) { 1139 const CropRect* cropRect) {
1150 if (NULL == light) { 1140 if (NULL == light) {
1151 return NULL; 1141 return NULL;
1152 } 1142 }
1153 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(kd)) { 1143 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(kd)) {
1154 return NULL; 1144 return NULL;
1155 } 1145 }
1156 // According to the spec, kd can be any non-negative number : 1146 // According to the spec, kd can be any non-negative number :
1157 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement 1147 // http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingElement
1158 if (kd < 0) { 1148 if (kd < 0) {
1159 return NULL; 1149 return NULL;
1160 } 1150 }
1161 return SkNEW_ARGS(SkDiffuseLightingImageFilter, (light, surfaceScale, kd, in put, cropRect)); 1151 return new SkDiffuseLightingImageFilter(light, surfaceScale, kd, input, crop Rect);
1162 } 1152 }
1163 1153
1164 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkImageFilterLight* l ight, 1154 SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkImageFilterLight* l ight,
1165 SkScalar surfaceScale , 1155 SkScalar surfaceScale ,
1166 SkScalar kd, 1156 SkScalar kd,
1167 SkImageFilter* input, 1157 SkImageFilter* input,
1168 const CropRect* cropR ect) 1158 const CropRect* cropR ect)
1169 : INHERITED(light, surfaceScale, input, cropRect), 1159 : INHERITED(light, surfaceScale, input, cropRect),
1170 fKD(kd) 1160 fKD(kd)
1171 { 1161 {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 return NULL; 1277 return NULL;
1288 } 1278 }
1289 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(ks) || !SkScalarIsF inite(shininess)) { 1279 if (!SkScalarIsFinite(surfaceScale) || !SkScalarIsFinite(ks) || !SkScalarIsF inite(shininess)) {
1290 return NULL; 1280 return NULL;
1291 } 1281 }
1292 // According to the spec, ks can be any non-negative number : 1282 // According to the spec, ks can be any non-negative number :
1293 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement 1283 // http://www.w3.org/TR/SVG/filters.html#feSpecularLightingElement
1294 if (ks < 0) { 1284 if (ks < 0) {
1295 return NULL; 1285 return NULL;
1296 } 1286 }
1297 return SkNEW_ARGS(SkSpecularLightingImageFilter, 1287 return new SkSpecularLightingImageFilter(light, surfaceScale, ks, shininess, input, cropRect);
1298 (light, surfaceScale, ks, shininess, input, cropRect));
1299 } 1288 }
1300 1289
1301 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkImageFilterLight* light, 1290 SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkImageFilterLight* light,
1302 SkScalar surfaceSca le, 1291 SkScalar surfaceSca le,
1303 SkScalar ks, 1292 SkScalar ks,
1304 SkScalar shininess, 1293 SkScalar shininess,
1305 SkImageFilter* inpu t, 1294 SkImageFilter* inpu t,
1306 const CropRect* cro pRect) 1295 const CropRect* cro pRect)
1307 : INHERITED(light, surfaceScale, input, cropRect), 1296 : INHERITED(light, surfaceScale, input, cropRect),
1308 fKS(ks), 1297 fKS(ks),
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 SkPoint3 random_point3(SkRandom* random) { 1411 SkPoint3 random_point3(SkRandom* random) {
1423 return SkPoint3::Make(SkScalarToFloat(random->nextSScalar1()), 1412 return SkPoint3::Make(SkScalarToFloat(random->nextSScalar1()),
1424 SkScalarToFloat(random->nextSScalar1()), 1413 SkScalarToFloat(random->nextSScalar1()),
1425 SkScalarToFloat(random->nextSScalar1())); 1414 SkScalarToFloat(random->nextSScalar1()));
1426 } 1415 }
1427 1416
1428 SkImageFilterLight* create_random_light(SkRandom* random) { 1417 SkImageFilterLight* create_random_light(SkRandom* random) {
1429 int type = random->nextULessThan(3); 1418 int type = random->nextULessThan(3);
1430 switch (type) { 1419 switch (type) {
1431 case 0: { 1420 case 0: {
1432 return SkNEW_ARGS(SkDistantLight, (random_point3(random), random->ne xtU())); 1421 return new SkDistantLight(random_point3(random), random->nextU());
1433 } 1422 }
1434 case 1: { 1423 case 1: {
1435 return SkNEW_ARGS(SkPointLight, (random_point3(random), random->next U())); 1424 return new SkPointLight(random_point3(random), random->nextU());
1436 } 1425 }
1437 case 2: { 1426 case 2: {
1438 return SkNEW_ARGS(SkSpotLight, (random_point3(random), 1427 return new SkSpotLight(random_point3(random), random_point3(random),
1439 random_point3(random), 1428 random->nextUScalar1(), random->nextUScalar1( ), random->nextU());
1440 random->nextUScalar1(),
1441 random->nextUScalar1(),
1442 random->nextU()));
1443 } 1429 }
1444 default: 1430 default:
1445 SkFAIL("Unexpected value."); 1431 SkFAIL("Unexpected value.");
1446 return NULL; 1432 return NULL;
1447 } 1433 }
1448 } 1434 }
1449 1435
1450 SkString emitNormalFunc(BoundaryMode mode, 1436 SkString emitNormalFunc(BoundaryMode mode,
1451 const char* pointToNormalName, 1437 const char* pointToNormalName,
1452 const char* sobelFuncName) { 1438 const char* sobelFuncName) {
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 return INHERITED::onIsEqual(sBase) && 1617 return INHERITED::onIsEqual(sBase) &&
1632 this->kd() == s.kd(); 1618 this->kd() == s.kd();
1633 } 1619 }
1634 1620
1635 void GrDiffuseLightingEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, 1621 void GrDiffuseLightingEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
1636 GrProcessorKeyBuilder* b) const { 1622 GrProcessorKeyBuilder* b) const {
1637 GrGLDiffuseLightingEffect::GenKey(*this, caps, b); 1623 GrGLDiffuseLightingEffect::GenKey(*this, caps, b);
1638 } 1624 }
1639 1625
1640 GrGLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLInstance() const { 1626 GrGLFragmentProcessor* GrDiffuseLightingEffect::onCreateGLInstance() const {
1641 return SkNEW_ARGS(GrGLDiffuseLightingEffect, (*this)); 1627 return new GrGLDiffuseLightingEffect(*this);
1642 } 1628 }
1643 1629
1644 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect); 1630 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrDiffuseLightingEffect);
1645 1631
1646 GrFragmentProcessor* GrDiffuseLightingEffect::TestCreate(GrProcessorTestData* d) { 1632 GrFragmentProcessor* GrDiffuseLightingEffect::TestCreate(GrProcessorTestData* d) {
1647 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1633 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1648 SkScalar kd = d->fRandom->nextUScalar1(); 1634 SkScalar kd = d->fRandom->nextUScalar1();
1649 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1635 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1650 SkMatrix matrix; 1636 SkMatrix matrix;
1651 for (int i = 0; i < 9; i++) { 1637 for (int i = 0; i < 9; i++) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1834 this->ks() == s.ks() && 1820 this->ks() == s.ks() &&
1835 this->shininess() == s.shininess(); 1821 this->shininess() == s.shininess();
1836 } 1822 }
1837 1823
1838 void GrSpecularLightingEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, 1824 void GrSpecularLightingEffect::onGetGLProcessorKey(const GrGLSLCaps& caps,
1839 GrProcessorKeyBuilder* b) const { 1825 GrProcessorKeyBuilder* b) const {
1840 GrGLSpecularLightingEffect::GenKey(*this, caps, b); 1826 GrGLSpecularLightingEffect::GenKey(*this, caps, b);
1841 } 1827 }
1842 1828
1843 GrGLFragmentProcessor* GrSpecularLightingEffect::onCreateGLInstance() const { 1829 GrGLFragmentProcessor* GrSpecularLightingEffect::onCreateGLInstance() const {
1844 return SkNEW_ARGS(GrGLSpecularLightingEffect, (*this)); 1830 return new GrGLSpecularLightingEffect(*this);
1845 } 1831 }
1846 1832
1847 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect); 1833 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSpecularLightingEffect);
1848 1834
1849 GrFragmentProcessor* GrSpecularLightingEffect::TestCreate(GrProcessorTestData* d ) { 1835 GrFragmentProcessor* GrSpecularLightingEffect::TestCreate(GrProcessorTestData* d ) {
1850 SkScalar surfaceScale = d->fRandom->nextSScalar1(); 1836 SkScalar surfaceScale = d->fRandom->nextSScalar1();
1851 SkScalar ks = d->fRandom->nextUScalar1(); 1837 SkScalar ks = d->fRandom->nextUScalar1();
1852 SkScalar shininess = d->fRandom->nextUScalar1(); 1838 SkScalar shininess = d->fRandom->nextUScalar1();
1853 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom)); 1839 SkAutoTUnref<SkImageFilterLight> light(create_random_light(d->fRandom));
1854 SkMatrix matrix; 1840 SkMatrix matrix;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
2035 2021
2036 fsBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight); 2022 fsBuilder->codeAppendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
2037 } 2023 }
2038 2024
2039 #endif 2025 #endif
2040 2026
2041 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter) 2027 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkLightingImageFilter)
2042 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter) 2028 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiffuseLightingImageFilter)
2043 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter) 2029 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSpecularLightingImageFilter)
2044 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 2030 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW
« no previous file with comments | « src/effects/SkLerpXfermode.cpp ('k') | src/effects/SkLumaColorFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698