1/* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "gm.h" 9#include "SkImageFilter.h" 10#include "SkRandom.h" 11 12#define WIDTH 640 13#define HEIGHT 480 14 15#define RESIZE_FACTOR SkIntToScalar(2) 16 17DEF_SIMPLE_GM(imageresizetiled, canvas, WIDTH, HEIGHT) { 18 SkPaint paint; 19 SkMatrix matrix; 20 matrix.setScale(RESIZE_FACTOR, RESIZE_FACTOR); 21 SkAutoTUnref<SkImageFilter> imageFilter( 22 SkImageFilter::CreateMatrixFilter(matrix, kNone_SkFilterQuality)); 23 paint.setImageFilter(imageFilter.get()); 24 const SkScalar tile_size = SkIntToScalar(100); 25 SkRect bounds; 26 canvas->getClipBounds(&bounds); 27 for (SkScalar y = 0; y < HEIGHT; y += tile_size) { 28 for (SkScalar x = 0; x < WIDTH; x += tile_size) { 29 canvas->save(); 30 canvas->clipRect(SkRect::MakeXYWH(x, y, tile_size, tile_size)); 31 canvas->scale(SkScalarInvert(RESIZE_FACTOR), 32 SkScalarInvert(RESIZE_FACTOR)); 33 canvas->saveLayer(nullptr, &paint); 34 const char* str[] = { 35 "The quick", 36 "brown fox", 37 "jumped over", 38 "the lazy dog.", 39 }; 40 SkPaint textPaint; 41 textPaint.setAntiAlias(true); 42 sk_tool_utils::set_portable_typeface(&textPaint); 43 textPaint.setTextSize(SkIntToScalar(100)); 44 int posY = 0; 45 for (unsigned i = 0; i < SK_ARRAY_COUNT(str); i++) { 46 posY += 100; 47 canvas->drawText(str[i], strlen(str[i]), SkIntToScalar(0), 48 SkIntToScalar(posY), textPaint); 49 } 50 canvas->restore(); 51 canvas->restore(); 52 } 53 } 54} 55