aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleRepeatTile.cpp
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-13 19:33:44 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-13 19:33:44 +0000
commitf7d5726730f2c13aa53f4a6b78084beaa959c694 (patch)
tree2a0d552d2f8be78e223b8cf6bbe86415d243f48f /samplecode/SampleRepeatTile.cpp
parent4d8505992040eaeaf1dc6b91d352e208fa7deaeb (diff)
test for non-scaled bitmap tiles
git-svn-id: http://skia.googlecode.com/svn/trunk@319 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SampleRepeatTile.cpp')
-rw-r--r--samplecode/SampleRepeatTile.cpp90
1 files changed, 90 insertions, 0 deletions
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);
+