// Copyright 2019 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(Matrix_MakeRectToRect, 256, 256, true, 0) {
void draw(SkCanvas* canvas) {
    const SkRect srcs[] = { {0, 0, 0, 0}, {1, 2, 3, 4} };
    const SkRect dsts[] = { {0, 0, 0, 0}, {5, 6, 8, 9} };
    for (auto src : srcs) {
        for (auto dst : dsts) {
             if (auto matrix = SkMatrix::Rect2Rect(src, dst)) {
                SkDebugf("src: %g, %g, %g, %g  dst: %g, %g, %g, %g\n",
                         src.fLeft, src.fTop, src.fRight, src.fBottom,
                         dst.fLeft, dst.fTop, dst.fRight, dst.fBottom);
                matrix->dump();
            } else {
                SkDebugf("can't map with src: %g %g %g %g\n",
                         src.fLeft, src.fTop, src.fRight, src.fBottom);
            }
        }
    }
}
}  // END FIDDLE
