| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "SampleCode.h" | 8 #include "SampleCode.h" |
| 9 #include "SkAnimTimer.h" | 9 #include "SkAnimTimer.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 sk_sp<SkShader> fShader1; | 64 sk_sp<SkShader> fShader1; |
| 65 sk_sp<SkShader> fShaderCompose; | 65 sk_sp<SkShader> fShaderCompose; |
| 66 SkScalar fXFreq; | 66 SkScalar fXFreq; |
| 67 SkScalar fYFreq; | 67 SkScalar fYFreq; |
| 68 SkScalar fSeed; | 68 SkScalar fSeed; |
| 69 SkPoint fPts[SkPatchUtils::kNumCtrlPts]; | 69 SkPoint fPts[SkPatchUtils::kNumCtrlPts]; |
| 70 SkScalar fTexX; | 70 SkScalar fTexX; |
| 71 SkScalar fTexY; | 71 SkScalar fTexY; |
| 72 SkScalar fTexScale; | 72 SkScalar fTexScale; |
| 73 SkMatrix fInvMatrix; | 73 SkMatrix fInvMatrix; |
| 74 bool fShowGrid = false; |
| 75 |
| 74 public: | 76 public: |
| 75 PerlinPatchView() : fXFreq(0.025f), fYFreq(0.025f), fSeed(0.0f), | 77 PerlinPatchView() : fXFreq(0.025f), fYFreq(0.025f), fSeed(0.0f), |
| 76 fTexX(100.0), fTexY(50.0), fTexScale(1.0f) { | 78 fTexX(100.0), fTexY(50.0), fTexScale(1.0f) { |
| 77 const SkScalar s = 2; | 79 const SkScalar s = 2; |
| 78 // The order of the colors and points is clockwise starting at upper-lef
t corner. | 80 // The order of the colors and points is clockwise starting at upper-lef
t corner. |
| 79 //top points | 81 //top points |
| 80 fPts[0].set(100 * s, 100 * s); | 82 fPts[0].set(100 * s, 100 * s); |
| 81 fPts[1].set(150 * s, 50 * s); | 83 fPts[1].set(150 * s, 50 * s); |
| 82 fPts[2].set(250 * s, 150 * s); | 84 fPts[2].set(250 * s, 150 * s); |
| 83 fPts[3].set(300 * s, 100 * s); | 85 fPts[3].set(300 * s, 100 * s); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 107 NULL); | 109 NULL); |
| 108 } | 110 } |
| 109 | 111 |
| 110 protected: | 112 protected: |
| 111 // overrides from SkEventSink | 113 // overrides from SkEventSink |
| 112 bool onQuery(SkEvent* evt) override { | 114 bool onQuery(SkEvent* evt) override { |
| 113 if (SampleCode::TitleQ(*evt)) { | 115 if (SampleCode::TitleQ(*evt)) { |
| 114 SampleCode::TitleR(evt, "PerlinPatch"); | 116 SampleCode::TitleR(evt, "PerlinPatch"); |
| 115 return true; | 117 return true; |
| 116 } | 118 } |
| 119 SkUnichar uni; |
| 120 if (SampleCode::CharQ(*evt, &uni)) { |
| 121 switch (uni) { |
| 122 case 'g': fShowGrid = !fShowGrid; this->inval(nullptr); return t
rue; |
| 123 default: break; |
| 124 } |
| 125 } |
| 117 return this->INHERITED::onQuery(evt); | 126 return this->INHERITED::onQuery(evt); |
| 118 } | 127 } |
| 119 | 128 |
| 120 bool onAnimate(const SkAnimTimer& timer) override { | 129 bool onAnimate(const SkAnimTimer& timer) override { |
| 121 fSeed += 0.005f; | 130 fSeed += 0.005f; |
| 122 return true; | 131 return true; |
| 123 } | 132 } |
| 124 | 133 |
| 125 | 134 |
| 126 void onDrawContent(SkCanvas* canvas) override { | 135 void onDrawContent(SkCanvas* canvas) override { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 140 ; | 149 ; |
| 141 | 150 |
| 142 sk_sp<SkXfermode> xfer(SkXfermode::Make(SkXfermode::kSrc_Mode)); | 151 sk_sp<SkXfermode> xfer(SkXfermode::Make(SkXfermode::kSrc_Mode)); |
| 143 | 152 |
| 144 SkScalar scaleFreq = 2.0; | 153 SkScalar scaleFreq = 2.0; |
| 145 fShader1 = SkPerlinNoiseShader2::MakeImprovedNoise(fXFreq/scaleFreq, fYF
req/scaleFreq, 4, | 154 fShader1 = SkPerlinNoiseShader2::MakeImprovedNoise(fXFreq/scaleFreq, fYF
req/scaleFreq, 4, |
| 146 fSeed); | 155 fSeed); |
| 147 fShaderCompose = SkShader::MakeComposeShader(fShader0, fShader1, nullptr
); | 156 fShaderCompose = SkShader::MakeComposeShader(fShader0, fShader1, nullptr
); |
| 148 | 157 |
| 149 paint.setShader(fShaderCompose); | 158 paint.setShader(fShaderCompose); |
| 150 canvas->drawPatch(fPts, nullptr, texCoords, xfer, paint); | 159 |
| 160 const SkPoint* tex = texCoords; |
| 161 if (fShowGrid) { |
| 162 tex = nullptr; |
| 163 } |
| 164 canvas->drawPatch(fPts, nullptr, tex, xfer, paint); |
| 151 | 165 |
| 152 draw_control_points(canvas, fPts); | 166 draw_control_points(canvas, fPts); |
| 153 } | 167 } |
| 154 | 168 |
| 155 class PtClick : public Click { | 169 class PtClick : public Click { |
| 156 public: | 170 public: |
| 157 int fIndex; | 171 int fIndex; |
| 158 PtClick(SkView* view, int index) : Click(view), fIndex(index) {} | 172 PtClick(SkView* view, int index) : Click(view), fIndex(index) {} |
| 159 }; | 173 }; |
| 160 | 174 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 } | 211 } |
| 198 this->inval(nullptr); | 212 this->inval(nullptr); |
| 199 return true; | 213 return true; |
| 200 } | 214 } |
| 201 | 215 |
| 202 private: | 216 private: |
| 203 typedef SampleView INHERITED; | 217 typedef SampleView INHERITED; |
| 204 }; | 218 }; |
| 205 | 219 |
| 206 DEF_SAMPLE( return new PerlinPatchView(); ) | 220 DEF_SAMPLE( return new PerlinPatchView(); ) |
| OLD | NEW |