From f7d5726730f2c13aa53f4a6b78084beaa959c694 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Thu, 13 Aug 2009 19:33:44 +0000 Subject: test for non-scaled bitmap tiles git-svn-id: http://skia.googlecode.com/svn/trunk@319 2bbb7eff-a529-9590-31e7-b0007b416f81 --- samplecode/SampleRepeatTile.cpp | 90 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 samplecode/SampleRepeatTile.cpp (limited to 'samplecode/SampleRepeatTile.cpp') diff --git a/samplecode/SampleRepeatTile.cpp b/samplecode/SampleRepeatTile.cpp new file mode 100644 index 0000000000..755473fab4 --- /dev/null +++ b/samplecode/SampleRepeatTile.cpp @@ -0,0 +1,90 @@ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkShader.h" +#include "SkKey.h" + +static void make_bitmap(SkBitmap* bm) { + const int W = 100; + const int H = 100; + bm->setConfig(SkBitmap::kARGB_8888_Config, W, H); + bm->allocPixels(); + + SkPaint paint; + SkCanvas canvas(*bm); + canvas.drawColor(SK_ColorWHITE); + + const SkColor colors[] = { + SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE + }; + + for (int ix = 0; ix < W; ix += 1) { + SkScalar x = SkIntToScalar(ix) + SK_ScalarHalf; + paint.setColor(colors[ix & 3]); + canvas.drawLine(x, 0, x, SkIntToScalar(H - 1), paint); + } + paint.setColor(SK_ColorGRAY); + canvas.drawLine(0, 0, SkIntToScalar(W), 0, paint); +} + +static void make_paint(SkPaint* paint, SkShader::TileMode tm) { + SkBitmap bm; + make_bitmap(&bm); + + SkShader* shader = SkShader::CreateBitmapShader(bm, tm, tm); + paint->setShader(shader)->unref(); +} + +class RepeatTileView : public SkView { +public: + RepeatTileView() {} + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "RepeatTile"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + void drawBG(SkCanvas* canvas) { + canvas->drawColor(SK_ColorGRAY); + } + + virtual void onDraw(SkCanvas* canvas) { + this->drawBG(canvas); + + SkPaint paint; + make_paint(&paint, SkShader::kRepeat_TileMode); + +// canvas->scale(SK_Scalar1*2, SK_Scalar1); + canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); + canvas->drawPaint(paint); + } + + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + this->inval(NULL); + + return this->INHERITED::onFindClickHandler(x, y); + } + + virtual bool onClick(Click* click) { + return this->INHERITED::onClick(click); + } + + virtual bool handleKey(SkKey key) { + this->inval(NULL); + return true; + } + +private: + typedef SkView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new RepeatTileView; } +static SkViewRegister reg(MyFactory); + -- cgit v1.2.3