| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "gm.h" | 8 #include "gm.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkGradientShader.h" | 10 #include "SkGradientShader.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 class Xfermodes3GM : public GM { | 25 class Xfermodes3GM : public GM { |
| 26 public: | 26 public: |
| 27 Xfermodes3GM() {} | 27 Xfermodes3GM() {} |
| 28 | 28 |
| 29 protected: | 29 protected: |
| 30 virtual SkString onShortName() SK_OVERRIDE { | 30 virtual SkString onShortName() SK_OVERRIDE { |
| 31 return SkString("xfermodes3"); | 31 return SkString("xfermodes3"); |
| 32 } | 32 } |
| 33 | 33 |
| 34 virtual SkISize onISize() SK_OVERRIDE { | 34 virtual SkISize onISize() SK_OVERRIDE { |
| 35 return make_isize(630, 620); | 35 return make_isize(630, 1215); |
| 36 } | 36 } |
| 37 | 37 |
| 38 virtual void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE { | 38 virtual void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE { |
| 39 SkPaint bgPaint; | 39 SkPaint bgPaint; |
| 40 bgPaint.setColor(0xFF70D0E0); | 40 bgPaint.setColor(0xFF70D0E0); |
| 41 canvas->drawPaint(bgPaint); | 41 canvas->drawPaint(bgPaint); |
| 42 } | 42 } |
| 43 | 43 |
| 44 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 44 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| 45 canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); | 45 canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); |
| 46 | 46 |
| 47 SkPaint labelP; | 47 SkPaint labelP; |
| 48 labelP.setAntiAlias(true); | 48 labelP.setAntiAlias(true); |
| 49 | 49 |
| 50 static const SkColor kSolidColors[] = { | 50 static const SkColor kSolidColors[] = { |
| 51 SK_ColorTRANSPARENT, | 51 SK_ColorTRANSPARENT, |
| 52 SK_ColorBLUE, | 52 SK_ColorBLUE, |
| 53 0x80808000 | 53 0x80808000 |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 static const SkColor kBmpAlphas[] = { | 56 static const SkColor kBmpAlphas[] = { |
| 57 0xff, | 57 0xff, |
| 58 0x80, | 58 0x80, |
| 59 }; | 59 }; |
| 60 | 60 |
| 61 SkAutoTUnref<SkCanvas> tempCanvas(this->possiblyCreateTempCanvas(canvas,
kSize, kSize)); | 61 SkAutoTUnref<SkCanvas> tempCanvas(this->possiblyCreateTempCanvas(canvas,
kSize, kSize)); |
| 62 | 62 |
| 63 int test = 0; | 63 int test = 0; |
| 64 int x = 0, y = 0; | 64 int x = 0, y = 0; |
| 65 for (size_t m = 0; m <= SkXfermode::kLastMode; ++m) { | 65 static const struct { SkPaint::Style fStyle; SkScalar fWidth; } kStrokes
[] = { |
| 66 SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(m); | 66 {SkPaint::kFill_Style, 0}, |
| 67 canvas->drawText(SkXfermode::ModeName(mode), | 67 {SkPaint::kStroke_Style, SkIntToScalar(kSize) / 2}, |
| 68 strlen(SkXfermode::ModeName(mode)), | 68 }; |
| 69 SkIntToScalar(x), | 69 for (size_t s = 0; s < SK_ARRAY_COUNT(kStrokes); ++s) { |
| 70 SkIntToScalar(y + kSize + 3) + labelP.getTextSize()
, | 70 for (size_t m = 0; m <= SkXfermode::kLastMode; ++m) { |
| 71 labelP); | 71 SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(m); |
| 72 for (size_t c = 0; c < SK_ARRAY_COUNT(kSolidColors); ++c) { | 72 canvas->drawText(SkXfermode::ModeName(mode), |
| 73 SkPaint modePaint; | 73 strlen(SkXfermode::ModeName(mode)), |
| 74 modePaint.setXfermodeMode(mode); | 74 SkIntToScalar(x), |
| 75 modePaint.setColor(kSolidColors[c]); | 75 SkIntToScalar(y + kSize + 3) + labelP.getTextSi
ze(), |
| 76 labelP); |
| 77 for (size_t c = 0; c < SK_ARRAY_COUNT(kSolidColors); ++c) { |
| 78 SkPaint modePaint; |
| 79 modePaint.setXfermodeMode(mode); |
| 80 modePaint.setColor(kSolidColors[c]); |
| 81 modePaint.setStyle(kStrokes[s].fStyle); |
| 82 modePaint.setStrokeWidth(kStrokes[s].fWidth); |
| 76 | 83 |
| 77 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempCanvas
.get()); | 84 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempCa
nvas.get()); |
| 78 | 85 |
| 79 ++test; | 86 ++test; |
| 80 x += kSize + 10; | 87 x += kSize + 10; |
| 81 if (!(test % kTestsPerRow)) { | 88 if (!(test % kTestsPerRow)) { |
| 82 x = 0; | 89 x = 0; |
| 83 y += kSize + 30; | 90 y += kSize + 30; |
| 91 } |
| 84 } | 92 } |
| 85 } | 93 for (size_t a = 0; a < SK_ARRAY_COUNT(kBmpAlphas); ++a) { |
| 86 for (size_t a = 0; a < SK_ARRAY_COUNT(kBmpAlphas); ++a) { | 94 SkPaint modePaint; |
| 87 SkPaint modePaint; | 95 modePaint.setXfermodeMode(mode); |
| 88 modePaint.setXfermodeMode(mode); | 96 modePaint.setAlpha(kBmpAlphas[a]); |
| 89 modePaint.setAlpha(kBmpAlphas[a]); | 97 modePaint.setShader(fBmpShader); |
| 90 modePaint.setShader(fBmpShader); | 98 modePaint.setStyle(kStrokes[s].fStyle); |
| 99 modePaint.setStrokeWidth(kStrokes[s].fWidth); |
| 91 | 100 |
| 92 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempCanvas
.get()); | 101 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempCa
nvas.get()); |
| 93 | 102 |
| 94 ++test; | 103 ++test; |
| 95 x += kSize + 10; | 104 x += kSize + 10; |
| 96 if (!(test % kTestsPerRow)) { | 105 if (!(test % kTestsPerRow)) { |
| 97 x = 0; | 106 x = 0; |
| 98 y += kSize + 30; | 107 y += kSize + 30; |
| 108 } |
| 99 } | 109 } |
| 100 } | 110 } |
| 101 } | 111 } |
| 102 } | 112 } |
| 103 | 113 |
| 104 private: | 114 private: |
| 105 /** | 115 /** |
| 106 * GrContext has optimizations around full rendertarget draws that can be re
placed with clears. | 116 * GrContext has optimizations around full rendertarget draws that can be re
placed with clears. |
| 107 * We are trying to test those. We could use saveLayer() to create small SkG
puDevices but | 117 * We are trying to test those. We could use saveLayer() to create small SkG
puDevices but |
| 108 * saveLayer() uses the texture cache. This means that the actual render tar
get may be larger | 118 * saveLayer() uses the texture cache. This means that the actual render tar
get may be larger |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 SkAutoTUnref<SkShader> fBmpShader; | 237 SkAutoTUnref<SkShader> fBmpShader; |
| 228 | 238 |
| 229 typedef GM INHERITED; | 239 typedef GM INHERITED; |
| 230 }; | 240 }; |
| 231 | 241 |
| 232 ////////////////////////////////////////////////////////////////////////////// | 242 ////////////////////////////////////////////////////////////////////////////// |
| 233 | 243 |
| 234 DEF_GM(return new Xfermodes3GM;) | 244 DEF_GM(return new Xfermodes3GM;) |
| 235 | 245 |
| 236 } | 246 } |
| OLD | NEW |