| // Copyright 2020 Google LLC. | |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | |
| #include "tools/fiddle/examples.h" | |
| REG_FIDDLE(example3ps, 320, 256, false, 0) { | |
| static SkMatrix setpsmatrix(float sx, float kx, float ky, float sy, float tx, float ty, int h) { | |
| SkMatrix m; | |
| m.setAll(sx, -kx, -tx * sx - (ty - h) * kx, -ky, sy, (ty - h) * sy + tx * ky, 0, 0, 1); | |
| return m; | |
| } | |
| void draw(SkCanvas* canvas) { | |
| canvas->save(); | |
| canvas->scale(15, -15); | |
| canvas->translate(0, -28); | |
| SkPath path = SkPathBuilder() | |
| .moveTo(2, 2) | |
| .lineTo(3, 3) | |
| .lineTo(3, 4) | |
| .lineTo(2, 4) | |
| .lineTo(1, 5) | |
| .close() | |
| .detach(); | |
| SkPaint p; | |
| p.setAntiAlias(true); | |
| p.setStrokeWidth(0.1f); | |
| canvas->save(); | |
| canvas->translate(0, 18); | |
| p.setColor(SK_ColorGRAY); | |
| canvas->drawPath(path, p); | |
| canvas->restore(); | |
| p.setStyle(SkPaint::kStroke_Style); | |
| canvas->save(); | |
| canvas->translate(8, 19); | |
| canvas->rotate(90); | |
| p.setColor(SK_ColorRED); | |
| canvas->drawPath(path, p); | |
| canvas->restore(); | |
| canvas->save(); | |
| canvas->translate(5, 23); | |
| canvas->rotate(-90); | |
| p.setColor(SK_ColorBLUE); | |
| canvas->drawPath(path, p); | |
| canvas->restore(); | |
| canvas->save(); | |
| canvas->translate(14, 18); | |
| canvas->scale(-1, 1); | |
| p.setColor(0xFF007F00); | |
| canvas->drawPath(path, p); | |
| canvas->restore(); | |
| canvas->restore(); | |
| canvas->scale(15, 15); | |
| canvas->translate(0, 24); | |
| SkMatrix m; | |
| unsigned char d[] = {0x00, 0x00, 0x00, 0x00, 0xff, 0xff}; | |
| sk_sp<SkData> data = SkData::MakeWithoutCopy((unsigned char*)d, sizeof(d)); | |
| SkImageInfo info = | |
| SkImageInfo::Make(3, 2, SkColorType::kGray_8_SkColorType, kOpaque_SkAlphaType); | |
| sk_sp<SkImage> image = SkImages::RasterFromData(info, data, 3); | |
| canvas->save(); | |
| m = setpsmatrix(1, 0, 0, 1, -1, -24, 2); | |
| // m.setAll(1, 0, -1, 0, 1, -24, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| canvas->save(); | |
| m = setpsmatrix(0, 1, 1, 0, -24, -5, 2); | |
| // m.setAll(0, -1, 5, -1, 0, -22, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| canvas->save(); | |
| m = setpsmatrix(0, 1, -1, 0, 27, -8, 2); | |
| // m.setAll(0, -1, 8, 1, 0, -25, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| canvas->save(); | |
| m = setpsmatrix(0, -1, -1, 0, -24, 13, 2); | |
| // m.setAll(0, 1, 9, -1, 0, -22, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| canvas->save(); | |
| m = setpsmatrix(-1, 0, 0, -1, 17, 26, 2); | |
| // m.setAll(-1, 0, 15, 0, -1, -22, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| canvas->save(); | |
| m = setpsmatrix(-1, 0, 0, 1, 21, -24, 2); | |
| // m.setAll(-1, 0, 19, 0, 1, -24, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawImage(image, 0, 0); | |
| canvas->restore(); | |
| } | |
| } // END FIDDLE |