1 /* 2 * Copyright 2012 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 10 #include "SkColorPriv.h" 11 #include "SkPath.h" 12 #include "SkShader.h" 13 14 DEF_SIMPLE_GM_BG(bigmatrix, canvas, 50, 50, 15 sk_tool_utils::color_to_565(0xFF66AA99)) { 16 SkMatrix m; 17 m.reset(); 18 m.setRotate(33 * SK_Scalar1); 19 m.postScale(3000 * SK_Scalar1, 3000 * SK_Scalar1); 20 m.postTranslate(6000 * SK_Scalar1, -5000 * SK_Scalar1); 21 canvas->concat(m); 22 23 SkPaint paint; 24 paint.setColor(SK_ColorRED); 25 paint.setAntiAlias(true); 26 27 bool success = m.invert(&m); 28 SkASSERT(success); 29 (void) success; // silence compiler :( 30 31 SkPath path; 32 33 SkPoint pt = {10 * SK_Scalar1, 10 * SK_Scalar1}; 34 SkScalar small = 1 / (500 * SK_Scalar1); 35 36 m.mapPoints(&pt, 1); 37 path.addCircle(pt.fX, pt.fY, small); 38 canvas->drawPath(path, paint); 39 40 pt.set(30 * SK_Scalar1, 10 * SK_Scalar1); 41 m.mapPoints(&pt, 1); 42 SkRect rect = {pt.fX - small, pt.fY - small, 43 pt.fX + small, pt.fY + small}; 44 canvas->drawRect(rect, paint); 45 46 SkBitmap bmp; 47 bmp.allocN32Pixels(2, 2); 48 uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels()); 49 pixels[0] = SkPackARGB32(0xFF, 0xFF, 0x00, 0x00); 50 pixels[1] = SkPackARGB32(0xFF, 0x00, 0xFF, 0x00); 51 pixels[2] = SkPackARGB32(0x80, 0x00, 0x00, 0x00); 52 pixels[3] = SkPackARGB32(0xFF, 0x00, 0x00, 0xFF); 53 pt.set(30 * SK_Scalar1, 30 * SK_Scalar1); 54 m.mapPoints(&pt, 1); 55 SkMatrix s; 56 s.reset(); 57 s.setScale(SK_Scalar1 / 1000, SK_Scalar1 / 1000); 58 SkShader* shader = SkShader::CreateBitmapShader( 59 bmp, 60 SkShader::kRepeat_TileMode, 61 SkShader::kRepeat_TileMode, 62 &s); 63 paint.setShader(shader)->unref(); 64 paint.setAntiAlias(false); 65 paint.setFilterQuality(kLow_SkFilterQuality); 66 rect.setLTRB(pt.fX - small, pt.fY - small, 67 pt.fX + small, pt.fY + small); 68 canvas->drawRect(rect, paint); 69 } 70