186 {
188
190
193
196
197 rowMatrices[3].
setSkew(.5f, .25f);
199
208 static const char* matrixNames[] = { "Identity", "T+S", "Rotate", "Skew", "Perspective" };
209 static_assert(std::size(matrixNames) == std::size(rowMatrices), "Count mismatch");
210
211
217 }
220
221
222 for (size_t i = 0; i < std::size(rowMatrices); ++i) {
226
228 for (
size_t j = 0; j < std::size(
kTileSets); ++j) {
231
232 canvas->
concat(rowMatrices[i]);
234
236
238 }
239
241
243 }
244 }
#define SkAssertResult(cond)
void translate(SkScalar dx, SkScalar dy)
void concat(const SkMatrix &matrix)
SkMatrix & postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
SkMatrix & setTranslate(SkScalar dx, SkScalar dy)
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
SkMatrix & preTranslate(SkScalar dx, SkScalar dy)
SkMatrix & setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)
static void draw_text(SkCanvas *canvas, sk_sp< SkTextBlob > blob, const SkPaint &paint, const SkPaint &blurPaint, const SkPaint &clearPaint)
static constexpr SkScalar kTileHeight
static constexpr SkScalar kTileWidth
static constexpr int kRowCount
static constexpr int kColCount
static void draw_tile_boundaries(SkCanvas *canvas, const SkMatrix &local)
static const char * kTileSetNames[]
static TileRenderer kTileSets[]
void toQuad(SkPoint quad[4]) const
static constexpr SkRect MakeWH(float w, float h)