| /* | 
 |  * 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 "include/core/SkBitmap.h" | 
 | #include "include/core/SkCanvas.h" | 
 | #include "include/core/SkShader.h" | 
 | #include "include/core/SkTileMode.h" | 
 | #include "tools/viewer/Slide.h" | 
 |  | 
 | static void make_bitmap(SkBitmap* bm) { | 
 |     const int W = 100; | 
 |     const int H = 100; | 
 |     bm->allocN32Pixels(W, H); | 
 |  | 
 |     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, SkTileMode tm) { | 
 |     SkBitmap bm; | 
 |     make_bitmap(&bm); | 
 |  | 
 |     paint->setShader(bm.makeShader(tm, tm, SkSamplingOptions())); | 
 | } | 
 |  | 
 | class RepeatTileSlide : public Slide { | 
 | public: | 
 |     RepeatTileSlide() { fName = "RepeatTile"; } | 
 |  | 
 |     void draw(SkCanvas* canvas) override { | 
 |         canvas->clear(SK_ColorGRAY); | 
 |         SkPaint paint; | 
 |         make_paint(&paint, SkTileMode::kRepeat); | 
 |  | 
 | //        canvas->scale(SK_Scalar1*2, SK_Scalar1); | 
 |         canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); | 
 |         canvas->drawPaint(paint); | 
 |     } | 
 |  | 
 | }; | 
 |  | 
 | ////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | DEF_SLIDE( return new RepeatTileSlide(); ) |