// 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(draw_pixel_array_nocopy, 256, 256, false, 5) {
constexpr int kWidth = 4;
constexpr int kHeight = 4;
static const uint32_t kPixels[kHeight * kWidth] = {
        0xFF000000, 0xFF005500, 0xFF00AA00, 0xFF00FF00,
        0xFF000055, 0xFF005555, 0xFF00AA55, 0xFF00FF55,
        0xFF0000AA, 0xFF0055AA, 0xFF00AAAA, 0xFF00FFAA,
        0xFF0000FF, 0xFF0055FF, 0xFF00AAFF, 0xFF00FFFF,
};

void draw(SkCanvas* canvas) {
    SkPixmap pixmap(SkImageInfo::Make(kWidth, kHeight, kN32_SkColorType, kPremul_SkAlphaType),
                    kPixels, sizeof(uint32_t) * kWidth);
    sk_sp<SkImage> img = SkImages::RasterFromPixmap(pixmap, nullptr, nullptr);

    canvas->scale(16, 16);
    canvas->drawImage(img, 6, 6);
}
}  // END FIDDLE
