/* * 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);