blob: 273b049a3db0005542ea6cbe64e746e678a6c0a0 [file] [log] [blame]
bsalomon@google.com1a38d552012-03-15 14:40:46 +00001/*
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 */
bungemand3ebb482015-08-05 13:57:49 -07007
bsalomon@google.com1a38d552012-03-15 14:40:46 +00008#include "gm.h"
Mike Klein33d20552017-03-22 13:47:51 -04009#include "sk_tool_utils.h"
bsalomon@google.com1a38d552012-03-15 14:40:46 +000010
11#include "SkColorPriv.h"
bungemand3ebb482015-08-05 13:57:49 -070012#include "SkPath.h"
bsalomon@google.com1a38d552012-03-15 14:40:46 +000013#include "SkShader.h"
14
halcanary2a243382015-09-09 08:16:41 -070015DEF_SIMPLE_GM_BG(bigmatrix, canvas, 50, 50,
16 sk_tool_utils::color_to_565(0xFF66AA99)) {
bsalomon@google.com1a38d552012-03-15 14:40:46 +000017 SkMatrix m;
18 m.reset();
19 m.setRotate(33 * SK_Scalar1);
20 m.postScale(3000 * SK_Scalar1, 3000 * SK_Scalar1);
21 m.postTranslate(6000 * SK_Scalar1, -5000 * SK_Scalar1);
22 canvas->concat(m);
23
24 SkPaint paint;
25 paint.setColor(SK_ColorRED);
26 paint.setAntiAlias(true);
27
reed@google.com57b19352012-04-19 19:25:49 +000028 bool success = m.invert(&m);
caryclark@google.com13130862012-06-06 12:10:45 +000029 SkASSERT(success);
humper@google.com0e515772013-01-07 19:54:40 +000030 (void) success; // silence compiler :(
bsalomon@google.com1a38d552012-03-15 14:40:46 +000031
32 SkPath path;
33
34 SkPoint pt = {10 * SK_Scalar1, 10 * SK_Scalar1};
35 SkScalar small = 1 / (500 * SK_Scalar1);
36
37 m.mapPoints(&pt, 1);
38 path.addCircle(pt.fX, pt.fY, small);
39 canvas->drawPath(path, paint);
40
41 pt.set(30 * SK_Scalar1, 10 * SK_Scalar1);
42 m.mapPoints(&pt, 1);
43 SkRect rect = {pt.fX - small, pt.fY - small,
44 pt.fX + small, pt.fY + small};
45 canvas->drawRect(rect, paint);
46
47 SkBitmap bmp;
reed@google.comeb9a46c2014-01-25 16:46:20 +000048 bmp.allocN32Pixels(2, 2);
bsalomon@google.com1a38d552012-03-15 14:40:46 +000049 uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels());
50 pixels[0] = SkPackARGB32(0xFF, 0xFF, 0x00, 0x00);
51 pixels[1] = SkPackARGB32(0xFF, 0x00, 0xFF, 0x00);
52 pixels[2] = SkPackARGB32(0x80, 0x00, 0x00, 0x00);
53 pixels[3] = SkPackARGB32(0xFF, 0x00, 0x00, 0xFF);
bsalomon@google.com1a38d552012-03-15 14:40:46 +000054 pt.set(30 * SK_Scalar1, 30 * SK_Scalar1);
55 m.mapPoints(&pt, 1);
bsalomon@google.com1a38d552012-03-15 14:40:46 +000056 SkMatrix s;
57 s.reset();
58 s.setScale(SK_Scalar1 / 1000, SK_Scalar1 / 1000);
reed2ad1aa62016-03-09 09:50:50 -080059 paint.setShader(SkShader::MakeBitmapShader(bmp, SkShader::kRepeat_TileMode,
60 SkShader::kRepeat_TileMode, &s));
bsalomon@google.com1a38d552012-03-15 14:40:46 +000061 paint.setAntiAlias(false);
reed93a12152015-03-16 10:08:34 -070062 paint.setFilterQuality(kLow_SkFilterQuality);
bsalomon@google.com1a38d552012-03-15 14:40:46 +000063 rect.setLTRB(pt.fX - small, pt.fY - small,
64 pt.fX + small, pt.fY + small);
65 canvas->drawRect(rect, paint);
bsalomon@google.com1a38d552012-03-15 14:40:46 +000066}