1// Copyright 2020 Google LLC. 2// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3#include "tools/fiddle/examples.h" 4REG_FIDDLE(example3ps, 320, 256, false, 0) { 5static SkMatrix setpsmatrix(float sx, float kx, float ky, float sy, float tx, float ty, int h) { 6 SkMatrix m; 7 8 m.setAll(sx, -kx, -tx * sx - (ty - h) * kx, -ky, sy, (ty - h) * sy + tx * ky, 0, 0, 1); 9 return m; 10} 11 12void draw(SkCanvas* canvas) { 13 canvas->save(); 14 canvas->scale(15, -15); 15 canvas->translate(0, -28); 16 SkPath path; 17 path.moveTo(2, 2); 18 path.lineTo(3, 3); 19 path.lineTo(3, 4); 20 path.lineTo(2, 4); 21 path.lineTo(1, 5); 22 path.close(); 23 SkPaint p; 24 p.setAntiAlias(true); 25 p.setStrokeWidth(0.1f); 26 27 canvas->save(); 28 canvas->translate(0, 18); 29 p.setColor(SK_ColorGRAY); 30 canvas->drawPath(path, p); 31 canvas->restore(); 32 33 p.setStyle(SkPaint::kStroke_Style); 34 canvas->save(); 35 canvas->translate(8, 19); 36 canvas->rotate(90); 37 p.setColor(SK_ColorRED); 38 canvas->drawPath(path, p); 39 canvas->restore(); 40 41 canvas->save(); 42 canvas->translate(5, 23); 43 canvas->rotate(-90); 44 p.setColor(SK_ColorBLUE); 45 canvas->drawPath(path, p); 46 canvas->restore(); 47 48 canvas->save(); 49 canvas->translate(14, 18); 50 canvas->scale(-1, 1); 51 p.setColor(0xFF007F00); 52 canvas->drawPath(path, p); 53 canvas->restore(); 54 canvas->restore(); 55 56 canvas->scale(15, 15); 57 canvas->translate(0, 24); 58 59 SkMatrix m; 60 unsigned char d[] = {0x00, 0x00, 0x00, 0x00, 0xff, 0xff}; 61 sk_sp<SkData> data = SkData::MakeWithoutCopy((unsigned char*)d, sizeof(d)); 62 SkImageInfo info = 63 SkImageInfo::Make(3, 2, SkColorType::kGray_8_SkColorType, kOpaque_SkAlphaType); 64 sk_sp<SkImage> image = SkImage::MakeRasterData(info, data, 3); 65 66 canvas->save(); 67 m = setpsmatrix(1, 0, 0, 1, -1, -24, 2); 68 // m.setAll(1, 0, -1, 0, 1, -24, 0, 0, 1); 69 canvas->concat(m); 70 canvas->drawImage(image, 0, 0); 71 canvas->restore(); 72 73 canvas->save(); 74 m = setpsmatrix(0, 1, 1, 0, -24, -5, 2); 75 // m.setAll(0, -1, 5, -1, 0, -22, 0, 0, 1); 76 canvas->concat(m); 77 canvas->drawImage(image, 0, 0); 78 canvas->restore(); 79 80 canvas->save(); 81 m = setpsmatrix(0, 1, -1, 0, 27, -8, 2); 82 // m.setAll(0, -1, 8, 1, 0, -25, 0, 0, 1); 83 canvas->concat(m); 84 canvas->drawImage(image, 0, 0); 85 canvas->restore(); 86 87 canvas->save(); 88 m = setpsmatrix(0, -1, -1, 0, -24, 13, 2); 89 // m.setAll(0, 1, 9, -1, 0, -22, 0, 0, 1); 90 canvas->concat(m); 91 canvas->drawImage(image, 0, 0); 92 canvas->restore(); 93 94 canvas->save(); 95 m = setpsmatrix(-1, 0, 0, -1, 17, 26, 2); 96 // m.setAll(-1, 0, 15, 0, -1, -22, 0, 0, 1); 97 canvas->concat(m); 98 canvas->drawImage(image, 0, 0); 99 canvas->restore(); 100 101 canvas->save(); 102 m = setpsmatrix(-1, 0, 0, 1, 21, -24, 2); 103 // m.setAll(-1, 0, 19, 0, 1, -24, 0, 0, 1); 104 canvas->concat(m); 105 canvas->drawImage(image, 0, 0); 106 canvas->restore(); 107} 108} // END FIDDLE 109