diff options
Diffstat (limited to 'chromium/third_party/skia/samplecode/SampleMipMap.cpp')
-rw-r--r-- | chromium/third_party/skia/samplecode/SampleMipMap.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/chromium/third_party/skia/samplecode/SampleMipMap.cpp b/chromium/third_party/skia/samplecode/SampleMipMap.cpp new file mode 100644 index 00000000000..a9804ac5e41 --- /dev/null +++ b/chromium/third_party/skia/samplecode/SampleMipMap.cpp @@ -0,0 +1,101 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkDevice.h" +#include "SkPaint.h" +#include "SkShader.h" + +static SkBitmap createBitmap(int n) { + SkBitmap bitmap; + bitmap.allocN32Pixels(n, n); + bitmap.eraseColor(SK_ColorTRANSPARENT); + + SkCanvas canvas(bitmap); + SkRect r; + r.set(0, 0, SkIntToScalar(n), SkIntToScalar(n)); + SkPaint paint; + paint.setAntiAlias(true); + + paint.setColor(SK_ColorRED); + canvas.drawOval(r, paint); + paint.setColor(SK_ColorBLUE); + paint.setStrokeWidth(SkIntToScalar(n)/15); + paint.setStyle(SkPaint::kStroke_Style); + canvas.drawLine(0, 0, r.fRight, r.fBottom, paint); + canvas.drawLine(0, r.fBottom, r.fRight, 0, paint); + + return bitmap; +} + +class MipMapView : public SampleView { + SkBitmap fBitmap; + enum { + N = 64 + }; + bool fOnce; +public: + MipMapView() { + fOnce = false; + } + + void init() { + if (fOnce) { + return; + } + fOnce = true; + + fBitmap = createBitmap(N); + + fWidth = N; + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "MipMaps"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + virtual void onDrawContent(SkCanvas* canvas) { + this->init(); + + static const SkPaint::FilterLevel gLevel[] = { + SkPaint::kNone_FilterLevel, + SkPaint::kLow_FilterLevel, + SkPaint::kMedium_FilterLevel, + SkPaint::kHigh_FilterLevel, + }; + + SkPaint paint; + + for (size_t i = 0; i < SK_ARRAY_COUNT(gLevel); ++i) { + SkScalar x = 10.0f + i * 100; + SkScalar y = 10.0f; + + paint.setFilterLevel(gLevel[i]); + + canvas->drawBitmap(fBitmap, x, y, &paint); + } + this->inval(NULL); + } + +private: + int fWidth; + + typedef SampleView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new MipMapView; } +static SkViewRegister reg(MyFactory); |