// 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"

#include <array>

REG_FIDDLE(subset_example, 512, 512, false, 3) {
void draw(SkCanvas* canvas) {
    canvas->drawColor(SK_ColorWHITE);
    const int N = 8;
    std::array<int, N * N> shuffle;
    for (int i = 0; i < (N * N); ++i) {
        shuffle[i] = i;
    }
    srand(0);
    for (int i = 0; i < (N * N); ++i) {
        std::swap(shuffle[i], shuffle[rand() % (N * N - i) + i]);
    }
    int w = (source.width() - 1) / N + 1;
    int h = (source.height() - 1) / N + 1;
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            int x = shuffle[(N * i) + j] % N;
            int y = shuffle[(N * i) + j] / N;
            SkBitmap subset;
            source.extractSubset(&subset, SkIRect::MakeXYWH(w * x, h * y, w, h));
            canvas->drawImage(subset.asImage(), w * i, h * j);
        }
    }
}
}  // END FIDDLE
