1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2011 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci#include "include/core/SkBitmap.h" 8cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 9cb93a386Sopenharmony_ci#include "include/core/SkShader.h" 10cb93a386Sopenharmony_ci#include "samplecode/Sample.h" 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_cistatic void make_bitmap(SkBitmap* bm) { 13cb93a386Sopenharmony_ci const int W = 100; 14cb93a386Sopenharmony_ci const int H = 100; 15cb93a386Sopenharmony_ci bm->allocN32Pixels(W, H); 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci SkPaint paint; 18cb93a386Sopenharmony_ci SkCanvas canvas(*bm); 19cb93a386Sopenharmony_ci canvas.drawColor(SK_ColorWHITE); 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ci const SkColor colors[] = { 22cb93a386Sopenharmony_ci SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE 23cb93a386Sopenharmony_ci }; 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ci for (int ix = 0; ix < W; ix += 1) { 26cb93a386Sopenharmony_ci SkScalar x = SkIntToScalar(ix) + SK_ScalarHalf; 27cb93a386Sopenharmony_ci paint.setColor(colors[ix & 3]); 28cb93a386Sopenharmony_ci canvas.drawLine(x, 0, x, SkIntToScalar(H - 1), paint); 29cb93a386Sopenharmony_ci } 30cb93a386Sopenharmony_ci paint.setColor(SK_ColorGRAY); 31cb93a386Sopenharmony_ci canvas.drawLine(0, 0, SkIntToScalar(W), 0, paint); 32cb93a386Sopenharmony_ci} 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_cistatic void make_paint(SkPaint* paint, SkTileMode tm) { 35cb93a386Sopenharmony_ci SkBitmap bm; 36cb93a386Sopenharmony_ci make_bitmap(&bm); 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci paint->setShader(bm.makeShader(tm, tm, SkSamplingOptions())); 39cb93a386Sopenharmony_ci} 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ciclass RepeatTileView : public Sample { 42cb93a386Sopenharmony_cipublic: 43cb93a386Sopenharmony_ci RepeatTileView() { 44cb93a386Sopenharmony_ci this->setBGColor(SK_ColorGRAY); 45cb93a386Sopenharmony_ci } 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ciprotected: 48cb93a386Sopenharmony_ci SkString name() override { return SkString("RepeatTile"); } 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci void onDrawContent(SkCanvas* canvas) override { 51cb93a386Sopenharmony_ci SkPaint paint; 52cb93a386Sopenharmony_ci make_paint(&paint, SkTileMode::kRepeat); 53cb93a386Sopenharmony_ci 54cb93a386Sopenharmony_ci// canvas->scale(SK_Scalar1*2, SK_Scalar1); 55cb93a386Sopenharmony_ci canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); 56cb93a386Sopenharmony_ci canvas->drawPaint(paint); 57cb93a386Sopenharmony_ci } 58cb93a386Sopenharmony_ci 59cb93a386Sopenharmony_ciprivate: 60cb93a386Sopenharmony_ci using INHERITED = Sample; 61cb93a386Sopenharmony_ci}; 62cb93a386Sopenharmony_ci 63cb93a386Sopenharmony_ci////////////////////////////////////////////////////////////////////////////// 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ciDEF_SAMPLE( return new RepeatTileView(); ) 66