11a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com/* 21a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com * Copyright 2012 Google Inc. 31a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com * 41a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com * Use of this source code is governed by a BSD-style license that can be 51a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com * found in the LICENSE file. 61a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com */ 72880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 81a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com#include "gm.h" 91a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 101a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com#include "SkColorPriv.h" 112880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "SkPath.h" 121a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com#include "SkShader.h" 131a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 142880df2609eba09b555ca37be04b6ad89290c765Tom HudsonDEF_SIMPLE_GM_BG(bigmatrix, canvas, 50, 50, 152880df2609eba09b555ca37be04b6ad89290c765Tom Hudson sk_tool_utils::color_to_565(0xFF66AA99)) { 161a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkMatrix m; 171a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.reset(); 181a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.setRotate(33 * SK_Scalar1); 191a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.postScale(3000 * SK_Scalar1, 3000 * SK_Scalar1); 201a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.postTranslate(6000 * SK_Scalar1, -5000 * SK_Scalar1); 211a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com canvas->concat(m); 221a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 231a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkPaint paint; 241a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com paint.setColor(SK_ColorRED); 251a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com paint.setAntiAlias(true); 261a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 2757b1935dbc6f8b8857d430fdf244dbe2c2e1ae5breed@google.com bool success = m.invert(&m); 281313086ef4d901176e569d1f4b6362250ac02cd7caryclark@google.com SkASSERT(success); 290e51577a14f903ffeafa117a75954baeb173ffb9humper@google.com (void) success; // silence compiler :( 301a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 311a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkPath path; 321a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 331a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkPoint pt = {10 * SK_Scalar1, 10 * SK_Scalar1}; 341a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkScalar small = 1 / (500 * SK_Scalar1); 351a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 361a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.mapPoints(&pt, 1); 371a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com path.addCircle(pt.fX, pt.fY, small); 381a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com canvas->drawPath(path, paint); 391a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 401a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pt.set(30 * SK_Scalar1, 10 * SK_Scalar1); 411a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.mapPoints(&pt, 1); 421a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkRect rect = {pt.fX - small, pt.fY - small, 431a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pt.fX + small, pt.fY + small}; 441a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com canvas->drawRect(rect, paint); 451a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com 461a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkBitmap bmp; 47eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com bmp.allocN32Pixels(2, 2); 481a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com uint32_t* pixels = reinterpret_cast<uint32_t*>(bmp.getPixels()); 491a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pixels[0] = SkPackARGB32(0xFF, 0xFF, 0x00, 0x00); 501a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pixels[1] = SkPackARGB32(0xFF, 0x00, 0xFF, 0x00); 511a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pixels[2] = SkPackARGB32(0x80, 0x00, 0x00, 0x00); 521a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pixels[3] = SkPackARGB32(0xFF, 0x00, 0x00, 0xFF); 531a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pt.set(30 * SK_Scalar1, 30 * SK_Scalar1); 541a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com m.mapPoints(&pt, 1); 551a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com SkMatrix s; 561a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com s.reset(); 571a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com s.setScale(SK_Scalar1 / 1000, SK_Scalar1 / 1000); 589c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org SkShader* shader = SkShader::CreateBitmapShader( 599c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org bmp, 609c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org SkShader::kRepeat_TileMode, 619c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org SkShader::kRepeat_TileMode, 629c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org &s); 631a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com paint.setShader(shader)->unref(); 641a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com paint.setAntiAlias(false); 6593a1215fe0ab007ce941c721f1fd3e9dcb5d4754reed paint.setFilterQuality(kLow_SkFilterQuality); 661a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com rect.setLTRB(pt.fX - small, pt.fY - small, 671a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com pt.fX + small, pt.fY + small); 681a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com canvas->drawRect(rect, paint); 691a38d5508f7a0e2c186d3aa8ea807045a46b663dbsalomon@google.com} 70