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

#include <array>

REG_FIDDLE(Bitmap_bytesPerPixel, 256, 256, true, 0) {
void draw(SkCanvas* canvas) {
    static constexpr auto colors = std::to_array<const char*>({
            "Unknown",
            "Alpha_8",
            "RGB_565",
            "ARGB_4444",
            "RGBA_8888",
            "RGB_888x",
            "BGRA_8888",
            "RGBA_1010102",
            "BGRA_1010102",
            "RGB_101010x",
            "BGR_101010x",
            "BGR_101010x_XR",
            "BGRA_10101010_XR",
            "RGBA_10x6",
            "Gray_8",
            "RGBA_F16Norm",
            "RGBA_F16",
    });
    SkImageInfo info = SkImageInfo::MakeA8(1, 1);
    SkBitmap bitmap;
    for (SkColorType colorType : {
    kUnknown_SkColorType, kAlpha_8_SkColorType, kRGB_565_SkColorType,
    kARGB_4444_SkColorType, kRGBA_8888_SkColorType, kRGB_888x_SkColorType,
    kBGRA_8888_SkColorType, kRGBA_1010102_SkColorType, kRGB_101010x_SkColorType,
    kGray_8_SkColorType, kRGBA_F16_SkColorType
                                 } ) {
        bitmap.setInfo(info.makeColorType(colorType));
        SkDebugf("color: k" "%s" "_SkColorType" "%*s" "bytesPerPixel: %d\n",
                colors[colorType], (int)(13 - strlen(colors[colorType])), " ",
                bitmap.bytesPerPixel());
    }
}
}  // END FIDDLE
