| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 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 "gm.h" | 8 #include "gm.h" |
| 9 #include "SkAnimTimer.h" |
| 9 #include "SkLightingImageFilter.h" | 10 #include "SkLightingImageFilter.h" |
| 10 #include "SkOffsetImageFilter.h" | 11 #include "SkOffsetImageFilter.h" |
| 11 #include "SkPoint3.h" | 12 #include "SkPoint3.h" |
| 12 | 13 |
| 13 #define WIDTH 330 | 14 #define WIDTH 330 |
| 14 #define HEIGHT 660 | 15 #define HEIGHT 660 |
| 15 | 16 |
| 16 namespace skiagm { | 17 namespace skiagm { |
| 17 | 18 |
| 18 class ImageLightingGM : public GM { | 19 class ImageLightingGM : public GM { |
| 19 public: | 20 public: |
| 20 ImageLightingGM() { | 21 ImageLightingGM() |
| 22 : fAzimuth(SkIntToScalar(kStartAzimuth)) { |
| 21 this->setBGColor(0xFF000000); | 23 this->setBGColor(0xFF000000); |
| 22 } | 24 } |
| 23 | 25 |
| 24 protected: | 26 protected: |
| 25 | 27 |
| 26 SkString onShortName() override { | 28 SkString onShortName() override { |
| 27 return SkString("lighting"); | 29 return SkString("lighting"); |
| 28 } | 30 } |
| 29 | 31 |
| 30 SkISize onISize() override { | 32 SkISize onISize() override { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 50 checkPaint.setColor(sk_tool_utils::color_to_565(0xFF202020)); | 52 checkPaint.setColor(sk_tool_utils::color_to_565(0xFF202020)); |
| 51 for (int y = 0; y < HEIGHT; y += 16) { | 53 for (int y = 0; y < HEIGHT; y += 16) { |
| 52 for (int x = 0; x < WIDTH; x += 16) { | 54 for (int x = 0; x < WIDTH; x += 16) { |
| 53 canvas->save(); | 55 canvas->save(); |
| 54 canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); | 56 canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); |
| 55 canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), checkPaint); | 57 canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), checkPaint); |
| 56 canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), checkPaint); | 58 canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), checkPaint); |
| 57 canvas->restore(); | 59 canvas->restore(); |
| 58 } | 60 } |
| 59 } | 61 } |
| 60 SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10)); | 62 SkScalar cosAzimuth; |
| 61 SkScalar azimuthRad = SkDegreesToRadians(SkIntToScalar(225)); | 63 SkScalar sinAzimuth = SkScalarSinCos(SkDegreesToRadians(fAzimuth), &cosA
zimuth); |
| 64 |
| 65 SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40
), 0); |
| 66 SkPoint3 spotLocation = SkPoint3::Make(spotTarget.fX + 70.7214f * cosAzi
muth, |
| 67 spotTarget.fY + 70.7214f * sinAzi
muth, |
| 68 spotTarget.fZ + SkIntToScalar(20)
); |
| 69 SkScalar spotExponent = SK_Scalar1; |
| 70 |
| 71 SkPoint3 pointLocation = SkPoint3::Make(spotTarget.fX + 50 * cosAzimuth, |
| 72 spotTarget.fY + 50 * sinAzimuth, |
| 73 SkIntToScalar(10)); |
| 62 SkScalar elevationRad = SkDegreesToRadians(SkIntToScalar(5)); | 74 SkScalar elevationRad = SkDegreesToRadians(SkIntToScalar(5)); |
| 63 SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(SkScalarCos(azimu
thRad), | 75 |
| 76 SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(cosAzimuth, |
| 64 SkScalarCos(eleva
tionRad)), | 77 SkScalarCos(eleva
tionRad)), |
| 65 SkScalarMul(SkScalarSin(azimu
thRad), | 78 SkScalarMul(sinAzimuth, |
| 66 SkScalarCos(eleva
tionRad)), | 79 SkScalarCos(eleva
tionRad)), |
| 67 SkScalarSin(elevationRad)); | 80 SkScalarSin(elevationRad)); |
| 68 SkPoint3 spotLocation = SkPoint3::Make(SkIntToScalar(-10), | |
| 69 SkIntToScalar(-10), | |
| 70 SkIntToScalar(20)); | |
| 71 SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40
), 0); | |
| 72 SkScalar spotExponent = SK_Scalar1; | |
| 73 SkScalar cutoffAngle = SkIntToScalar(15); | 81 SkScalar cutoffAngle = SkIntToScalar(15); |
| 74 SkScalar kd = SkIntToScalar(2); | 82 SkScalar kd = SkIntToScalar(2); |
| 75 SkScalar ks = SkIntToScalar(1); | 83 SkScalar ks = SkIntToScalar(1); |
| 76 SkScalar shininess = SkIntToScalar(8); | 84 SkScalar shininess = SkIntToScalar(8); |
| 77 SkScalar surfaceScale = SkIntToScalar(1); | 85 SkScalar surfaceScale = SkIntToScalar(1); |
| 78 SkColor white(0xFFFFFFFF); | 86 SkColor white(0xFFFFFFFF); |
| 79 SkPaint paint; | 87 SkPaint paint; |
| 80 | 88 |
| 81 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 10, 60, 65)); | 89 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 10, 60, 65)); |
| 82 SkImageFilter::CropRect fullSizeCropRect(SkRect::MakeXYWH(0, 0, 100, 100
)); | 90 SkImageFilter::CropRect fullSizeCropRect(SkRect::MakeXYWH(0, 0, 100, 100
)); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 ks
, | 150 ks
, |
| 143 sh
ininess, | 151 sh
ininess, |
| 144 in
put, | 152 in
put, |
| 145 cr
))->unref(); | 153 cr
))->unref(); |
| 146 drawClippedBitmap(canvas, paint, 220, y); | 154 drawClippedBitmap(canvas, paint, 220, y); |
| 147 | 155 |
| 148 y += 110; | 156 y += 110; |
| 149 } | 157 } |
| 150 } | 158 } |
| 151 | 159 |
| 160 bool onAnimate(const SkAnimTimer& timer) override { |
| 161 static const SkScalar kDesiredDurationSecs = 15.0f; |
| 162 |
| 163 fAzimuth = kStartAzimuth + timer.scaled(360.0f/kDesiredDurationSecs, 360
.0f); |
| 164 return true; |
| 165 } |
| 166 |
| 152 private: | 167 private: |
| 168 static const int kStartAzimuth = 225; |
| 169 |
| 153 SkBitmap fBitmap; | 170 SkBitmap fBitmap; |
| 171 SkScalar fAzimuth; |
| 154 | 172 |
| 155 typedef GM INHERITED; | 173 typedef GM INHERITED; |
| 156 }; | 174 }; |
| 157 | 175 |
| 158 ////////////////////////////////////////////////////////////////////////////// | 176 ////////////////////////////////////////////////////////////////////////////// |
| 159 | 177 |
| 160 DEF_GM(return new ImageLightingGM;) | 178 DEF_GM(return new ImageLightingGM;) |
| 161 } | 179 } |
| OLD | NEW |