| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 "SkPath.h" | 9 #include "SkPath.h" |
| 10 #include "SkRegion.h" | 10 #include "SkRegion.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE }; | 28 SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE }; |
| 29 SkScalar pos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; | 29 SkScalar pos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; |
| 30 SkPaint paint; | 30 SkPaint paint; |
| 31 | 31 |
| 32 paint.setDither(true); | 32 paint.setDither(true); |
| 33 paint.setShader(SkGradientShader::CreateLinear(pts, colors, pos, | 33 paint.setShader(SkGradientShader::CreateLinear(pts, colors, pos, |
| 34 SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode))->unref(); | 34 SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode))->unref(); |
| 35 canvas.drawPaint(paint); | 35 canvas.drawPaint(paint); |
| 36 } | 36 } |
| 37 | 37 |
| 38 static void setup(SkPaint* paint, const SkBitmap& bm, SkPaint::FilterLevel filte
r_level, | 38 static void setup(SkPaint* paint, const SkBitmap& bm, SkFilterQuality filter_lev
el, |
| 39 SkShader::TileMode tmx, SkShader::TileMode tmy) { | 39 SkShader::TileMode tmx, SkShader::TileMode tmy) { |
| 40 SkShader* shader = SkShader::CreateBitmapShader(bm, tmx, tmy); | 40 SkShader* shader = SkShader::CreateBitmapShader(bm, tmx, tmy); |
| 41 paint->setShader(shader)->unref(); | 41 paint->setShader(shader)->unref(); |
| 42 paint->setFilterLevel(filter_level); | 42 paint->setFilterQuality(filter_level); |
| 43 } | 43 } |
| 44 | 44 |
| 45 static const SkColorType gColorTypes[] = { | 45 static const SkColorType gColorTypes[] = { |
| 46 kN32_SkColorType, | 46 kN32_SkColorType, |
| 47 kRGB_565_SkColorType, | 47 kRGB_565_SkColorType, |
| 48 }; | 48 }; |
| 49 | 49 |
| 50 class ScaledTilingGM : public skiagm::GM { | 50 class ScaledTilingGM : public skiagm::GM { |
| 51 SkAutoTUnref<SkBlurDrawLooper> fLooper; | 51 SkAutoTUnref<SkBlurDrawLooper> fLooper; |
| 52 public: | 52 public: |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 84 |
| 85 void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 85 void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| 86 float scale = 32.f/kPOTSize; | 86 float scale = 32.f/kPOTSize; |
| 87 | 87 |
| 88 int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize; | 88 int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize; |
| 89 | 89 |
| 90 SkRect r = { 0, 0, SkIntToScalar(size*2), SkIntToScalar(size*2) }; | 90 SkRect r = { 0, 0, SkIntToScalar(size*2), SkIntToScalar(size*2) }; |
| 91 | 91 |
| 92 static const char* gColorTypeNames[] = { "8888" , "565", "4444" }; | 92 static const char* gColorTypeNames[] = { "8888" , "565", "4444" }; |
| 93 | 93 |
| 94 static const SkPaint::FilterLevel gFilterLevels[] = | 94 static const SkFilterQuality gFilterQualitys[] = |
| 95 { SkPaint::kNone_FilterLevel, | 95 { kNone_SkFilterQuality, |
| 96 SkPaint::kLow_FilterLevel, | 96 kLow_SkFilterQuality, |
| 97 SkPaint::kMedium_FilterLevel, | 97 kMedium_SkFilterQuality, |
| 98 SkPaint::kHigh_FilterLevel }; | 98 kHigh_SkFilterQuality }; |
| 99 static const char* gFilterNames[] = { "None", "Low", "Medium",
"High" }; | 99 static const char* gFilterNames[] = { "None", "Low", "Medium", "High" }; |
| 100 | 100 |
| 101 static const SkShader::TileMode gModes[] = { SkShader::kClamp_TileMode,
SkShader::kRepeat_TileMode, SkShader::kMirror_TileMode }; | 101 static const SkShader::TileMode gModes[] = { SkShader::kClamp_TileMode,
SkShader::kRepeat_TileMode, SkShader::kMirror_TileMode }; |
| 102 static const char* gModeNames[] = { "C",
"R", "M" }; | 102 static const char* gModeNames[] = { "C",
"R", "M" }; |
| 103 | 103 |
| 104 SkScalar y = SkIntToScalar(24); | 104 SkScalar y = SkIntToScalar(24); |
| 105 SkScalar x = SkIntToScalar(10)/scale; | 105 SkScalar x = SkIntToScalar(10)/scale; |
| 106 | 106 |
| 107 for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) { | 107 for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) { |
| 108 for (size_t ky = 0; ky < SK_ARRAY_COUNT(gModes); ky++) { | 108 for (size_t ky = 0; ky < SK_ARRAY_COUNT(gModes); ky++) { |
| 109 SkPaint p; | 109 SkPaint p; |
| 110 SkString str; | 110 SkString str; |
| 111 p.setAntiAlias(true); | 111 p.setAntiAlias(true); |
| 112 sk_tool_utils::set_portable_typeface(&p); | 112 sk_tool_utils::set_portable_typeface(&p); |
| 113 p.setDither(true); | 113 p.setDither(true); |
| 114 p.setLooper(fLooper); | 114 p.setLooper(fLooper); |
| 115 str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]); | 115 str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]); |
| 116 | 116 |
| 117 p.setTextAlign(SkPaint::kCenter_Align); | 117 p.setTextAlign(SkPaint::kCenter_Align); |
| 118 canvas->drawText(str.c_str(), str.size(), scale*(x + r.width()/2
), y, p); | 118 canvas->drawText(str.c_str(), str.size(), scale*(x + r.width()/2
), y, p); |
| 119 | 119 |
| 120 x += r.width() * 4 / 3; | 120 x += r.width() * 4 / 3; |
| 121 } | 121 } |
| 122 } | 122 } |
| 123 | 123 |
| 124 y = SkIntToScalar(40) / scale; | 124 y = SkIntToScalar(40) / scale; |
| 125 | 125 |
| 126 for (size_t i = 0; i < SK_ARRAY_COUNT(gColorTypes); i++) { | 126 for (size_t i = 0; i < SK_ARRAY_COUNT(gColorTypes); i++) { |
| 127 for (size_t j = 0; j < SK_ARRAY_COUNT(gFilterLevels); j++) { | 127 for (size_t j = 0; j < SK_ARRAY_COUNT(gFilterQualitys); j++) { |
| 128 x = SkIntToScalar(10)/scale; | 128 x = SkIntToScalar(10)/scale; |
| 129 for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) { | 129 for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) { |
| 130 for (size_t ky = 0; ky < SK_ARRAY_COUNT(gModes); ky++) { | 130 for (size_t ky = 0; ky < SK_ARRAY_COUNT(gModes); ky++) { |
| 131 SkPaint paint; | 131 SkPaint paint; |
| 132 #if 1 // Temporary change to regen bitmap before each draw. This may help tracki
ng down an issue | 132 #if 1 // Temporary change to regen bitmap before each draw. This may help tracki
ng down an issue |
| 133 // on SGX where resizing NPOT textures to POT textures exhibits a driver b
ug. | 133 // on SGX where resizing NPOT textures to POT textures exhibits a driver b
ug. |
| 134 if (!fPowerOfTwoSize) { | 134 if (!fPowerOfTwoSize) { |
| 135 makebm(&fTexture[i], gColorTypes[i], size, size); | 135 makebm(&fTexture[i], gColorTypes[i], size, size); |
| 136 } | 136 } |
| 137 #endif | 137 #endif |
| 138 setup(&paint, fTexture[i], gFilterLevels[j], gModes[kx],
gModes[ky]); | 138 setup(&paint, fTexture[i], gFilterQualitys[j], gModes[kx
], gModes[ky]); |
| 139 paint.setDither(true); | 139 paint.setDither(true); |
| 140 | 140 |
| 141 canvas->save(); | 141 canvas->save(); |
| 142 canvas->scale(scale,scale); | 142 canvas->scale(scale,scale); |
| 143 canvas->translate(x, y); | 143 canvas->translate(x, y); |
| 144 canvas->drawRect(r, paint); | 144 canvas->drawRect(r, paint); |
| 145 canvas->restore(); | 145 canvas->restore(); |
| 146 | 146 |
| 147 x += r.width() * 4 / 3; | 147 x += r.width() * 4 / 3; |
| 148 } | 148 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 private: | 269 private: |
| 270 typedef skiagm::GM INHERITED; | 270 typedef skiagm::GM INHERITED; |
| 271 }; | 271 }; |
| 272 | 272 |
| 273 ////////////////////////////////////////////////////////////////////////////// | 273 ////////////////////////////////////////////////////////////////////////////// |
| 274 | 274 |
| 275 DEF_GM( return new ScaledTilingGM(true); ) | 275 DEF_GM( return new ScaledTilingGM(true); ) |
| 276 DEF_GM( return new ScaledTilingGM(false); ) | 276 DEF_GM( return new ScaledTilingGM(false); ) |
| 277 DEF_GM( return new ScaledTiling2GM(make_bm, "bitmap"); ) | 277 DEF_GM( return new ScaledTiling2GM(make_bm, "bitmap"); ) |
| 278 DEF_GM( return new ScaledTiling2GM(make_grad, "gradient"); ) | 278 DEF_GM( return new ScaledTiling2GM(make_grad, "gradient"); ) |
| OLD | NEW |