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