diff options
Diffstat (limited to 'samplecode/SampleMipMap.cpp')
| -rw-r--r-- | samplecode/SampleMipMap.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/samplecode/SampleMipMap.cpp b/samplecode/SampleMipMap.cpp index 21bf0f0fe5..5885591637 100644 --- a/samplecode/SampleMipMap.cpp +++ b/samplecode/SampleMipMap.cpp @@ -3,6 +3,7 @@ #include "SkCanvas.h" #include "SkDevice.h" #include "SkPaint.h" +#include "SkShader.h" static SkBitmap createBitmap(int n) { SkBitmap bitmap; @@ -30,7 +31,7 @@ static SkBitmap createBitmap(int n) { class MipMapView : public SkView { SkBitmap fBitmap; enum { - N = 128 + N = 90 }; public: MipMapView() { @@ -117,11 +118,24 @@ protected: canvas->drawBitmapRect(fBitmap, NULL, dst, NULL); canvas->translate(SkIntToScalar(N + 8), 0); canvas->drawBitmapRect(fBitmap, NULL, dst, &paint); - canvas->translate(SkIntToScalar(N + 8), 0); + canvas->translate(-SkIntToScalar(N + 8), SkIntToScalar(N + 8)); canvas->drawBitmapRect(bitmap, NULL, dst, NULL); canvas->translate(SkIntToScalar(N + 8), 0); canvas->drawBitmapRect(bitmap, NULL, dst, &paint); + SkShader* s = SkShader::CreateBitmapShader(bitmap, + SkShader::kRepeat_TileMode, + SkShader::kRepeat_TileMode); + paint.setShader(s)->unref(); + SkMatrix m; + m.setScale(SkIntToScalar(fWidth) / N, + SkIntToScalar(fWidth) / N); + s->setLocalMatrix(m); + SkRect r; + r.set(0, 0, SkIntToScalar(4*N), SkIntToScalar(5*N/2)); + r.offset(SkIntToScalar(N + 12), -SkIntToScalar(N + 4)); + canvas->drawRect(r, paint); + this->inval(NULL); } |
